1.角色切换分为两种:
一种是切换角色,一种是在主库故障的时候,切换至备库,这个时候如果不是在最大保护或者最大可用性的模式下,有可能会导致数据丢失。如果主库开启了闪回,那么主库还是有可能成为新的主库的备库的。
2.切换之前的准备:
1>可以查看是否有gap:
SQL> SELECT STATUS, GAP_STATUS FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID = 2;
2>查看备库上的temp文件是否和主库上的一致
3>查看主库上有关delay的应用是都都已经被关闭
4>RAC环境下需要关闭其他的数据库实例,只保留一个即可
5>在开启了实时日志应用的备库上需要将备库切换至mount状态,这样可以切断所有的session连接,实现最快的角色切换
6>查看切换之前的DG状态,比如需要多久可以实现切换:
SELECT NAME, VALUE, DATUM_TIME FROM V$DATAGUARD_STATS;NAME VALUE DATUM_TIME
------------------------ ---------------- ------------------------
transport lag +00 00:00:00 06/18/2009 12:22:06
apply lag +00 00:00:00 06/18/2009 12:22:06
apply finish time +00 00:00:00.000
estimated startup time 9
这些值的计算都是基于从主库接收到的数据来计算的。
3.切换
1>切换主库至备库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SQL> SHUTDOWN ABORT;(11.2.0.4之后不用再shutdown了)
SQL> STARTUP MOUNT;
2>切换原备库
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;(WITH SESSION SHUTDOWN可以在上一句查询返回TO PRIMARY的时候忽略)
SQL> ALTER DATABASE OPEN;
3>新备库上开启日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
4.主库故障时候的切换
1>将主库切换至mount状态,将所有的未传输的redo刷至备库,并等待其应用
SQL> ALTER SYSTEM FLUSH REDO TO target_db_name(DB_UNIQUE_NAME);
2>查看备库上的最新的日志
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
如果可以的话将主库上已经归档的日志并且在备库上还没有的日志拷贝至备库并注册
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
3>查看日志间隙
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
如果可以,拷贝归档至备库并应用
4>重复步骤三至所有的gap都得以解决
5>停止日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
6>完成所有的日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
如果还是有错误不能解决,或者有数据丢失,执行下面语句
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
执行完成后
SQL> ALTER DATABASE OPEN;
没有问题的话,执行step 8
8>切换
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
SQL> ALTER DATABASE OPEN;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30018455/viewspace-2124622/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30018455/viewspace-2124622/