最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Oracle 11g Data Guard如何配置物理备库
时间:2026-08-18 20:59:49 编辑:袖梨 来源:一聚教程网
Oracle 19c搭建ADG物理备库必须满足三大硬前提:主库启用ARCHIVELOG和FORCE LOGGING、确认Data Guard组件已授权;RMAN DUPLICATE需指定NOREDO和NOFILENAMECHECK;备库须设standby_file_management=AUTO并配置正确STANDBY LOGFILE及双向TNS连通。
物理备库配置不是“一键完成”的流程,而是多个环节环环相扣。主库没开归档、没启强制日志、没配好 standby redo log,备库哪怕建得再快,也必然卡在 MRP0 进程起不来或 ARCH 报错上。
主库必须满足的三个硬性前提
缺一不可,否则后续所有操作都白搭:
-
archive log list输出必须含Database log mode: Archive Mode—— 非归档模式下 DG 无法传输和应用日志 -
alter database force logging;必须执行成功,且select force_logging from v$database;返回YES—— 否则 nologging 操作会导致主备块不一致 -
select * from v$option where parameter = 'Oracle Data Guard';必须返回TRUE—— 确认企业版已启用 DG 组件(标准版不支持)
standby redo log 的数量和大小怎么定
这是最容易被抄错参数的地方。不是随便建几组就行,它直接影响 MRP 进程能否持续应用日志:
- 组数公式:
(online redo log 组数 + 1) × 线程数;单实例线程数为 1,RAC 通常是 2 - 每组大小必须 ≥ 主库最大
redo log文件大小(查v$log.bytes),否则备库日志切换时会报ORA-00313 - 每组至少含 2 个成员(推荐镜像),路径需提前创建且权限属 oracle 用户,例如:
alter database add standby logfile group 4 ('/u01/oradata/stdby_redo04a.log', '/u01/oradata/stdby_redo04b.log') size 200m;
tnsnames.ora 和 listener.ora 必须双向可连
常见错误是只配了主库能连备库,忘了备库也要能反向连主库 —— 因为 DG Broker 或手动 switchover 时会触发反向连接:
- 主库
tnsnames.ora中必须定义备库服务名(如orcldg),指向备库 IP+端口+service_name - 备库
tnsnames.ora中必须定义主库服务名(如orcl),指向主库 IP+端口+service_name - 两边
listener.ora的SID_LIST_LISTENER都要包含各自实例的SID_NAME和GLOBAL_DBNAME,否则tnsping通但sqlplus连不上
备库启动后 MR0/PR0/MRP0 进程状态怎么看
很多人以为 startup mount 就算好了,其实关键在后台进程是否就位:
- 登录备库后执行
ps -ef | grep ora_.*stdby,应看到MRP0(Managed Recovery Process)—— 它才是真正应用日志的进程 - 若只有
MR0和PR0,说明没启动实时应用:alter database recover managed standby database using current logfile disconnect; - 查应用进度:
select sequence#, applied from v$archived_log order by sequence# desc;,最新一条APPLIED = YES才算同步中;若全是NO,大概率是LOG_ARCHIVE_DEST_2参数里DB_UNIQUE_NAME写错了或网络不通
最常被忽略的是密码文件一致性 —— 主库生成的 orapw$ORACLE_SID 必须完整拷贝到备库同路径,且备库 REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;否则 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 会直接报 ORA-16191。