ORA-16000是物理备库正常只读状态提示,非故障;需确认MRP进程处于APPLYING_LOG状态、主库启用FORCE LOGGING和ARCHIVELOG,并使用OPEN READ ONLY WITH APPLY启动ADG。

备库只读但停用Redo Apply的典型场景
直接以 READ ONLY 模式打开物理备库,同时不启动 Redo Apply 进程(即不执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE),就是你想要的“只读不应用”状态。这种状态适合临时性、离线型报表(比如月结),因为数据会停留在某个固定 SCN,不会随主库变化而更新——但代价是:它不再是实时副本,也不再参与 Data Guard 的容灾链路。
如何安全进入只读不应用状态
关键在于顺序和验证,否则容易卡在 MOUNT 或报错 ORA-16136: Managed Standby Recovery not active。
- 确认当前备库处于
MOUNT状态(不是OPEN,也不是READ ONLY WITH APPLY) - 停止任何正在运行的 MRP 进程:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; - 用
ALTER DATABASE OPEN READ ONLY;打开——此时数据库可查,但 Redo Apply 已断开 - 验证状态:
SELECT OPEN_MODE, DATABASE_ROLE, RECOVERY_STATUS FROM V$DATABASE;应返回READ ONLY+PHYSICAL STANDBY+DISABLED
为什么不能跳过 MOUNT 阶段直接 OPEN?
物理备库没有控制文件或数据文件头校验通过前,Oracle 不允许跳过 MOUNT 直接 OPEN。常见错误 ORA-01157: cannot identify/lock data file 多因备库未正确识别主库传来的归档日志路径,或 DB_FILE_NAME_CONVERT 配置缺失导致控制文件中记录的路径与实际不符。
- 检查
SHOW PARAMETER DB_FILE_NAME_CONVERT;是否匹配主备目录结构 - 确认所有数据文件状态为
ONLINE:SELECT NAME, STATUS FROM V$DATAFILE; - 若存在
RECOVER状态文件,需先执行RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;并输入CANCEL
月结报表结束后如何恢复同步
回到只读不应用状态后,必须手动重连 Redo Apply,否则备库永远滞后。这不是自动过程,漏掉这步等于让容灾失效。
- 先关闭只读库:
SHUTDOWN IMMEDIATE; - 重启到
MOUNT:STARTUP MOUNT; - 重新启用实时应用:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; - 验证是否真正追上:
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG WHERE FIRST_TIME > SYSDATE-1/24 ORDER BY SEQUENCE# DESC;最新归档应显示YES
注意:如果主库在你停应用期间产生了大量归档,备库重启应用后可能需要较长时间追赶——这个窗口期无法做故障切换。











