拓扑架构上,最简单的架构为:
站点A 站点B
主库->Far Sync——————Standby库
如果希望在角色切换后,新的主库端也有Far Sync实例,则可按如下架构:
站点A 站点B
主库->Far Sync—————— Far Sync->Standby库
如果希望主库端在Far Sync端实现高可用以避免Far Sync实例成为单点故障,则可进一步如下设计:
站点A 站点B
主库->Far Sync 1—————— Far Sync 3->Standby库
->Far Sync 2 Far Sync 4->
特别注意:主库和Standby库仍然需要直接互连,因为需要角色转换,同时也会将Standby库作为次选的日志归档路径。
以下实验按照第一个架构。
主库:prmy;备库:remote;Far Sync:prmyfs
0. Far Sync的准备
包括静态监听,本地服务名、创建目录、密码文件等。
1. 首先创建prmy和remote的DG,详见:12c RAC下搭建物理备用
2. 创建Far Sync实例
主库上创建Far Sync所用的控制文件
点击(此处)折叠或打开
- SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/controlfs01.ctl';
点击(此处)折叠或打开
- SQL> create pfile='/tmp/pfile.fs' from spfile;
3. 编辑3个实例的pfile参数文件,可以先通过spfile创建一个pfile,编辑后再用pfile覆盖spfile
Prmy:
点击(此处)折叠或打开
-
*.audit_file_dest='/u01/app/oracle/admin/prmy/adump'
-
*.audit_trail='db'
-
*.compatible='12.1.0.2.0'
-
*.control_files='/oradata/PRMY/controlfile/o1_mf_cp1p1dno_.ctl','/fra/PRMY/controlfile/o1_mf_cp1p1g77_.ctl'
-
*.db_block_size=8192
-
*.db_create_file_dest='/oradata'
-
*.db_domain=''
-
*.db_name='prmy'
-
*.db_recovery_file_dest='/fra'
-
*.db_recovery_file_dest_size=55g
-
*.diagnostic_dest='/u01/app/oracle'
-
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prmyXDB)'
-
*.enable_pluggable_database=true
-
*.fal_client='PRMY'
-
*.fal_server='REMOTE'
-
*.local_listener=''
-
*.log_archive_config='dg_config=(prmy,prmyfs,remote)'
-
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prmy'
-
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
-
*.log_archive_dest_2='service=prmyfs SYNC AFFIRM MAX_FAILURE=1 ALTERNATE=LOG_ARCHIVE_DEST_3 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prmyfs'
-
*.LOG_ARCHIVE_DEST_STATE_3='ALTERNATE'
-
*.LOG_ARCHIVE_DEST_3='SERVICE=remote ASYNC ALTERNATE=LOG_ARCHIVE_DEST_2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=remote'
-
*.log_archive_format='%t_%s_%r.dbf'
-
*.log_archive_max_processes=4
-
*.memory_target=1560m
-
*.open_cursors=300
-
*.processes=300
-
*.remote_login_passwordfile='EXCLUSIVE'
-
*.standby_file_management='AUTO'
-
*.undo_tablespace='UNDOTBS1'
-
*.DB_FILE_NAME_CONVERT='/REMOTE/','/PRMY/'
- *.LOG_FILE_NAME_CONVERT='/REMOTE/','/PRMY/'
点击(此处)折叠或打开
-
*.audit_file_dest='/u01/app/oracle/admin/prmyfs/adump'
-
*.audit_trail='db'
-
*.compatible='12.1.0.2.0'
-
*.control_files='/u01/oradata/PRMYFS/controlfile/controlfs01.ctl','/u01/fra/PRMYFS/controlfile/controlfs02.ctl'
-
*.db_block_size=8192
-
*.db_domain=''
-
*.db_create_file_dest='/u01/oradata'
-
*.db_recovery_file_dest='/u01/fra'
-
*.db_recovery_file_dest_size=55g
-
*.diagnostic_dest='/u01/app/oracle'
-
*.enable_pluggable_database=true
-
*.fal_server='PRMY'
-
*.local_listener=''
-
*.log_archive_config='dg_config=(prmy,prmyfs,remote)'
-
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prmyfs'
-
*.log_archive_dest_2='SERVICE=remote ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=remote'
-
*.log_archive_format='%t_%s_%r.dbf'
-
*.log_archive_max_processes=4
-
*.memory_target=1560m
-
*.open_cursors=300
-
*.processes=300
-
*.remote_login_passwordfile='EXCLUSIVE'
-
*.standby_file_management='AUTO'
-
*.DB_UNIQUE_NAME='PRMYFS'
-
*.DB_NAME='PRMY'
- *.LOG_FILE_NAME_CONVERT='/oradata/PRMY/','/u01/oradata/PRMYFS/','/oradata/REMOTE/','/u01/oradata/PRMYFS/'
点击(此处)折叠或打开
-
*.audit_file_dest='/u01/app/oracle/admin/remote/adump'
-
*.audit_trail='db'
-
*.compatible='12.1.0.2.0'
-
*.control_files='/oradata/REMOTE/controlfile/control01.ctl','/fra/REMOTE/controlfile/control02.ctl'
-
*.db_block_size=8192
-
*.db_create_file_dest='/oradata'
-
*.db_create_online_log_dest_1='/oradata'
-
*.db_create_online_log_dest_2='/fra'
-
*.db_domain=''
-
*.db_file_name_convert='PRMY','REMOTE'
-
*.log_file_name_convert='PRMY','REMOTE'
-
*.db_name='prmy'
-
*.db_recovery_file_dest='/fra'
-
*.db_recovery_file_dest_size=59055800320
-
*.db_unique_name='remote'
-
*.diagnostic_dest='/u01/app/oracle'
-
*.dispatchers='(PROTOCOL=TCP) (SERVICE=remoteXDB)'
-
*.enable_pluggable_database=true
-
*.fal_client='remote'
-
*.fal_server='prmyfs','prmy'
-
*.local_listener=''
-
*.log_archive_config='dg_config=(prmy,prmyfs,remote)'
-
*.LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=remote'
-
*.log_archive_dest_2='service=prmy ASYNC valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=prmy'
-
*.log_archive_format='%t_%s_%r.dbf'
-
*.log_archive_max_processes=4
-
*.memory_target=1560m
-
*.open_cursors=300
-
*.processes=300
-
*.remote_login_passwordfile='EXCLUSIVE'
-
*.standby_file_management='AUTO'
- *.undo_tablespace='UNDOTBS1'
4. 接下来,可以用新的spfile启动所有实例。其中Far Sync实例只启动到mount模式。
注意:Far Sync实例不需要创建Standby log,通过log_file_name_convert会将Primary上的logfile自动转换创建出来。
5. 查看Data Guard运行配置:
在所有实例上皆可执行该查询:
点击(此处)折叠或打开
-
col PARENT_DBUN format a15
-
col DB_UNIQUE_NAME format a15
-
select * from V$DATAGUARD_CONFIG;
-
-
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
-
--------------- --------------- ----------------- ----------- ----------
-
prmy NONE PRIMARY DATABASE 1943029 0
-
prmyfs prmy FAR SYNC INSTANCE 1942902 0
- remote prmyfs PHYSICAL STANDBY 1942902 0
点击(此处)折叠或打开
- ALTER DATABASE SET STANDBY TO MAXIMIZE AVAILABILITY;
有以下几点需要注意:
1. Far Sync上没有onlinelog,只有Standby log,在v$logfile上显示的onlinelog其实是Primary上的。
点击(此处)折叠或打开
-
col member format a52
-
select group#,type,member from v$logfile order by 1;
-
-
GROUP# TYPE MEMBER
-
---------- ------- ----------------------------------------------------
-
1 ONLINE /u01/oradata/PRMYFS/onlinelog/o1_mf_1_cp1p1lt1_.log
-
1 ONLINE /fra/PRMY/onlinelog/o1_mf_1_cp1p1m5t_.log
-
2 ONLINE /u01/oradata/PRMYFS/onlinelog/o1_mf_2_cp1p2b0f_.log
-
2 ONLINE /fra/PRMY/onlinelog/o1_mf_2_cp1p2bcn_.log
-
3 ONLINE /u01/oradata/PRMYFS/onlinelog/o1_mf_3_cp1p336d_.log
-
3 ONLINE /fra/PRMY/onlinelog/o1_mf_3_cp1p33l5_.log
-
4 STANDBY /u01/oradata/PRMYFS/onlinelog/o1_mf_4_cp4jg98h_.log
-
4 STANDBY /u01/fra/PRMYFS/onlinelog/o1_mf_4_cp4jg9qs_.log
-
5 STANDBY /u01/oradata/PRMYFS/onlinelog/o1_mf_5_cp4jhjo4_.log
-
5 STANDBY /u01/fra/PRMYFS/onlinelog/o1_mf_5_cp4jhmkb_.log
-
6 STANDBY /u01/oradata/PRMYFS/onlinelog/o1_mf_6_cp4jjc8c_.log
-
-
GROUP# TYPE MEMBER
-
---------- ------- ----------------------------------------------------
-
6 STANDBY /u01/fra/PRMYFS/onlinelog/o1_mf_6_cp4jjco8_.log
-
7 STANDBY /u01/oradata/PRMYFS/onlinelog/o1_mf_7_cp4jg93f_.log
- 7 STANDBY /u01/fra/PRMYFS/onlinelog/o1_mf_7_cp4jg9x7_.log
-
-
$ ll /u01/fra/PRMYFS/onlinelog
total 204816
-rw-r----- 1 oracle oinstall 52429312 Jun 16 15:23 o1_mf_4_cp4jg9qs_.log
-rw-r----- 1 oracle oinstall 52429312 Jun 16 14:17 o1_mf_5_cp4jhmkb_.log
-rw-r----- 1 oracle oinstall 52429312 Jun 16 14:07 o1_mf_6_cp4jjco8_.log
-rw-r----- 1 oracle oinstall 52429312 Jun 16 14:06 o1_mf_7_cp4jg9x7_.log
3. Fast Sync的使用
上例中的Primary端使用了redo传输参数为:
点击(此处)折叠或打开
- log_archive_dest_2='service=prmyfs SYNC AFFIRM……'
http://docs.oracle.com/database/121/SBYDB/protection.htm#SBYDB4743