归档不同步,给它几斧子

4100阅读 0评论2021-07-14 brjl
分类:Oracle

有时看到dg不同步,让人捉急,来来来,看看oracle的手段

步骤 1.检查主数据库上远程归档目标的状态
  1. SELECT DESTINATION, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID=2;
步骤 2.启停远程存档目标:
  1. ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;
  2. ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
步骤 3.在主数据库上执行 2 次日志切换:
  1. SQL>ALTER SYSTEM SWITCH LOGFILE;
  2. SQL>ALTER SYSTEM SWITCH LOGFILE;
步骤 4.再次检查远程存档目的地的状态
  1. SELECT DESTINATION, STATUS, ERROR FROM V$ARCHIVE_DEST WHERE DEST_ID=2;
如果远程存档中没有错误,则远程存档目的地的状态将为“valid”

步骤 5. 使用以下命令检查备用日志是否收到了重做日志:
  1. SELECT THREAD#,MAX(SEQUENCE#) FROM V$ARCHIVED_LOG GROUP BY THREAD#;
在主数据库上执行 2 次日志切换
  1. ALTER SYSTEM SWITCH LOGFILE;
  2. ALTER SYSTEM SWITCH LOGFILE;
(为什么是2次?可能是为了判断是手工触发的sequence#增加,而不是碰巧自动触发,所以3次也行,5次更明显)
检查 SEQUENCE# 是否改变

  1. SELECT THREAD#,MAX(SEQUENCE#) FROM V$ARCHIVED_LOG GROUP BY THREAD#;
如果 sequence# 增加,远程归档工作正常。

步骤 6.检查主数据库上 log_archive_max_processes 的值

  1. SHOW PARAMETER LOG_ARCHIVE_MAX_PROCESSES

  2. 将 log_archive_max_processes 的值增加到 10(从 10.2 开始,您可以将值增加到 30)
  3. 强烈建议增加此值以避免出现 GAP 时出现任何问题

  4. ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
步骤 7.为主数据库生成新的 ARC 进程
(这步就有点狠了)

  1. ps -ef|grep -i arc| grep $ORACLE_SID
  2. kill -9 ...
注意:
1. 杀死 arc 进程不会损害主数据库,因为当你杀死它们时,新的 arc 进程会立即产生。
2. 重新启动主数据库会产生新的 ARC 进程,所以如果您不习惯手动终止进程,那么请重新启动主数据库以产生新的 ARC 进程。
3. 从 11.2 开始,杀死任何空闲/挂起超过 5 分钟(300 秒)的 DG 进程。


参考:
如何解决远程归档中的错误(文档 ID 799353.1)
日志不会传送到物理备用数据库 (Doc ID 1130523.1)
上一篇:计算DG 所需带宽
下一篇:$'\r':未找到命令