物理Standby的Failover:
====================
注意转换standby 数据库到MAXIMIZE PERFORMANCE模式作Failover操作:
SQL> alter database set standby database to maximize performance;
1.检查归档文件是否连续:
如果standby处于maximum protection 或maximum availability 模式的话,归档日志应该是连续存在的
SQL> select thread#,low_sequence#,high_sequence# from v$archive_gap;
no rows selected
SQL>
sql> alter system flush redo to Target_db_name;
Note:1)11g新加功能,如果不是11g的data gurad 则跳过。
如果返回的有记录,按照列出的记录号复制对应的归档文件到待转换的standby服务器。这一步非常重要,必须确保所有已生成的归档文件均已存在于standby 服务器,不然可能会数据不一致造成转换时报错。
------文件复制之后,通过下列命令将其加入数据字典:
SQL> alter database register physical logfile 'filespec1';
2.在主备库上检查归档文件是否完整(若Primary库仍可查的话):
执行下列语句获取各线程归档文件最大序号。
SQL> select distinct thread#,max(sequence#) over(partition by thread#) as "last" from v$archived_log;
THREAD# LAST
-------------- ------
1 9
SQL>
3.停止Apply Redo,启动Failover:
在执行failover 之前,尽可能将原primary 数据库的可用redo都复制到standby 数据库。
SQL> alter database recover managed standby database cancel ; 停止Redo应用
SQL> alter database recover managed standby database finish [ force | wait | nowait ] ; Start Failover,stop apply Redo
在执行这个命令的时候,如果主库和备库之间的网络中断了。 那么备库的RFS进程就会等待网络的连接,直到TCP超时。FORCE 关键字将会停止当前活动的RFS 进程,以便立刻执行failover。
4.切换物理Standby角色为Primary库,并重新启动新Primary库:
SQL> alter database commit to switchover to primary;
SQL> alter database open; ------如果处于read only状态,则需shutdown immediate后启动。
SQL>
Note:当我们正常切换的时候,如果提示我们需要介质恢复的时候执行
恢复备库:recover standby database until cancel;
Note:手工输入online redo尝试
激活备库:alter database activate standby database;
重启数据库
shutdown immediate;
startup
角色转换工作完成。剩下的是补救措施(针对原primary 数据库),由于此时primary 数据库已经不再是data guard 配置的一部分,我们需要做的就是尝试看看能否恢复原primary 数据库,将其改造为新的standby服务器。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31387888/viewspace-2129080/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31387888/viewspace-2129080/