从11g起,主库和逻辑备库之间切换不再需要关闭任何数据库实例。
1.检查主数据库是否处于考虑切换状态
SQL> select switchover_status from v$database;
结果为to standby,表明主库已近处在考虑切换状态。
2.在当前主库执行,通知主库数据库角色可能发生变化
SQL> alter database prepare to switchover to logical standby;
3.在备库执行,通知备库角色可能发生变化
SQL> alter database prepare to switchover to primary;
这里备库会创建新的数据字典,并发送到主库
4.再次查看主库、备库的状态
SQL> select switchover_status from v$database;
5.如果想取消切换,可以使用cancel取消2,3的准备阶段的工作
#先在主库取消
SQL> alter database prepare to switchover cancel;
#再在备库取消
SQL> alter database prepare to switchover cancel;
6.正式切换
#在主库执行
SQL> alter database commit to switchover to logical standby;
#在备库执行
SQL> alter database commit to switchover to primary;
7.在新的逻辑备库启动sql apply
SQL> alter database start logical standby apply immediate;
原逻辑备库中创建的对象,在新的逻辑备库上再次实例化之前,他们的redo信息在新的备库会被跳过。