步骤描述

提前准备好切换方案;以及其他相关人员的配合

 

切换至容灾数据库:

(1)停止前端业务,确认目标端数据已经追平

(2)数据校验,确认数据一致

(3)停止生产库OGG进程(停止后可以直接删除)

(4)停止容灾库OGG进程(停止后可以直接删除)

(5)重置容灾库的sequence值(如果不做序列复制,则一定需要;如果序列复制,检查一下,确认容灾上值大于等于源库)

(6)容灾库配置OGG捕获进程和传输进程;源端配置OGG投递进程

(7)Enable容灾库之前被disable的触发器和约束

(8)Disable生产库的触发器和约束

(9)确认容灾库的附加日志是否已经加上

(10)确认容灾库的附加日志是否已经加上

(11)启动新的复制链路进程

 

 

回切步骤:

(1)停止前端业务,确认端数据已经追平

(2)数据校验,确认数据一致

(3)停止容灾库上OGG进程(停止后可以直接删除)

(4)停止生产库OGG进程(停止后可以直接删除)

(5)重置生产库的sequence值

(6)生产库配置OGG捕获进程和传输进程;容灾库配置OGG投递进程

(7)Disable容灾上的触发器和约束

(8)enable源端的触发器和约束

(9)启动新的OGG复制链路进程

 

几个注意点

(1)如果不删除原来的进程,需要先begin now,然后再启动

(2) 数据校验的方法和运行时间

(3)之前需要明确哪些trigger和约束被disable;还是用延迟参数吧!

(4)序列的重置,主要是回切阶段,使生产端的序列值大于等于容灾端,以免发生序列值重用的问题

 

 

序列重置的思路

思路:查询出当前源端和目标端的序列的last_number的差值->设置要调整的一侧的序列的

increment为该差值->要调整一侧的序列做一次nextval即可

n 建议:修改目标端的序列的为nocache,这样可以取得准确的last number

select 'alter sequence '||t1.sequence_owner||'."'||t1.sequence_name||'" increment by

'||to_char(s1.last_number-t1.last_number)||';' from ogg.dr_seq_target t1, ogg.dr_seq_source s1

where t1.sequence_owner=s1.sequence_owner and t1.sequence_name=s1.sequence_name

and s1.last_number>t1.last_number;

select 'select '||sequence_owner||'."'||sequence_name||'".nextval from dual;' from dr.dr_seq_t1;