这两天生产端的日志产生过多导致灾备端的归档日志目录满的现象, 在清除灾备端的日志后发现 log_archive_dest_2 处于 error 状态, 需要将其 enable. 在实际生产系统中, 通常有这样的场景, 例如在系统维护日, 对主库进行大量的业务更新, 会有大量的 DML 操作; 为了避免主库中的业务更新对备库造成影响, 可以暂停主库对备库的日志传输, 这样的话, 如果主库的更新出现问题, 备库还保留一份完整的数据镜像, 可以执行 failover(失败切换).
1, 在主库上面查看备份的归档路径
- SQL> show parameter log_archive_dest_2
- NAME TYPE VALUE
- log_archive_dest_2 string SERVICE=flame ASYNC VALID_FOR=
- (ONLINE_LOGFILES,PRIMARY_ROLE)
- DB_UNIQUE_NAME=flame
- SQL> show parameter log_archive_dest_state_2
- NAME TYPE VALUE
- log_archive_dest_state_2 string ENABLE
2, 通过设置 defer 参数来暂停主库对备库的日志传输
SQL> alter system set log_archive_dest_state_2 = 'defer';
System altered.
执行归档日志切换
SQL> alter system switch logfile;
System altered.
3, 恢复主库到备份的日志传输, 暂停日志传输后的归档日志会全部传输到备库, 不会导致备库的归档日志 gap
SQL> alter system set log_archive_dest_state_2 = 'enable';
System altered.
来源: http://www.bubuko.com/infodetail-2574080.html