Oracle 12c DG新特性 - Active Data Guard Far Sync (Doc ID 2179719.1)
Tags: Active Data Guard Far SyncDGOracle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | 一.1 创建 Far sync 创建Far Sync实例类似于创建物理备库,但数据文件在Far Sync实例中不存在。因此不需要拷贝数据文件并还原数据文件。一旦Far Sync实例创建了,那么就默认运行在Maximum Availability模式,那么REDO是实时同步传输的。 一.1.1 原DG环境 主库:lhr122 Far Sync:lhr122fs 备库:lhr122dg DGMGRL> show configuration Configuration - lhr122 Protection Mode: MaxPerformance Members: lhr122 - Primary database lhr122dg - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS (status updated 4 seconds ago) SYS@lhr122> select * from V$DATAGUARD_CONFIG; DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID ------------------------------ ------------------------------ ----------------- ----------- ---------- lhr122 NONE PRIMARY DATABASE 3086907 0 lhr122dg lhr122 PHYSICAL STANDBY 3086973 0 SYS@lhr122> col name format a25 SYS@lhr122> col VALUE format a100 SYS@lhr122> SELECT a.NAME, 2 a.VALUE 3 FROM v$parameter a 4 WHERE (a.NAME LIKE '%file_name_convert' OR a.NAME LIKE 'fal%' OR 5 a.NAME LIKE 'standby_file%' OR a.NAME = 'log_archive_config' OR 6 A.NAME LIKE 'log_archive_dest_%') 7 AND A.VALUE IS NOT NULL 8 and a.VALUE!='enable'; NAME VALUE ------------------------- ---------------------------------------------------------------------------------------------------- db_file_name_convert /u04/oradata/lhr122dg/, /u04/oradata/lhr122/ log_file_name_convert /u04/oradata/lhr122dg/, /u04/oradata/lhr122/ log_archive_dest_1 LOCATION=/u04/oradata/lhr122/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lhr122 log_archive_dest_2 service="lhr122dg", ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connection s=1 reopen=300 db_unique_name="lhr122dg" net_timeout=30, valid_for=(online_logfile,all_roles) log_archive_dest_state_2 ENABLE fal_client lhr122 log_archive_config dg_config=(lhr122,lhr122dg) standby_file_management AUTO 一.1.2 主库配置和操作 一.1.2.1 创建Far sync实例控制文件 ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/control01.ctl'; 一.1.2.2 创建Far sync实例参数文件 create pfile='/tmp/initlhr122fs.ora' from spfile; 一.1.2.3 传递相关文件到Far Sync实例主机 将生成的控制文件、参数文件、主库密码文件、tnsnames.ora、listener.ora传递到Far Sync实例主机。 我这里是在本机搭建的: cp /tmp/control01.ctl /u04/oradata/lhr122fs/ cp /tmp/initlhr122fs.ora /u04/oradata/lhr122fs/ cp $ORACLE_HOME/dbs/orapwlhr122 $ORACLE_HOME/dbs/orapwlhr122fs 一.1.3 Far Sync实例配置 一.1.3.1 修改PFILE audit_file_dest='/u07/app/oracle/admin/lhr122fs/adump' control_files='/u04/oradata/lhr122fs/control01.ctl' db_name='lhr122' db_unique_name='lhr122fs' dg_broker_start=TRUE diagnostic_dest='/u07/app/oracle' fal_client='lhr122fs' fal_server='lhr122','lhr122dg' log_archive_config='dg_config=(lhr122,lhr122fs,lhr122dg)' log_archive_dest_1='LOCATION=/u04/oradata/lhr122fs/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lhr122fs' log_archive_dest_2='SERVICE=lhr122dg ASYNC NOAFFIRM VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=lhr122dg' log_archive_dest_state_2='ENABLE' log_file_name_convert='/u04/oradata/lhr122/','/u04/oradata/lhr122fs/','/u04/oradata/lhr122dg/','/u04/oradata/lhr122fs/' db_file_name_convert='/u04/oradata/lhr122/','/u04/oradata/lhr122fs/','/u04/oradata/lhr122dg/','/u04/oradata/lhr122fs/' standby_file_management='AUTO' pga_aggregate_target=158m sga_target=419430400 一.1.3.2 创建路径 mkdir -p /u07/app/oracle/admin/lhr122fs/adump mkdir -p /u04/oradata/lhr122fs 一.1.3.3 将Far Sync实例启动到mount ORACLE_SID=lhr122fs sqlplus / as sysdba create spfile from pfile='/u04/oradata/lhr122fs/initlhr122fs.ora'; startup mount; SYS@lhr122fs> select protection_mode,database_role,protection_level,open_mode from v$database; PROTECTION_MODE DATABASE_ROLE PROTECTION_LEVEL OPEN_MODE -------------------- ---------------- -------------------- -------------------- MAXIMUM PERFORMANCE FAR SYNC MAXIMUM PERFORMANCE MOUNTED 一.1.4 主备库和Far Sync添加TNSNAME lhr122fs = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = lhr122fs) ) ) 一.1.5 Far Sync添加监听 (SID_DESC = (GLOBAL_DBNAME = lhr122fs) (ORACLE_HOME = /u07/app/oracle/product/12.2.0/dbhome_1) (SID_NAME = lhr122fs) ) (SID_DESC = (GLOBAL_DBNAME = lhr122fs_DGMGRL) (ORACLE_HOME = /u07/app/oracle/product/12.2.0/dbhome_1) (SID_NAME = lhr122fs) ) lsnrctl reload 一.1.6 修改参数启用Far Sync配置 一.1.6.1 修改主库参数 修改配置,指向Far Sync实例 alter system set LOG_ARCHIVE_CONFIG ='DG_CONFIG=(lhr122,lhr122fs,lhr122dg)' scope=both; alter system set LOG_ARCHIVE_DEST_2='SERVICE=lhr122fs SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=lhr122fs' scope=both; 一.1.6.2 备库修改配置 alter system set LOG_ARCHIVE_CONFIG ='DG_CONFIG=(lhr122,lhr122fs,lhr122dg)' scope=both; alter system set LOG_ARCHIVE_DEST_2='SERVICE=lhr122 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=lhr122'; alter system set db_file_name_convert='/u04/oradata/lhr122/','/u04/oradata/lhr122dg/' scope=spfile; alter system set log_file_name_convert='/u04/oradata/lhr122/','/u04/oradata/lhr122dg/' scope=spfile; alter system set standby_file_management='AUTO' sid='*'; alter system set fal_server='lhr122fs','lhr122' sid='*'; alter system set fal_client='lhr122dg' sid='*'; 一.1.7 主库查询 SYS@lhr122> SELECT * FROM V$DATAGUARD_CONFIG; DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID ------------------------------ ------------------------------ ----------------- ----------- ---------- lhr122 NONE PRIMARY DATABASE 3106169 0 lhr122fs lhr122 FAR SYNC INSTANCE 3105997 0 lhr122dg lhr122fs PHYSICAL STANDBY 3106050 0 一.2 配置dgmgrl 一.2.1 删除所有配置 remove configuration; 一.2.2 去除DG redo log同步参数设置 alter system set log_archive_dest_2=''; 注:在12cR1以前版本中,配置dg broker是不需要去除。但是在12cR1以上版本中,如果不去除已配置了dg redo log同步参数,那么在创建dg broker的时候会出现如下错误: DGMGRL> add far_sync lhr122fs as connect identifier is lhr122fs; Error: ORA-16698: member has a LOG_ARCHIVE_DEST_n parameter with SERVICE attribute set oerr ora 16649 16649, 0000, "possible failover to another database prevents this database from being opened" // *Cause: An attempt to open the primary database was made either after // a failover occurred, or when it was likely to have occurred as // the result of the primary being isolated from the fast-start // failover target standby database and from the fast-start failover // observer. // *Action: Check if a failover did occur. If fast-start failover is enabled, // and a failover did not occur, ensure that connectivity exists // between the primary database and either the observer or the // target standby database. Then, try opening the database again. 一.2.3 添加 remove configuration; create configuration dgmgrl_lhr122 as primary database is lhr122 connect identifier is lhr122; add far_sync lhr122fs as connect identifier is lhr122fs; # alter system set log_archive_dest_2=''; add database lhr122dg as connect identifier is lhr122dg maintained as physical; --这里非常重要 edit database lhr122 set property RedoRoutes = '(lhr122:lhr122fs SYNC)'; edit far_sync lhr122fs set property RedoRoutes = '(lhr122:lhr122dg ASYNC)'; show database lhr122 RedoRoutes show far_sync lhr122fs RedoRoutes show database lhr122dg RedoRoutes edit database lhr122 set property 'FastStartFailoverTarget'='lhr122dg'; edit database lhr122dg set property 'FastStartFailoverTarget'='lhr122'; show database lhr122 StaticConnectIdentifier show far_sync lhr122fs StaticConnectIdentifier show database lhr122dg StaticConnectIdentifier edit database lhr122 set property StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.130)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=lhr122)(INSTANCE_NAME=lhr122)(SERVER=DEDICATED)))'; edit far_sync lhr122fs set property StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.130)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=lhr122fs)(INSTANCE_NAME=lhr122fs)(SERVER=DEDICATED)))'; edit database lhr122dg set property StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.130)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=lhr122dg)(INSTANCE_NAME=lhr122dg)(SERVER=DEDICATED)))'; enable configuration DGMGRL> show configuration Configuration - dgmgrl_lhr122 Protection Mode: MaxPerformance Members: lhr122 - Primary database lhr122fs - Far sync instance lhr122dg - Physical standby database Fast-Start Failover: DISABLED Configuration Status: SUCCESS (status updated 15 seconds ago) 一.2.4 switchover和failover ---- switchover dgmgrl sys/lhr@lhr122 switchover to lhr122dg; -----切换完成后需要重新配置RedoRoutes --若执行卡住,则重启一下备库即可 edit database lhr122dg set property RedoRoutes = '(lhr122dg:lhr122fs SYNC)'; edit far_sync lhr122fs set property RedoRoutes = '(lhr122dg:lhr122 ASYNC)'; ---- failover dgmgrl sys/lhr@lhr122dg failover to lhr122dg edit database lhr122dg set property RedoRoutes = '(lhr122dg:lhr122fs SYNC)'; edit far_sync lhr122fs set property RedoRoutes = '(lhr122dg:lhr122 ASYNC)'; reinstate database lhr122 |
![]() | Data Guard 12C 新特性:Far Sync Standby (Doc ID 2179719.1) |
---|---|
文档内容
目标 | |
---|---|
解决方案 | |
---|---|
创建一个远程同步备用实例 | |
---|---|
Data Guard Broker 和远程同步备用数据库 | |
---|---|
White paper | |
---|---|
参考 | |
---|---|
适用于:
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本
Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本
Oracle Database Backup Service - 版本 N/A 和更高版本
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台
Checked for relevance on 13-Jul-2015
目标
本文的目的是介绍新的备库类型 Far Sync Standby。
解决方案
远程同步备用数据库是一个级联备用数据库充当一个重做日志库的终端数据库。它不包含任何数据文件。远端同步备用数据库上只有日志传输服务。远端同步备用数据库的好处是,它可以在本地服务器运行,并且以最大可用模式运行,物理或逻辑备库就可以运行在远程站点。
创建一个远程同步备用实例
配置 Far Sync Standby 时,准备环境与物理备库的环境相同,请参阅:
Note 1475344.1 Creating a Physical Standby Database on Oracle 11.2.0.x
-> 准备环境和备用实例
例如:
在主数据库创建一个 Far Sync Standby 控制文件,并使用该控制文件挂载远程同步实例:
SQL> alter database create far sync instance controlfile as ‘
然后,您可以设置日志运输服务的级联备库,方法与普通的级联备用数据库相同。
.
Data Guard Broker 和远程同步备用数据库
Data Guard Broker 支持 Far Sync Standby 和级联备用数据,您可以通过添加远程同步备用到您的 Data Guard Broker 的配置中:
DGMGRL> add far_sync
然后相应的设置 Data Guard Broker 属性“RedoRoutes”。您可以在下面的文档中找到关于“RedoRoutes”的说明:
Note 1542969.1 Cascaded Standby Databases in Oracle 12c
White paper
Oracle Active Data Guard Far Sync 数据零丢失
References
参考
NOTE:1475344.1 - Creating a Physical Standby Database
NOTE:1578787.1 - 12c Data guard Switchover Best Practices using SQLPLUS
NOTE:1582837.1 - 12c Dataguard Switchover Best Practices using DGMGRL(Dataguard Broker Command Prompt)
*在 12c 上配置 Create Dataguard Broker - DGMGRL (Doc ID 2102854.1)*
文档内容
目标 | |
---|---|
解决方案 | |
---|---|
Dataguard Broker Supports Far/Fast SYNC Standby | |
---|---|
参考 | |
---|---|
适用于:
Oracle Database - Enterprise Edition - 版本 12.1.0.1 到 12.1.0.1 [发行版 12.1]
Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本
Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台
目标
Goal
本文档提供了逐步创建代理配置的方法。
注意:在下面的图像和/或文档内容中,所使用的用户信息和环境数据表示来自Oracle示例模式,随Oracle数据库产品一起提供的公共文档或其他培训材料的虚拟数据。 与实际环境的任何相似之处,纯属巧合,绝不以任何方式提供。
为了本文档的目的,以下虚拟环境用作描述此过程的示例:
Dg configuration : 12c
Primary db_unique_name : boston
Standby db_unique_name : chicago
Solution
解决方案
1.先决条件,
启动Dataguard broker DMON流程.
在Primary 和 Standby,
SQL> alter system set dg_broker_start=true sid='*';
\2. 连接到 DGMGRL
Primary,
$dgmgrl
DGMGRL>连接 sysdg
password: *****
\3. 创建配置,
DGMGRL> create configuration '
ex,
DGMGRL> create configuration '12c' AS PRIMARY DATABASE IS 'boston' as connect identifier is boston;
NOTE : 如果创建配置失败并显示ORA-16698 请参考
Note 1582179.1: Create Configuration Failing with ORA-16698
校验配置,
DGMGRL> show configuration;
Configuration - 12c
保护模式: MaxPerformance
Databases:
Databases:
boston - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
\4. 添加 Standby,
DGMGRL> add database
举例:
DGMGRL> add database chicago as connect identifier is chicago;
DGMGRL> show configuration;
Configuration - 12c
Protection Mode: MaxPerformance
Databases:
boston - Primary database
Databases:
boston - Primary database
chicago - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
\5. 启动配置,
DGMGRL> enable configuration;
\6. 校验配置,
DGMGRL> show configuration;
Configuration - 12c
Protection Mode: MaxPerformance
Databases:
boston - Primary database
chicago - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> show database boston;
Database - boston
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
boston
Database Status:
Database Status:
SUCCESS
DGMGRL> show database chicago;
Database - chicago
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 0 seconds (computed 1 second ago)
Apply Rate: 2.54 MByte/s
Real Time Query: ON
Instance(s):
chicago
Database Status:
SUCCESS
记录在二进制文件中的Data Guard配置详细信息,
SQL> show parameter config
NAME TYPE VALUE
dg_broker_config_file1 string /u01/app/oracle/product/12.1.0
/dbhome_1/dbs/dr1boston.dat
dg_broker_config_file2 string /u01/app/oracle/product/12.1.0
/dbhome_1/dbs/dr2boston.dat
span>
Dataguard Broker Supports Far/Fast SYNC Standby
FSFO supports Far sync standby.
DGMGRL>add far_sync
DGMGRL>enable far_sync
编辑ar sync instance 属性,
DGMGRL>EDIT FAR_SYNC far_sync_instance_name SET/RESET PROPERTY property-name;
Fast SYNC Standby
DGMGRL>edit database
使用SYNC NOAFFIRM配置REDO传输
References
Document : :1582179.1 - Create Configuration Failing with ORA-16698
参考
NOTE:1582179.1 - Create Configuration Failing with ORA-16698
12c 的 Cascaded Standby 数据库 (Doc ID 2179701.1)
文档内容
用途 | |
---|---|
详细信息 | |
---|---|
实时 Cascading: | |
---|---|
先决条件: | |
---|---|
设置: | |
---|---|
Far Sync Standby 数据库: | |
---|---|
Data Guard Broker 和 Cascaded Standby 数据库: | |
---|---|
参考 | |
---|---|
适用于:
Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Oracle Database Exadata Cloud Machine - 版本 N/A 和更高版本
Oracle Cloud Infrastructure - Database Service - 版本 N/A 和更高版本
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台
Checked for relevance on 13-Jul-2015
用途
这篇文档解释了 Cascaded Standby 在 oracle 12c 上的增强特性。
详细信息
Oracle 12c 的 cascading standby 数据库为用户增加了更多的选项。12c 的版本对比以前的版本增加了以下的新选项:
- 实时 Cascading
- Far Sync Standby 数据库
- Data Guard Broker 提供对 cascading standby 数据库的支持
但是,你还只能从配置 physical standby 数据库去 cascade 另一个 standby 数据库。 目前 logical standby 数据库还不支持 cascade 另一个 standby 数据库。
实时 Cascading:
新版本现在支持以实时的模式将 redo 从第一个 standby 数据库传递到 cascaded standby 数据库。因此在第一个 standby 数据库,Redo 的信息会在被写到 Standby Redolog 后立即传递到 cascaded standby 数据库。
而非实时 Cascading 意味着:只有主库的 log Switch 之后,整个 log sequence 才会被传递到最终的 Standby 数据库上。
先决条件:
- 第一个(Cascading)standby 数据库必须是物理的或者是 Far Sync Standby 数据库
- 必须保证至少在 Cascading standby 数据库上使用 Standby Redolog
- Active Data guard 的选项必须是有 license 的
- Primary,Cascading,Cascaded standby 数据库的 db_unique_name 必须体现在所有数据库 log_archive_config 的 dg_config 中
设置:
首先 ,创建一个通常的 Dataguard 环境到 cascading standby 数据库。Log 的传输模式应该为 SYNC,同时在 cascading standby 配置 Standby Redolog。在创建完 cascaded standby 数据库以后就可以设置 cascading log 的传输服务了,下面是一些注意事项:
- Primary,Cascading,Cascaded standby 数据库的 db_unique_name 必须体现在所有数据库 log_archive_config 的 dg_config 中。
- 在 Cascading standby 数据库的 log_archive_dest_n 里面设置 ‘valid_for=(STANDBY_LOGFILES,STANDBY_ROLE)’ 的属性来传输给 cascaded(最终)standby 数据库。
- 你可以通过设置 Log Transport 的模式来切换实时以及非实时的 cascading 模式:
ASYNC = Real-Time Cascading
SYNC = Non Real-Time Cascading
- 你只可以设置从 log_archive_dest_1 到 log_archive_dest_10 作为非实时模式的目的地,而你可以在 cascading standby 数据库上设置所有的 log_archive_dest_n 作为实时 cascading 的目的地。
- Cascading Standby 数据库可以运行在任何保护模式下。
- Cascading Standby 数据库可以传输给一个或者多的 terminal standby 数据库。
- Cascading Standby 数据库的 FAL_SERVER 应该设置为 primary 库或者是其他的 primary 直接连接的 standby 数据库。
- Terminal Standby 数据库的 FAL_SERVER应该设置 cascading Standby 数据库或者 Primary 数据库。
Far Sync Standby 数据库:
Far Sync Standby 数据库对于 Terminal standby 数据库来说是作为一个 RedoLog repository 数据库的作用。他不含有任何的数据文件。Far Sync Standby 数据库只是启动了 Log 传输服务。Far Sync Standby 数据库的优点是它可以作为 Primary 数据库的一个在最大保护模式下的本地的 ArchiveLog Repository,而 Physical 和 logical standby 数据库可以运行在远端,请参考文档:
Note 1565071.1: Data Guard 12c New Feature: Far Sync Standby
来了解具体的关于 Far Sync Standby 数据库内容以及设置的步骤。
Data Guard Broker 和 Cascaded Standby 数据库:
Data Guard Broker 有一个新的‘RedoRoutes’的属性可以用来构建和部署 cascaded Data Guard Broker 的配置。 以下是它的格式:
RedoRoutes = ‘(
Redo Source: Redo 的来源,他可以是 db_unique_name 或者是一个本地数据库名别名的 ‘LOCAL’-Keyword(不能被 Far Sync Standby 数据库使用)
Redo Destination: Redo 从这个数据库传输到的目的地。他可以是一个或者多个(用逗号分开)db_unique_name 或者是代表所有在 Data Guard Broker 配置中可能目的地的别名的‘ALL’-Keyword。 你可以设置到目的地的传输的模式。包括以下:
- SYNC: 等同于 log_archive_dest_n 中的属性 ‘SYNC AFFIRM’ 或者是非实时 Cascade
- ASYNC: 等同于 log_archive_dest_n 中的属性 ‘ASYNC’ 或者是 实时 Cascade
- FASTSYNC : 等同于 log_archive_dest_n 中的属性 ‘SYNC NOAFFIRM’
例子:
Primary Database: prim
Cascading Standby Database: local_stdby
Cascaded (terminal) Standby Database: remote_stdby
如果想实现’SYNC NOAFFIRM’的本地 standby 数据库和在实时 cascade 模式下的远程 standby 数据库,设置如下:
Primary Database (prim)
RedoRoutes = ‘(LOCAL : local_stdby FASTSYNC)’
-> Primary 数据库只传送 Redo 到 local Standby 数据库,但是有到远程 standby 数据库的 Archive 目的地。
Local Standby Database (local_stdby)
RedoRoutes = ‘(prim : remote_stdby ASYNC)’
-> 这里需要配置来源于 ‘prim’的 REDO 是以实时 cascade(ASYNC)的方式转发到远程的 Standby 数据库。
参考
NOTE:1565071.1 - Data Guard 12c New Feature: Far Sync Standby
Orcle 12c DG 新特性---Far Sync
1 说明
An Oracle Data Guard far sync instance is a remote Oracle Data Guard destination that accepts redo from the primary database and then ships that redo to other members of the Oracle Data Guard configuration. A far sync instance manages a control file, receives redo into standby redo logs (SRLs), and archives those SRLs to local archived redo logs, but that is where the similarity with standbys ends. A far sync instance does not have user data files, cannot be opened for access, cannot run redo apply, and can never function in the primary role or be converted to any type of standby database.
Active Data Guard Far Sync 是 Oracle 12c 的新特性(也称为 Far Sync Standby ), Far Sync 功能的实现是通过在距离主库 (Primary Database) 相对较近的地点配置 Far Sync 实例,主库 (Primary Database) 同步 (synchronous) 传输 redo 到 Far Sync 实例,然后 Far Sync 实例再将 redo 异步 (asynchronous) 传输到终端备库 (Standby Database) 。这样既可以保证零数据丢失又可以降低主库压力。 Far Sync 实例只有密码文件, init 参数文件和控制文件,而没有数据文件。所以无法打开用于访问。
Far Sync 配置对于 Data Guard 角色转换 (role transitions) 是透明的,即 switchover/failover 命令方式与 12c 之前相同。
2 实验-Far Sync 安装配置
创建Far Sync 实例类似于创建物理备库,但数据文件在 Far Sync 实例中不存在。因此不需要拷贝数据文件并还原数据文件。一旦 Far Sync 实例创建了,那么就默认运行在 Maximum Availability 模式,那么 REDO 是实时同步传输的。
2.1 主库配置和操作
2.1.1 创建Far Sync 实例的控制文件
1 2 | SQL> ALTER DATABASE CREATE FAR SYNC INSTANCE CONTROLFILE AS '/tmp/control01.ctl'; Database altered. |
将上面生成的Far Sync 的控制文件拷贝到 Far Sync 所在的主机上。
1 2 3 | SQL> !scp /tmp/control01.ctl 192.168.1.173://u01/app/oracle/oradata/cndba_far/ [Expect-le@ ]$ pwd /u01/app/oracle/oradata/cndba_far |
2.1.2 修改配置,指向Far Sync 实例
1 2 3 4 5 | SQL> alter system set LOG_ARCHIVE_CONFIG ='DG_CONFIG=(cndba_p,cndba_far_sync,cndba_s)' scope=both; System altered. SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=cndba_far_sync ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=cndba_far_sync' scope=both; System altered. |
2.2 备库修改配置
1 2 3 4 | SQL> alter system set LOG_ARCHIVE_CONFIG ='DG_CONFIG=(cndba_p,cndba_far_sync,cndba_s)' scope=both; System altered. SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=cndba_p ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=cndba_p' scope=both; System altered. |
2.3 Far Sync 实例配置
2.3.1 修改PFILE
cndba_s 是物理备库, cndba_far_sync 是 Far Sync 实例的 DB_UNIQUE_NAME 。如果日志文件路径需要修改,也要修改 DB_FILE_NAME_CONVERT 和 LOG_FILE_NAME_CONVERT 。
1 2 3 4 5 6 7 8 | DB_UNIQUE_NAME=cndba_far_sync CONTROL_FILES='/u01/app/oracle/oradata/cndba_far/control01.ctl' FAL_SERVER=cndba_p LOG_ARCHIVE_CONFIG='DG_CONFIG=(cndba_p,cndba_far_sync,cndba_s)' LOG_ARCHIVE_DEST_1='LOCATION=/u01/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=cndba_far_sync' LOG_ARCHIVE_DEST_2='SERVICE=cndba_s ASYNC VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=cndba_s’ |
2.3.2 将Far Sync 实例启动到 mount
1 2 3 4 5 6 7 8 9 10 | SQL> create spfile from pfile='/u01/app/oracle/product/12.1.0.2/db_1/dbs/initcndba_far.ora'; File created. SQL> startup mount; ORACLE instance started. Total System Global Area 2348810240 bytes Fixed Size 2927048 bytes Variable Size 1409287736 bytes Database Buffers 922746880 bytes Redo Buffers 13848576 bytes Database mounted. |
2.3.3 查看Far Sync 实例状态
1 2 3 4 | SQL> select protection_mode,database_role,protection_level,open_mode from v$database; PROTECTION_MODE DATABASE_ROLE PROTECTION_LEVEL OPEN_MODE -------------------- ---------------- -------------------- -------------------- MAXIMUM PERFORMANCE FAR SYNC MAXIMUM PERFORMANCE MOUNTED |
2.3.4 创建standby redo log( 可选,最好创建 )
语法:
1 | ALTER DATABASE ADD STANDBY LOGFILE GROUP 4('/u01/app/oracle/oradata/cndba_far/standbyredo11.log') SIZE 52428800; |
2.4 主备库和Far Sync 添加 TNSNAME
1 2 3 4 5 6 7 8 9 | CNDBA_FAR_SYNC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.173)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = cndba) ) ) |
2.5 检查配置
1 2 3 4 5 6 | SQL> select * from V$DATAGUARD_CONFIG; DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID ------------------------------ ------------------------------ ----------------- ----------- ---------- cndba_p NONE PRIMARY DATABASE 2154617 0 cndba_far_sync cndba_p FAR SYNC INSTANCE 2151372 0 cndba_s cndba_far_sync PHYSICAL STANDBY 2151372 0 |
从上面可以看出,配置没有问题。
Cndba_p -> cndba_far_sync -> cndba_s
2.6 测试日志是否正常传输
-- 查看当前日志序列号
主库:
1 2 3 4 | SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 56 |
Far Sync 实例 :
1 2 3 4 | SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 56 |
备库:
1 2 3 4 | SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 56 |
-- 手动切换日志
1 2 | SQL> alter system switch logfile; System altered. |
-- 再次查看备库和 Far Sync 实例的日志序列号
1 2 3 4 | SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#) -------------- 57 |
至此搭建Far Sync 结束了。
3 总结
\1. 由于Far Sync 存在单点故障,所以建议搭建两个及以上的 Far Sync 实例。默认只启用其中一个,只有当一个挂掉了,才会自动启用另一个。
\2. 主库建议配置一个备用的LOG_ARCHIVE_DEST_3 ,直接指向备库。在 LOG_ARCHIVE_DEST_2 不可用时,会启用 LOG_ARCHIVE_DEST_3 直接传输 redo 到备库。
\3. Far Sync 可大大减少主库的压力,特别是在一主多备的情况下。
\4. switchover/failover 对于 Far Sync 是透明的,不需要特殊配置,按正常切换即可。
更多详细信息,请参考:
概述
================
Active Data Guard Far Sync是Oracle 12c的新功能(也称为Far Sync Standby),Far Sync功能的实现是通过在距离主库(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 同步(synchronous)传输redo到Far Sync实例,然后Far Sync实例再将redo异步(asynchronous)传输到终端备库(Standby Database)。这样既可以保证零数据丢失又可以降低主库压力。Far Sync实例只有密码文件,init参数文件和控制文件,而没有数据文件。
如果redo 传输采用Maximum Availability模式,我们可以在距离生产中心(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database)同步(synchronous)传输redo到Far Sync实例,保证零数据丢失(zero data loss),同时主库和Far Sync距离较近,网络延时很小,因此对主库性能影响很小。然后Far Sync实例再将redo异步(asynchronous)发送到终端备库(Standby Database)。
如果redo 传输采用Maximum Performance模式,我们可以在距离生产中心(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 异步传输redo到Far Sync实例,然后Far Sync实例再负责传输redo到其他多个终端备库(Standby Database)。这样可以减少主库向多个终端备库(Standby Database)传输redo的压力(offload)。
Far Sync配置对于Data Guard 角色转换(role transitions)是透明的,即switchover/failover命令方式与12c之前相同。
考虑到可能发生Data Guard 角色转换,即switchover/failover,可以在距离备库较近的地方也配置Far Sync实例,这个Far Sync实例只有在当前的备库切换为主库后才启用。
考虑到Far Sync实例的单点故障,可以在距离主库交近的地点配置2个Far Sync实例,起到备用的作用。
本文重点是测试Far Sync安装配置。
Far Sync示意图
Oracle 12c Active Data Guard Far Sync 详细搭建过程
Active Far Sync是 12c的新功能(也称为Far Sync Standby),Far Sync功能的实现是通过在距离主库(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 同步(synchronous)传输redo到Far Sync实例,然后Far Sync实例再将redo异步(asynchronous)传输到终端备库(Standby Database)。这样既可以保证零数据丢失又可以降低主库压力。Far Sync实例只有密码文件,init参数文件和控制文件,而没有数据文件。
如果redo 传输采用Maximum Availability模式,我们可以在距离生产中心(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database)同步(synchronous)传输redo到Far Sync实例,保证零数据丢失(zero data loss),同时主库和Far Sync距离较近,网络延时很小,因此对主库性能影响很小。然后Far Sync实例再将redo异步(asynchronous)发送到终端备库(Standby Database)。
如果redo 传输采用Maximum Perfo ce模式,我们可以在距离生产中心(Primary Database)相对较近的地点配置Far Sync实例,主库(Primary Database) 异步传输redo到Far Sync实例,然后Far Sync实例再负责传输redo到其他多个终端备库(Standby Database)。这样可以减少主库向多个终端备库(Standby Database)传输redo的压力(offload)。
Far Sync配置对于Data Guard 角色转换(role transitions)是透明的,即switchover/failover命令方式与12c之前相同。
考虑到可能发生Data Guard 角色转换,即switchover/failover,可以在距离备库较近的地方也配置Far Sync实例,这个Far Sync实例只有在当前的备库切换为主库后才启用。
考虑到Far Sync实例的单点故障,可以在距离主库交近的地点配置2个Far Sync实例,起到备用的作用。
本文重点是测试Far Sync安装配置。
Far Sync 实例1 和 Far Sync 实例2 位于距离主库(Primary Database) 相对较近的地点,主库(PrimaryDatabase) 同步传输redo 到 Far Sync 实例 1 ,实现零数据丢失。 Far Sync 实例2 是备用实例,当 Far Sync 1 不可用时, Far Sync2 继续提供服务,达到高可用性。 Far Sync 实例异步传输redo 到远端的多个终端备库(Standby Database) , Far Sync 实例分担了主库传输 redo 的压力。
注:可以在距离终端备库 (Standby Database) 较近的地点配置 Far Sync 实例, 这个 Far Sync 实例只有在当前的备库切换为主库后才启用,本图中没有描述 。
创建active data guard方式与11.2相同,详细过程请参考
或者你可以直接访问:
下面只列出系统概述:
角色 | 主库(Primary Database) | Far Sync实例 | 备库(Standby Database) |
---|---|---|---|
地点 | 生成中心 | 距离生成中心较劲的灾备中心 | 距离生成中心较远的灾备中心 |
IP地址 | 192.168.0.30 | 192.168.0.202 | 192.168.0.98 |
DB_UNIQUE_NAME | orcl | orclfs | orcls |
数据库版本 | 12.2.0.1.0 | 12.2.0.1.0 | 12.2.0.1.0 |
备注:下面所有操作都是基于 le12c 的data guard 详细搭建过程》 中的环境。
Ø 创建Far Sync实例的控制文件,在主库上执行:
SQL> alter database create far sync instance controlfile as '/tmp/controlfs01.ctl';
Database altered.
Ø 创建Far Sync实例的pfile文件,在主库上执行:
SQL> create pfile='/tmp/initorclfs. ' from spfile;
File created.
Ø 将上面的控制文件和参数文件以及密码文件复制到Far Sync实例所在的服务器上:
orcl:/tmp@primary>scp initorclfs.ora controlfs01.ctl 192.168.0.98:/tmp
orcl: /u01/app/oracle/product/12.2.0/db_1/dbs>scp orapworcl 192.168.0.98:$ORACLE_HOME/dbs
Ø 在Far Sync服务器上将刚才传过来的密码文件重命名
orclfs:/u01/app/oracle/product/12.2.0/db_1/dbs@farsync>mv orapworcl orapworclfs
Ø 由于监听在上面搭建Data Guard的时候已经在主库上配置好,这里就不需要再配置,只需配置TNS。
主库TNS:
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
orclfs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.98)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclfs)
)
)
备库TNS:
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
orclfs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.98)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclfs)
)
)
Ø 这里重点是要配置Far Sync服务器上的监听和TNS,配置如下:
Far Sync 监听:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = farsync)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orclfs)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/db_1)
(SID_NAME = orclfs)
)
)
Far Sync TNS:
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
orcls =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcls)
)
)
orclfs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.98)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclfs)
)
)
主库(orcl) | |
---|---|
db_unique_name | orcl |
control_files | /data/oradata/orcl/control01.ctl, /data/oradata/orcl/control02.ctl |
fal_server | 'orcls ', 'orclfs ' |
log_arc _config | DG_CONFIG=(orcl,orclfs,orcls) |
log_archive_dest_1 | 'location=/data/oradata/orcl/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orcl' |
log_archive_dest_2 | 'service=orclfs sync affirm max_failure=1 alternate=log_archive_dest_3 valid_for=(online_logfiles,primary_role) db_unique_name=orclfs '备注:设置redo同步传输到Far Sync实例orclfs,并且dest_3为备用DEST |
log_archive_dest_state_3 | alternate |
log_archive_dest_3 | 'service=orcls async alternate=log_archive_dest_2 valid_for=(online_logfiles,primary_role) db_unique_name=orcls'备注:设置dest_3为备用DEST,当DEST_2不可用,redo通过异步传输的方式直接到备库 |
Far Sync实例(orclfs) | |
db_unique_name | orclfs |
control_files | /data/oradata/orclfs/controlfs01.ctl, /data/oradata/orcl/controlfs02.ctl |
fal_server | orcl |
log_archive_config | dg_config=(orcl,orclfs,orcls) |
log_archive_dest_1 | 'location=/data/oradata/orclfs/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orclfs' |
log_archive_dest_2 | 'service=orcls async valid_for=(standby_logfiles,standby_role) db_unique_name=orcls'备注:设置Far Sync实例异步传输redo到备库 |
log_file_name_convert | '/data/oradata/orcl','/data/oradata/orclfs' |
备库(orcls) | |
db_unique_name | orcls |
control_files | /data/oradata/orcls/control01.ctl, /data/oradata/orcls/control02.ctl |
fal_server | 'orcl','orclfs' |
log_archive_config | dg_config=(orcl,orclfs,orcls) |
log_archive_dest_1 | 'location=/data/oradata/orcls/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=orcls' |
log_archive_dest_2 | ''service=orcl valid_for=(online_logfiles,primary_role) db_unique_name=orcl' |
备注:尤其注意红色标记部分的配置,有些参数没在这里列出来则表示不需要修改。
根据上面的参数文件修改,我们需要把之前配置好的主备库重启使上面修改的参数生效。
别忘了在备库上开启实时同步:
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
备注:注意pdb也要启动起来
根据上面的Far Sync实例的pfile参数文件里的设置,在Far Sync服务器上创建相应的文件目录:
orclfs:/home/oracle@farsync>mkdir -p /u01/app/oracle/admin/orclfs/adump
orclfs:/home/oracle@farsync>mkdir -p /data/oradata/orclfs
Ø 先通过pfile创建spfile
SQL> create spfile from pfile='/tmp/initorclfs.ora';
File created.
Ø 通过spfile将Far Sync实例启动到nomount状态
SQL> startup nomount
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 8793496 bytes
Variable Size 297796200 bytes
Database Buffers 109051904 bytes
Redo Buffers 3788800 bytes
Ø 恢复控制文件
orclfs:/home/oracle@farsync>rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Thu Apr 12 09:03:00 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (not mounted)
RMAN> restore controlfile from '/tmp/controlfs01.ctl';
Starting restore at 2018/04/12 09:03:17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=34 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=/data/oradata/orclfs/controlfs01.ctl
output file name=/data/oradata/orclfs/controlfs02.ctl
Finished restore at 2018/04/12 09:03:18
备注:这里也可以直接将之前从主库传过来的控制文件拷贝到Far Sync实例对应控制文件位置下,然后直接启动到mount状态。
Ø 启动到mount状态
SQL> alter database mount;
Database altered.
Ø 创建standby redo log
这里我们不需要再创建standby redo log,因为在 中我们在主库上面已经早早的把standby redo log 创建好了。
如果之前没有创建过standby redo log,那么这里就需要添加,具体命令如下:
SQL> alter database add standby logfile thread 1 GROUP 10 '/data/oradata/orclfs/stb_redo10.log' size 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 11 '/data/oradata/orclfs/stb_redo11.log' size 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 12 '/data/oradata/orclfs/stb_redo12.log' size 200M;
Database altered.
SQL> alter database add standby logfile thread 1 GROUP 13 '/data/oradata/orclfs/stb_redo13.log' size 200M;
Database altered.
Ø 确认配置
SQL> set line 160
SQL> select * from v$dataguard_config;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
orcl NONE PRIMARY DATABASE 3597419 0
orclfs orcl FAR SYNC INSTANCE 3597433 0
orcls orclfs PHYSICAL STANDBY 3597433 0
此时Far Sync的实例存放路径
orclfs:/home/oracle@farsync>cd /data/oradata/orclfs/
orclfs:/data/oradata/orclfs@farsync>ll
total 1273264
-rw-r----- 1 oracle dba 5033472 Apr 12 09:05 archivelog1_40_972553740.dbf
-rw-r----- 1 oracle dba 1475584 Apr 12 09:05 archivelog1_41_972553740.dbf
-rw-r----- 1 oracle dba 18825216 Apr 12 12:51 controlfs01.ctl
-rw-r----- 1 oracle dba 18825216 Apr 12 12:51 controlfs02.ctl
-rw-r----- 1 oracle dba 209715712 Apr 12 12:44 stb_redo10.log
-rw-r----- 1 oracle dba 209715712 Apr 12 12:51 stb_redo11.log
-rw-r----- 1 oracle dba 209715712 Apr 12 12:50 stb_redo12.log
-rw-r----- 1 oracle dba 209715712 Apr 12 12:43 stb_redo13.log
从MAXIMUM PERFORMANCE调整到MAXIMUN AVAILABILITY
主库:
SQL> alter database set standby database to maximize availability;
Database altered
SQL> select protection_mode,protection_level from v$database;
PROTECTION_MODE PROTECTION_LEVEL
MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
Ø 主库switch log
Ø 主库alert log记录redo传输到Far Sync实例
Ø Fat Sync实例alter log记录FarSync实例接收到redo,并传输redo到备库
Ø 备库alert log记录接收到redo并recovery
如果只配置了一个Far sync实例,并且LOG_ARCHIVE_DEST_2参数指定了ALERTNATE选项,那么在Far Sync实例不可用的情况下,primary库自动将redo信息发送到LOG_ARCHIVE_DEST_3。即当Far Sync实例不可用,primary库绕过Far Sync实例(orclfs)直接发送redo到备库(orcls),保证传输的连续性,但是primary库保护模式从最大可用模式(MAXIMUM PERFORMANCE)降为最大性能模式(MAXIMUM PERFORMANCE)。
Ø 查看保护模式
Ø 中断Far Sync实例:
Far Sync alter log:
Ø Primary库redo切换
Primary库alter log:
以上日志说明primary发现LOG_ARCHIVE_DEST_2不可使用后,自动使用LOG_ARCHIVE_DEST_3,保证了redo继续传输到standby database。
Ø Far Sync实例启动后,primary自动使用Far Sync实例
Primary库alert log