ORACLE 11GR2 RAC TO RAC DATAGUARD 配置方案
--by lxx
1.1 前言
本文记录oracle 11gr2 Dataguard physical standby的配置过程。 主备数据库都是oracle 11gr2 rac环境,参数文件,控制文件,数据文件和归档日志都保存在ASM DG上面。采用Maximum Performance方式,即日志同步采取lgwr noaffirm方式。
1.2 环境规划
环境如下:
操作系统 主机名 数据库版本 集群版本 DB_NAME DB_UNIQUE_NAME instance_name service_name ORACLE_HOMEorcl1,orcl2 orcl /oracle/app/grid orcl1,orcl2 orclstd /oracle/app/grid 主库 Oracle Linux Server release 6.3 orcl1,orcl2 oracle 11.2.0.3 GI 11.2.0.3 orcl orcl 备库 Oracle Linux Server release 6.3 orclstd1,orclstd2 oracle 11.2.0.3 GI 11.2.0.3 orcl orclstd (GI) ORACLE_HOME(DB) 数据存储方式 文件管理 spfile目录 控制文件目录 数据文件目录 归档日志目录 监听端口 /oracle/app/oracle/product/11.2.0/db_1 ASM OMF +DATA +DATA +DATA +DATA 1521 /oracle/app/oracle/product/11.2.0/db_1 ASM OMF +DATA +DATA +DATA +DATA 1521
1.3 环境准备
主库:
? 双节点 11g R2 Grid Infrastructure (11.2.0.3)已经安装配置完毕; ? 双节点Oracel RAC Software (11.2.0.3)已经安装配置完毕; ? 集群数据库”orcl”已经创建于ASM 上; ? 数据库运行于归档模式;
备库:
? 双节点 11g R2 Grid Infrastructure (11.2.0.3)已经安装配置完毕 ? 双节点Oracel RAC Software (11.2.0.3)已经安装配置完毕;
主备库:
在各节点/etc/hosts加入两端主机名IP映射关系。
192.168.0.11 orcl1 192.168.0.13 orcl1-vip 10.0.0.11 orcl1-priv 192.168.0.12 orcl2 192.168.0.14 orcl2-vip 10.0.0.12 orcl2-priv 192.168.0.15 cluster-scan 192.168.0.21 orclstd1 192.168.0.23 orclstd1-vip 10.0.0.21 orclstd1-priv 192.168.0.22 orclstd2 192.168.0.24 orclstd2-vip 10.0.0.22 orclstd2-priv 192.168.0.25 clusterstd-scan
1.4 主库配置
1.4.1 打开force logging
SQL> ALTER DATABASE FORCE LOGGING; 1.4.2创建 Standby Redo 日志
Standy log 的推荐数目为:
(# of online redo logs per primary instance + 1) * # of instances
目前有两个节点,每个节点有两个日志组,每个日志成员大小为 64m,每个日志组里都有一个成员。所以下面给每个节点添加三个日志组:
select group#,thread#,bytes/1024/1024 \ from v$log; alter system set standby_file_management=manual scope=both sid='*'; alter database add standby logfile thread 1 group 5 ('+DATA') size 64m; alter database add standby logfile thread 1 group 6 ('+DATA') size 64m; alter database add standby logfile thread 1 group 7 ('+DATA') size 64m; alter database add standby logfile thread 2 group 8 ('+DATA') size 64m; alter database add standby logfile thread 2 group 9 ('+DATA') size 64m; alter database add standby logfile thread 2 group 10 ('+DATA') size 64m; alter system set standby_file_management=auto scope=both sid='*'; select group#,thread#,status from v$standby_log; 1.4.3 设置参数文件
--设置主备库数据文件路径对应关系 alter system set db_file_name_convert='+DATA','+DATA' scope=spfile sid='*'; alter system set log_file_name_convert='+DATA','+DATA' scope=spfile sid='*'; alter system set fal_client='orcl' scope=spfile sid='*'; alter system set fal_server='orclstd' scope=spfile sid='*'; --log_archive_config指定数据库唯一名 alter system set log_archive_config='DG_CONFIG=(orcl,orclstd)' scope=spfile sid='*'; alter system set log_archive_dest_1='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=spfile sid='*'; alter sid='*'; alter system set log_archive_dest_state_1=ENABLE scope=spfile sid='*'; alter system set log_archive_dest_state_2=ENABLE scope=spfile sid='*'; alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*'; alter system set log_archive_max_processes=10 scope=spfile sid='*'; alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile sid='*'; alter system set standby_file_management=auto scope=spfile sid='*'; --上面是归档切换时候采用apply redo的方式,如果改为lgwr传输方式,则使用下面语句: alter --重启数据库生效: $ srvctl stop database -d orcl $ srvctl start database -d orcl system set log_archive_dest_2='SERVICE=orclstd LGWR ASYNC NOAFIRM VALID_FOR(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclstd' scope=spfile sid='*'; system set log_archive_dest_2='SERVICE=orclstd DB_UNIQUE_NAME=orclstd' ARCH scope=spfile VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 1.4.4 设置DB的tnsnames.ora
--增加主备库的服务 orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = cluster-scan)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) (UR=A) ) ) orcl1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = orcl1-vip)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (UR=A) ) ) orcl2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = orcl2-vip)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (UR=A) ) ) orclstd = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = clusterstd-scan)(PORT = 1521)) (CONNECT_DATA =