Oracle 11g物理备库延迟同步需在备库显式启用,核心命令是ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DELAY n DISCONNECT;主库LOG_ARCHIVE_DEST_n的DELAY参数仅在备库未启实时应用时生效,否则被忽略。
oracle
11g 物理备库的延迟同步不是“开了就自动生效”的功能,它必须在日志应用阶段显式启用,且主库的
中配置的
参数仅在特定条件下起作用——比如备库未开启实时应用(
)时才被读取;一旦启用了实时应用,该参数会被忽略。
ALTER DATABASE RECOVER 命令里的 delay 参数必须显式指定
延迟同步的核心控制点在备库的恢复命令中,而不是主库归档路径里写个
就完事。很多 DBA 在主库改了
后发现延迟没生效,就是因为备库仍在用
模式实时拉日志。
—— 这才是让备库真正延迟 60 分钟应用日志的命令
如果之前已启动过实时恢复,需先执行
再重发带
的命令
单位是分钟,不能写成秒或小时;值为 0 或省略即表示无延迟
该命令只影响当前会话启动的 MRP 进程,重启数据库后需重新执行(除非封装进启动脚本)
LOG_ARCHIVE_DEST_n 的 DELAY=xx 是静态配置,但有前提条件
主库上通过
设置的延迟,本质是向备库“建议”一个延迟值,但它只在以下场景生效:
备库处于 MOUNT 状态、未启动日志应用(即没运行 MRP)时,首次执行
且未显式指定
,系统会自动读取该值
若备库已开启
,则此参数完全被跳过,alert 日志里会出现类似
的提示
必须跟在
或
后面,且不能与
同时出现(物理 DG 不支持同步+延迟)
延迟同步下如何验证和切换回实时应用
延迟生效后,不能只看
和
是否一致,要确认实际延迟量是否符合预期。
oracle知识库
oracle知识库下载
下载
查当前延迟状态:
(注意:该视图显示的是配置值,不是实时差值)
更可靠的方式是比对主库
和备库
中相同
的
状态及时间戳
要取消延迟、切回实时应用,执行:
(不是
,语法错误)
如果执行后仍不生效,检查是否遗漏了
步骤,或备库是否卡在某个中断日志上(如
文件类型不匹配)
真正容易被忽略的是:延迟同步无法防御跨库误操作(比如通过 DBLINK 从主库误删备库数据),也不能替代备份。它只对本地 SQL 误执行、误 truncate 表这类场景有效,且前提是延迟窗口内能及时发现并干预——所以延迟时间不能设太长,否则丢失的数据量不可控;也不能设太短,否则起不到拦截作用。生产环境常见折中值是 30~120 分钟,具体得结合业务变更频率和运维响应能力来定。
log_archive_dest_ndelayusing current logfileDELAY=60LOG_ARCHIVE_DEST_2USING CURRENT LOGFILEALTER DATABASE RECOVER MANAGED STANDBY DATABASE DELAY 60 DISCONNECT FROM SESSION;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;DELAYDELAYALTER SYSTEM SET LOG_ARCHIVE_DEST_2='... DELAY=120 ...'RECOVER MANAGED STANDBY DATABASEDELAYUSING CURRENT LOGFILEDELAY attribute ignored because real-time apply is enabledDELAYSERVICE=xxxLOCATION=xxxSYNCARCHIVED_THREAD#APPLIED_THREAD#SELECT DELAY_MINS, APPLY_DELAY FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;SELECT FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY FIRST_TIME DESC FETCH FIRST 3 ROWS ONLY;V$ARCHIVED_LOGSEQUENCE#APPLIEDALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;NODELAY=0CANCELORA-00317