步骤描述
提前准备好切换方案;以及其他相关人员的配合
切换至容灾数据库:
(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;