Oracle DG gap 手动同步

来源:互联网 发布:java调用ie内核 编辑:程序博客网 时间:2024/05/18 06:21

oralce 11g 单节点主备同步环境,备库提供read(open状态)。实时同步方式。
主库重启后,没有按照正常顺序启动和关闭备库及日志应用。早上发现后,已经出现很多gap。

1.在备库的日志里去查看,说是等待sequence 3362的日志,其实主库上的最小(最早的)的日志已经到3370了。。也就是主库已经没有3362的日志了。所以要恢复出来。

2.当然可以通过sequence或者scn恢复,这里通过scn恢复。比较稳妥。
先查出备库3362对应的first_change 号:

 select first_change# from v$archived_log where sequence#='3362';  1216228833

3 . rman 基于scn恢复出来
这里有3个地方要恢复和注意的

1.数据文件恢复。
2.也要恢复当时的control 文件。
3.主库的密码文件也要重新传一份到备库。

backup incremental from scn 1216228833 database format '/data/ora11g/archivelog/gap_%U'; backup current controlfile for standby format '/data/ora11g/archivelog/gap.ctl'

4 . 把备份集,控制文件及密码文件传输到备库

scp gap* oracle@dgtest:/data/ora11g/archivelog/scp orapwjktoa oralce@dgtest:/data/ora11g/product/11.2.0.4/db_1/dbs

5 .在备库开始恢复,启动到nomount状态

restore standby controlfile from '/data/ora11g/archivelog/gap.ctl';rman> catalog start with '/data/ora11g/archivelog/';(按说这步控制文件里已经有,但是有时候还是会报错,干脆直接注册进去。)rman> recover database noredo;

6 . 把备库切到open状态,这时候alert.log里面报警:

SRL log 26 needs clearing because log has not been createdSRL log 27 needs clearing because log has not been createdSRL log 28 needs clearing because log has not been createdSRL log 29 needs clearing because log has not been created

原因是刚才的standby redo 没有清空(有几组清几组,网上有的说的删除重建,我这是clear 一样,省点事情。)

alter database clear logfile group 26;

7.之后就正常了,开启同步,在主库切换几次log试试,验证同步。

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
0 0