我们经常将oracle rac数据库通过dataguard容灾到一个单实例数据库中,当生产库出现故障后可以将生产库切换到dg服务器上。而当生产库rac修复完成后,我们同样可以通过dg将数据回切到生产库中。
此次测试将单实例数据库通过dg转换为rac数据库,这个单实例是刚创建的,并不是由rac通过dg生成的。
在做dg之前需要安装完成grid,不需要创建数据库实例。在日志应用的时候必须只能是一个实例应用。
具体环境如下:
单实例库:
数据库版本:11.2.0.4.0
sid:suq
db_unique_name=suq
ip:192.168.56.35
hostname:11g1
rac数据库:
?
数据库版本:11.2.0.4.0
sid:suq1、suq2
db_unique_name=suq1
ip地址规划:
#PUBLIC
192.168.56.110 suq1
192.168.56.112 suq2
#VIP
192.168.56.111 suq1-vip
192.168.56.113 suq2-vip
#PRIV
172.168.1.21 suq1-priv
172.168.1.23 suq2-priv
#SCAN
192.168.56.25 suq-cluster-scan
具体步骤如下:
1.配置一些rac和dg的基本参数,包括:
修改主库force logging、创建standby logfile、创建密码文件并且拷贝到rac下、添加主库和备库的服务命名:
?
alter database force logging;
alter database add standby logfile group 4 ('/opt/oracle/oradata/suq/stand_redo04.log') size 50m;
alter database add standby logfile group 5 ('/opt/oracle/oradata/suq/stand_redo05.log') size 50m;
alter database add standby logfile group 6 ('/opt/oracle/oradata/suq/stand_redo06.log') size 50m;
alter database add standby logfile group 7 ('/opt/oracle/oradata/suq/stand_redo07.log') size 50m;
##
primary=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.35)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = suq)
)
)
standby=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = suq1)
(UR = A)
)
)
注意:standby端即rac端的ip地址写的是suq1的vip地址,而且需要加上(UR=A)选项,否则通过sqlplus连接不到rac实例。
?
2.生成standby端的oracle 参数文件,这一步参数里面的内容及其重要,必须写正确,特别是rac和dg的参数,目前我的rac有三个磁盘组
?
[grid@suq2 ~]$ asmcmd lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 3435 3329 0 3329 0 N BACKUP/ MOUNTED EXTERN N 512 4096 1048576 4305 1988 0 1988 0 N DATADG/ MOUNTED EXTERN N 512 4096 1048576 1458 1058 0 1058 0 Y SYSTEMDG/
?
下面是我写好的一个参数文件:
?
suq.__db_cache_size=335544320 suq.__java_pool_size=4194304 suq.__large_pool_size=4194304 suq.__oracle_base='/u01/app' suq.__pga_aggregate_target=335544320 suq.__sga_target=503316480 suq.__shared_io_pool_size=0 suq.__shared_pool_size=146800640 suq.__streams_pool_size=0 *.audit_file_dest='/u01/app/oracle/admin/suq' *.audit_trail='none' *.compatible='11.2.0.4.0' *.control_files='+DATADG/suq/control.ctl' *.db_block_size=8192 *.db_domain='' *.db_name='suq' *.db_recovery_file_dest='+BACKUP' *.db_recovery_file_dest_size=5218762752 *.diagnostic_dest='/u01/app/oracle' *.memory_target=838860800 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.undo_tablespace='UNDOTBS1' #### rac parameter suq1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.111)(PORT=1521))' suq2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.113)(PORT=1521))' suq1.undo_tablespace='UNDOTBS1' suq2.undo_tablespace='UNDOTBS2' suq1.remote_listener='suq-cluster-scan:1521' suq2.remote_listener='suq-cluster-scan:1521' suq1.instance_name=suq1 suq2.instance_name=suq2 suq1.instance_number=1 suq2.instance_number=2 *.cluster_database=true *.cluster_database_instances