最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在Oracle 19c中如何快速搭建Active Data Guard物理备库?
时间:2026-07-16 08:12:54 编辑:袖梨 来源:一聚教程网
Oracle 19c搭建ADG备库必须启用FORCE LOGGING和ARCHIVELOG,否则RMAN复制漏块、MRP启动失败、查询报ORA-16000;RMAN DUPLICATE命令须显式指定NOREDO和NOFILENAMECHECK,且主备DB_UNIQUE_NAME与LOG_ARCHIVE_CONFIG必须双向严格一致。
必须开 force logging 和 archivelog,否则 rman 复制会漏块、mrp 启动失败、查询报 ora-16000 —— 这不是可选项,是硬门槛。
主库必须确认 FORCE_LOGGING 和 ARCHIVELOG 已启用
Active Data Guard 依赖重做流完整传输和实时应用。如果主库没开 FORCE LOGGING,像 INSERT /*+ APPEND */ 或 CREATE TABLE AS SELECT 这类直接路径操作产生的变更可能不写 redo,RMAN 复制时就漏数据块,备库启动后报 ORA-01110 或 MRP 应用中断;没开归档则根本无法传输日志。
- 执行
SELECT log_mode, force_logging FROM v$database;,结果必须是ARCHIVELOG和YES - 若
force_logging为NO,需先SHUTDOWN IMMEDIATE→STARTUP MOUNT→ALTER DATABASE FORCE LOGGING;→ALTER DATABASE OPEN; - 若
log_mode为NOARCHIVELOG,同样需在MOUNT状态下执行ALTER DATABASE ARCHIVELOG;,再打开 - 注意:
FORCE LOGGING对高并发小事务有轻微性能影响,但不可跳过
RMAN DUPLICATE FOR STANDBY 必须带 NOREDO 和 NOFILENAMECHECK
用 RMAN DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE 是 19c 最快的物理备库构建方式,但它对参数极其敏感。漏掉 NOREDO 会导致 RMAN 尝试拉取并应用在线日志,而主库正在运行,必然失败;漏掉 NOFILENAMECHECK 则因主备路径相同被拒绝执行。
- 典型命令组合:
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK NOREDO; -
FROM ACTIVE DATABASE表示不依赖备份集,直接从主库实时拷贝,要求主备 TNS 连通、密码文件已复制、DB_UNIQUE_NAME已设不同值 - 备库必须提前建好最小初始化参数文件,至少含
DB_NAME、DB_UNIQUE_NAME、CONTROL_FILES - 主库生成的密码文件不能复用,备库需单独运行
orapwd创建,如:orapwd file=$ORACLE_HOME/dbs/orapworcl_stby password=xxx entries=10
备库必须设 standby_file_management=AUTO
主库新增数据文件(比如 ALTER TABLESPACE users ADD DATAFILE)时,如果备库 standby_file_management 是 MANUAL(Oracle 19c 默认值),新文件不会自动创建,MRP 会挂起并报 ORA-01111 或 ORA-01157 —— 这不是同步延迟,是配置缺失。
- 在备库执行:
ALTER SYSTEM SET standby_file_management=AUTO SCOPE=BOTH; - 该设置影响所有后续文件级变更:临时文件、undo 表空间扩容、甚至 ASM diskgroup 扩容后的文件同步
- 别指望默认值,19c 仍默认
MANUAL,必须显式改
启动 MRP 前必须验证归档传输无 GAP 且参数双向对齐
备库恢复完成后,ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT 启动 MRP,但如果归档没传过去或 LOG_ARCHIVE_CONFIG 配错,MRP 会静默卡住或报 ORA-16047(DGID mismatch)。
- 检查主备
LOG_ARCHIVE_CONFIG是否完全一致(大小写敏感):DG_CONFIG=(orcl_primary,orcl_standby) - 主库
LOG_ARCHIVE_DEST_2指向备库:SERVICE=orcl_standby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_standby - 备库
LOG_ARCHIVE_DEST_2指向主库:SERVICE=orcl_primary ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=orcl_primary - 用
SELECT STATUS, ERROR FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;确认状态为VALID,非ERROR或DEFERRED - 启动 MRP 前,跑
SELECT THREAD#, SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG WHERE NEXT_TIME > SYSDATE - 1/24 ORDER BY 1,2;确认最近归档已接收且未应用缺口
真正容易被忽略的是 DB_UNIQUE_NAME 和 LOG_ARCHIVE_CONFIG 的双向一致性 —— 它们不是单向配置,而是 DG 实例身份识别的“握手协议”,错一个字符,日志就传不过去,而且错误现象常表现为 MRP 不报错但不动,排查起来最耗时间。
相关文章
- 王者荣耀世界零氪玩家如何生存 07-28
- 快手极速版怎么绑定手机号 07-28
- 明日方舟和轻松小熊联动活动内容一览 07-28
- 逆战未来黎明之光 逆战未来黎明之光玩法机制与新手入门指南 07-28
- 植物大战僵尸融合版毁灭土豆地雷介绍 07-28
- 逆战未来飓风之龙 逆战未来飓风之龙武器获取方法详解 07-28