DB_ID一致不是同步失败原因,真正导致不同步的是DB_UNIQUE_NAME冲突、归档缺口、UNNAMED文件或密码文件不一致——需交叉验证v$archive_gap、v$managed_standby、v$datafile及密码文件状态。
DB_ID 一致本身不是同步失败的原因——Oracle Data Guard 不校验主备库的 DB_ID,它只依赖 DB_UNIQUE_NAME、网络连通性、归档日志传输与应用状态。真正导致“看着配置都对,就是不同步”的,往往是下面这几个被忽略的硬性条件。
DB_UNIQUE_NAME 相同会直接阻断 MRP 启动
oracle 11g 要求同一 dg 配置中主库和备库的 db_unique_name 必须不同。如果相同:
- MRP 进程可能启动后立即静默退出,
ps aux | grep mrp看似有进程,但v$managed_standby中status是NOT ACTIVE或根本查不到MRP0 -
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE表面成功,实际没生效 - 主库
log_archive_config中的DG_CONFIG列表若包含重复名,ARC 进程会拒绝归档传输(尤其在 LGWR ASYNC 模式下)
验证方式:SELECT DB_UNIQUE_NAME FROM V$DATABASE; 主备必须不同。改法:ALTER SYSTEM SET DB_UNIQUE_NAME='new_name' SCOPE=SPFILE;,重启生效。
v$archive_gap 返回非空说明归档传输已中断
这不是“慢”,是“断”。一旦 v$archive_gap 有记录,说明主库某段归档压根没到备库:
- 常见原因:主库
LOG_ARCHIVE_DEST_2的VALID_FOR值写错(比如写成(ONLINE_LOGFILES, PRIMARY_ROLE)却没配SYNC),或log_archive_dest_state_2被设为DEFER - 网络层问题:防火墙拦截了主库到备库的 LGWR 连接端口(默认 1521,但 DG 实际用的是后台专用连接,需确认监听是否允许
DEDICATED连接) - 备库 RFS 进程未运行:
SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY WHERE PROCESS = 'RFS';若无返回或STATUS是INACTIVE,说明归档根本没接收进来
注意:v$archive_gap 查出的 low_sequence# 和 high_sequence# 是主库缺失段,不是备库缺失段——得去主库目录下确认这些文件是否存在,再决定是重传还是增量恢复。
ORA-01111 / ORA-01157 出现时 MRP 会自动挂起
这类错误本质是备库找不到数据文件,最常见于主库新增表空间或数据文件后:
- 备库
STANDBY_FILE_MANAGEMENT设为AUTO,但路径不存在或权限不足 → 自动创建失败 → 生成UNNAMED文件 → MRP 遇到UNNAMED00001就停住 - 主库用了 OMF(
db_create_file_dest),但备库没配同值,或路径不可写 - 手动拷贝归档时修改了文件时间戳或大小,RFS 校验失败后拒收,后续日志无法连续应用
查法:SELECT NAME FROM V$DATAFILE WHERE NAME LIKE '%UNNAMED%';。处理顺序必须是:先 ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;,再重命名/创建对应文件,最后切回 AUTO 并重启 MRP。
密码文件不一致会导致 RFS 进程无法认证
主库 ARCH/LGWR 进程向备库 RFS 发送归档时,用的是 SYS 用户身份,依赖密码文件(orapw$ORACLE_SID)校验。如果:
- 主库改过
SYS密码但没同步新密码文件到备库 - 备库密码文件权限不对(如不是 640)、属主不是
oracle、或文件名与ORACLE_SID不匹配 - 主库用的是 Oracle Wallet 而备库没配,也会出现
ORA-12154或静默连接失败
验证方式:在主库用 sqlplus sys@<code>tns_alias as sysdba 手动连备库,看是否报错;再检查备库 $ORACLE_HOME/dbs/orapw<code>ORACLE_SID 是否存在且时间新于主库修改时间。
DB_ID,而是 DB_UNIQUE_NAME 冲突、归档缺口、UNNAMED 文件、或密码文件这四类低级但致命的问题。它们不会报明显错误,只会让 MRP 假跑、RFS 失联、或日志堆积在主库传不出去——查的时候别只盯 alert.log,要交叉比对 v$archive_gap、v$managed_standby、v$datafile 和密码文件三者状态。


















