
步骤 1.检查主数据库上远程归档目标的状态
- SELECT DESTINATION, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID=2;
-
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;
- ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
-
SQL>ALTER SYSTEM SWITCH LOGFILE;
- SQL>ALTER SYSTEM SWITCH LOGFILE;
- SELECT DESTINATION, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID=2;
步骤 5. 使用以下命令检查备用日志是否收到了重做日志:
- SELECT THREAD#,MAX(SEQUENCE#) FROM V$ARCHIVED_LOG GROUP BY THREAD#;
-
ALTER SYSTEM SWITCH LOGFILE;
- ALTER SYSTEM SWITCH LOGFILE;
检查 SEQUENCE# 是否改变
- SELECT THREAD#,MAX(SEQUENCE#) FROM V$ARCHIVED_LOG GROUP BY THREAD#;
步骤 6.检查主数据库上 log_archive_max_processes 的值
-
SHOW PARAMETER LOG_ARCHIVE_MAX_PROCESSES
-
-
将 log_archive_max_processes 的值增加到 10(从 10.2 开始,您可以将值增加到 30)
-
强烈建议增加此值以避免出现 GAP 时出现任何问题
-
- ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
(这步就有点狠了)
- ps -ef|grep -i arc| grep $ORACLE_SID
-
kill -9 ...
1. 杀死 arc 进程不会损害主数据库,因为当你杀死它们时,新的 arc 进程会立即产生。
2. 重新启动主数据库会产生新的 ARC 进程,所以如果您不习惯手动终止进程,那么请重新启动主数据库以产生新的 ARC 进程。
3. 从 11.2 开始,杀死任何空闲/挂起超过 5 分钟(300 秒)的 DG 进程。
参考:
如何解决远程归档中的错误(文档 ID 799353.1)
日志不会传送到物理备用数据库 (Doc ID 1130523.1)
上述是对老环境的处理办法,对于新环境,还得从头检查

有时初始化参数也非常重要,比如log_archive_config被置为空,dg怎么都不会同步的。