角色切换属于计划内事件,在切换前,有一些检查工作需要做:
测试环境为Oracle12c12.1.0.1,主库为RAC+ASM,备库为单实例+文件系统。
1、确认主库和备库的参数配置正确
关于DG的参数设置参考另一篇文章:
http://blog.csdn.net/wang_san_shi/article/details/44671007
确认备库上(切换后将成为主库)的(关于主库)参数的设置:
*.log_archive_dest_2='service=orarac valid_for=(all_logfiles,primary_role) async db_unique_name=orarac'
*.log_archive_config='dg_config=(orarac,oraracdg)'
确认主库上(切换后将成为备库)的(关于备库)参数的设置:
*.FAL_CLIENT='ORARAC'
*.FAL_SERVER='ORARACDG'
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/oraracdg','+DATA/ORARAC/DATAFILE',
'/u01/app/oracle/oradata/oraracdg/datafile2','+DATA/ORARAC/DD7C48AA5A4404A2E04325AAE80A403C/DATAFILE',
'/u01/app/oracle/oradata/oraracdg/datafile3','+DATA/ORARAC/111287D3DD272EB4E05362B51AAC7F13/DATAFILE'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/oraracdg','+DATA/ORARAC/ONLINELOG',
'/u01/app/oracle/oradata/oraracdg/fra','+FRA/ORARAC/ONLINELOG'
2、确认主库(将要切换为备库)的standby log存在
SQL> select group#,thread# from v$standby_log;
GROUP# THREAD#
---------- ----------
5 1
6 1
7 1
8 2
9 2
10 2
6 rows selected.
3、验证备用数据库已接收全部重做
在主库上执行下列查询:
SQL> SELECT DB_UNIQUE_NAME, PROTECTION_MODE, SYNCHRONIZATION_STATUS,SYNCHRONIZED FROM V$ARCHIVE_DEST_STATUS;
DB_UNIQUE_NAME PROTECTION_MODE SYNCHRONIZATION_STATUS SYN
------------------------------ -------------------- ---------------------- ---
orarac MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
oraracdg MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
...
如果此时SYN为YES则足以表示主备同步,否则继续在备库上验证。
在备库上执行以下查询:
SQL> SELECT CLIENT_PROCESS, PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
CLIENT_P PROCESS SEQUENCE# STATUS
-------- --------- ---------- ------------
ARCH ARCH 0 CONNECTED
ARCH ARCH 0 CONNECTED
ARCH ARCH 144 CLOSING
ARCH ARCH 100 CLOSING
ARCH RFS 0 IDLE
ARCH RFS