Professional Documents
Culture Documents
Ydo Byranib
Ydo Byranib
V1.0
2013 年 10 月 22 日
Jian Zhang(张剑)
Oracle 全球技术支持
3.1 系统概述
角色 主库(Primary Database) Far Sync 实例 备库(Standby Database)
地点 生产中心 距离生产中心较近的的灾 距离生产中心较远的灾备
备中心 中心
IP 地址 192.0.2.31 192.0.2.33 192.0.2.32
DB_UNIQUE_NAME dg12cp dg12cfs dg12cs
数据库版本 12.1.0.1 12.1.0.1 12.1.0.1
3.2 创建配置主库
1. 打开主库 force logging:
SQL>ALTER DATABASE FORCE LOGGING;
2. 修改主库的初始化参数如下:
LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg12cp,dg12cs)'
LOG_ARCHIVE_DEST_1=
'LOCATION=/u01/app/oracle/archived_log
VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cp'
LOG_ARCHIVE_DEST_2=
'SERVICE=dg12cs LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cs'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_MAX_PROCESSES=10
6. 将密码文件从主库服务器拷贝到备库服务器,并且重命名:
$ mv orapwdg12cp orapwdg12cs
7. 在主库服务器和备库服务器, 编辑添加下面信息到$ORACLE_HOME/network/tnsnames.ora
dg12cp =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.31)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg12cp)
))
dg12cs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.32)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg12cs)
))
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dg12cs)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = dg12cs)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0/dbhome_1)
(SID_NAME = dg12cs)
))
3.3 创建配置备库
--创建 standby redo log,standby redo log 大小等于主库 online redo log 大小:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 11
('/u01/app/oracle/oradata/dg12cs/redo11.log') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 12
('/u01/app/oracle/oradata/dg12cs/redo12.log') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 13
('/u01/app/oracle/oradata/dg12cs/redo13.log') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 14
('/u01/app/oracle/oradata/dg12cs/redo14.log') SIZE 52428800;
主库(dg12cp)
DB_UNIQUE_NAME dg12cp
CONTROL_FILES /u01/app/oracle/oradata/dg12cp
FAL_SERVER dg12cs
LOG_ARCHIVE_CONFIG 'DG_CONFIG=(dg12cp,dg12cfs,dg12cs)'
LOG_ARCHIVE_DEST_1 'LOCATION=/u01/app/oracle/archived_log/dg12cp
VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cp'
LOG_ARCHIVE_DEST_2 'SERVICE=dg12cfs SYNC AFFIRM MAX_FAILURE=1
ALTERNATE=LOG_ARCHIVE_DEST_3
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cfs'
备注:设置 redo 同步传输到 FarSync 实例 dg12cfs,并且设置 DEST_3
为备用 DEST.
LOG_ARCHIVE_DEST_STATE_3 ALTERNATE
LOG_ARCHIVE_DEST_3 'SERVICE=dg12cs ASYNC ALTERNATE=LOG_ARCHIVE_DEST_2
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cs'
备注:设置 DEST_3 为备用 DEST,当 DEST_2 不可用,redo 通过异
步传输方式直接到备库。
Far Sync 实例(dg12cfs)
DB_UNIQUE_NAME dg12cfs
CONTROL_FILES /u01/app/oracle/oradata/dg12cfs
FAL_SERVER Dg12cp
LOG_ARCHIVE_DEST_1 'LOCATION=/u01/app/oracle/archived_log/dg12cfs
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=dg12cfs
LOG_ARCHIVE_DEST_2 LOG_ARCHIVE_DEST_2='SERVICE=dg12cs ASYNC
VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
DB_UNIQUE_NAME=dg12cs'
备注:设置 Far Sync 实例异步传输 redo 到备库。
备库(dg12cs)
DB_UNIQUE_NAME dg12cs
CONTROL_FILES /u01/app/oracle/oradata/dg12cs
FAL_SERVER dg12cfs,dg12cp
LOG_ARCHIVE_DEST_1 'LOCATION=/u01/app/oracle/archived_log/dg12cs
VALID_FOR=( ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=dg12cs
LOG_ARCHIVE_DEST_2 LOG_ARCHIVE_DEST_2='SERVICE=dg12cp ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cp'
在 Far Sync 实例创建 standby redo log,standby redo log 大小等于主库 online redo log 大小:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 21
('/u01/app/oracle/oradata/dg12cfs/redo11.log') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 22
('/u01/app/oracle/oradata/dg12cfs/redo12.log') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 23
('/u01/app/oracle/oradata/dg12cfs/redo13.log') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 24
('/u01/app/oracle/oradata/dg12cfs/redo14.log') SIZE 52428800;
4.4 确认配置
SQL> set linesize 160
SQL> select * from V$DATAGUARD_CONFIG;
5 案例测试
如果只配置了一个 Far Sync 实例, 并且 LOG_ARCHIVE_DEST_2 参数指定了 Alternate 选项,那么在 Far Sync
实例不可用的情况下,primary 库自动将 redo 信息发送到 LOG_ARCHIVE_DEST_3。即当 Far Sync 实例不
可用,primary 库绕过 Far Sync 实例(dg12cfs)直接发送 redo 到备库(dg12cs),保证 redo 传输的连续性,但是
primary 库保护模式从最大可用模式(Maximum Availability)降为最大性能模式(Maximum Performance) 。
测试#1 中只有一个 Far Sync 实例,如果出现问题,虽然能够保证 redo 直接传输到 standby 库,但是 primary
库保护模式从最大可用模式(Maximum Availability)降为最大性能模式(Maximum Performance) 。
因此我们可以在距离主库较近的地点设置 2 个 FarSync 实例保证高可用性。当一个 Far Sync 实例不可用,
primary 库自动使用备用 FarSync 库,并且 primary 库保护模式保持最大可用模式(Maximum Availability)
不变,零数据丢失。
DB_UNIQUE_NAME dg12cp
CONTROL_FILES /u01/app/oracle/oradata/dg12cp
FAL_SERVER Dg12cs
LOG_ARCHIVE_DEST_1 'LOCATION=/u01/app/oracle/archived_log/dg12cp
VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cp'
LOG_ARCHIVE_DEST_2 'SERVICE=dg12cfs SYNC AFFIRM MAX_FAILURE=1
ALTERNATE=LOG_ARCHIVE_DEST_3
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cfs'
备注:设置 DEST_3 为备用 DEST.
LOG_ARCHIVE_DEST_STATE_3 ALTERNATE
备注:设置为备用 DEST
LOG_ARCHIVE_DEST_3 'SERVICE=dg12cfs2 ASYNC ALTERNATE=LOG_ARCHIVE_DEST_2
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=dg12cfs2'
备注:DEST_3 设置为将 redo log 传输到备用 FarSync 实例,达到高可
以性。
Far Sync 实例(dg12cfs)
DB_UNIQUE_NAME dg12cfs
CONTROL_FILES /u01/app/oracle/oradata/dg12cfs
FAL_SERVER Dg12cp
LOG_ARCHIVE_DEST_1 'LOCATION=/u01/app/oracle/archived_log/dg12cfs
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=dg12cfs
LOG_ARCHIVE_DEST_2 LOG_ARCHIVE_DEST_2='SERVICE=dg12cs ASYNC
VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
DB_UNIQUE_NAME=dg12cs'
备用 Far Sync 实例(dg12cfs2)
DB_UNIQUE_NAME dg12cfs2
CONTROL_FILES /u01/app/oracle/oradata/dg12cfs2
FAL_SERVER dg12cp
LOG_ARCHIVE_DEST_1 'LOCATION=/u01/app/oracle/archived_log/dg12cfs2
VALID_FOR=( ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=dg12cfs2
LOG_ARCHIVE_DEST_2 LOG_ARCHIVE_DEST_2='SERVICE=dg12cs ASYNC
VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
DB_UNIQUE_NAME=dg12cs'
-中断 Far Sync 实例:
SQL> shutdown abort
-备用 Far Sync 实例(dg12cfs2)Alert log 显示备用 Far Sync 实例继续传输 redo log
6 参考文档
http://docs.oracle.com/cd/E16655_01/server.121/e17640/create_fs.htm#CJAGJBBG
http://docs.oracle.com/cd/E16655_01/server.121/e17601/hafeatures.htm#CIHHJCGI
http://docs.oracle.com/cd/E16655_01/server.121/e17906/chapter1.htm#NEWFT302