Oracle 10G RAC与10G RAC Physical DG安装测试
环境准备如下
Primary RAC已经安装好数据库软件,创建好监听,ASM实例,并创建好RDBMS实例,开启归档,并开启force logging.
数据库名:RDPSDB
实例名:RDPSDB1,RDPSDB2
db_unique_name:RDPSDB
192.168.25.154 rac1
192.168.25.155 rac2
10.0.0.154 rac1-priv
10.0.0.155 rac2-priv
192.168.25.130 rac1-vip
192.168.25.131 rac2-vip
Standby RAC安装好数据库软件,仅创建好监听,ASM实例.
数据库名:RDPSDB
实例名:RDPSDB1,RDPSDB2
db_unique_name:RDPSDBST
192.168.25.211 vmrac1
192.168.25.212 vmrac2
10.10.10.11 vmrac1-priv
10.10.10.12 vmrac2-priv
192.168.25.213 vmrac1-vip
192.168.25.214 vmrac2-vip
1,配置主备库的tnsname.ora文件
主库节点tnsnames.ora
RDPSDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
)
)
RDPSDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
(INSTANCE_NAME = RDPSDB2)
)
)
RDPSDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
(INSTANCE_NAME = RDPSDB1)
)
)
LISTENERS_RDPSDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
# Added for config dataguard
RDPSDBST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
)
)
备库节点tnsnames.ora,根据主库的配置进行修改
RDPSDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
)
)
RDPSDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac2-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
(INSTANCE_NAME = RDPSDB2)
)
)
RDPSDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac1-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
(INSTANCE_NAME = RDPSDB1)
)
)
LISTENERS_RDPSDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vmrac2-vip)(PORT = 1521))
)
# Added for config dataguard
RDPSDBST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = RDPSDB)
)
)
注意2点:
1),这里配置备库的instance_name和主库一样,我们也可以设置不一样,参见单机DG的配置例子.
2),备库上RDPSDBST上HOST设置的是主库的主机名(IP).
2,修改主备库的pfile
主库:保持原主库的pfile不变,另外添加
db_unique_name='RDPSDB'
service_names='RDPSDB'
log_archive_config='dg_config=(RDPSDB,RDPSDBST)'
log_archive_dest_2='service=RDPSDBST valid_for=(online_logfiles,primary_role) db_unique_name=RDPSDBST'//注意:这里的service=RDPSDBST对应的是备库vmrac1,vmrac2,与前面tnsnames.ora文件对应的RDPSDBST配置一致.
db_file_name_convert='+DATA/RDPSDBST','+DATA/RDPSDB'
log_file_name_convert='+DATA/RDPSDBST','+DATA/RDPSDB'
standby_file_management='AUTO'
fal_server='RDPSDBST'
fal_client='RDPSDB'
备库:保持原主库pfile不变,在原主库的pfile中添加
db_unique_name='RDPSDBST'
service_names='RDPSDB'
log_archive_config='dg_config=(RDPSDB,RDPSDBST)'
log_archive_dest_2='service=RDPSDBST valid_for=(online_logfiles,primary_role) db_unique_name=RDPSDB'//注意:这里的service=RDPSDBST对应的是相对而言的备库(原主库)rac1,rac2,与前面tnsnames.ora文件对应的RDPSDBST配置一致.
db_file_name_convert='+DATA/RDPSDB','+DATA/RDPSDBST'
log_file_name_convert='+DATA/RDPSDB','+DATA/RDPSDBST'
standby_file_management='AUTO'
fal_server='RDPSDBST'
fal_client='RDPSDB'
同时修改control_files目录和log_archive_dest_1归档路径
*.control_files='+DATA/RDPSDBST/controlfile/current.272.774628713','+RECOVERY/RDPSDBST/controlfile/current.256.774628715'
*.log_archive_dest_1='location=+RECOVERY/RDPSDBST'
同时查看备库其他目录是否和主库保持一致,如果不一致,则需在备库两个节点另外创建,并修改相应的目录参数,如
[oracle@vmrac1 RDPSDB]$ pwd
/u01/app/oracle/admin/RDPSDB
[oracle@vmrac1 RDPSDB]$ ll
total 56
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:40 adump
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:40 bdump
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:40 cdump
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:40 dpdump
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:40 hdump
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:41 pfile
drwxr-xr-x 2 oracle dba 4096 Feb 10 15:40 udump
3,备份主库和控制文件,并拷贝至备库的相同备份目录下
RMAN> backup device type disk format '/home/oracle/%U' database plus archivelog;
RMAN> backup device type disk format '/home/oracle/%U' current controlfile for standby;
4,恢复
[oracle@vmrac1 ~]$ rman target auxiliary /
Recovery Manager: Release 10.2.0.1.0 - Production on Fri Feb 10 15:55:41 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: RDPSDB (DBID=1598052841)
connected to auxiliary database: RDPSDB (not mounted)
RMAN> duplicate target database for standby;
Starting Duplicate Db at 10-FEB-12
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=151 instance=RDPSDB1 devtype=DISK
contents of Memory Script:
{
restore clone standby controlfile;
sql clone 'alter database mount standby database';
}
executing Memory Script
Starting restore at 10-FEB-12
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /home/oracle/03n2vqru_1_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/home/oracle/03n2vqru_1_1 tag=TAG20120210T155334
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:23
output filename=+DATA/rdpsdbst/controlfile/current.257.774892559
output filename=+RECOVERY/rdpsdbst/controlfile/backup.256.774892565
Finished restore at 10-FEB-12
sql statement: alter database mount standby database
released channel: ORA_AUX_DISK_1
contents of Memory Script:
{
set newname for tempfile 1 to
"+DATA/rdpsdbst/tempfile/temp.275.774628745";
switch clone tempfile all;
set newname for datafile 1 to
"+DATA/rdpsdbst/datafile/system.268.774628557";
set newname for datafile 2 to
"+DATA/rdpsdbst/datafile/undotbs1.270.774628559";
set newname for datafile 3 to
"+DATA/rdpsdbst/datafile/sysaux.269.774628557";
set newname for datafile 4 to
"+DATA/rdpsdbst/datafile/users.271.774628559";
set newname for datafile 5 to
"+DATA/rdpsdbst/datafile/example.276.774628751";
set newname for datafile 6 to
"+DATA/rdpsdbst/datafile/undotbs2.277.774628893";
restore
check readonly
clone database
;
}
executing Memory Script
executing command: SET NEWNAME
renamed temporary file 1 to +DATA/rdpsdbst/tempfile/temp.275.774628745 in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 10-FEB-12
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=151 instance=RDPSDB1 devtype=DISK
channel ORA_AUX_DISK_1: starting datafile backupset restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to +DATA/rdpsdbst/datafile/system.268.774628557
restoring datafile 00002 to +DATA/rdpsdbst/datafile/undotbs1.270.774628559
restoring datafile 00003 to +DATA/rdpsdbst/datafile/sysaux.269.774628557
restoring datafile 00004 to +DATA/rdpsdbst/datafile/users.271.774628559
restoring datafile 00005 to +DATA/rdpsdbst/datafile/example.276.774628751
restoring datafile 00006 to +DATA/rdpsdbst/datafile/undotbs2.277.774628893
channel ORA_AUX_DISK_1: reading from backup piece /home/oracle/01n2vnqp_1_1
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/home/oracle/01n2vnqp_1_1 tag=TAG20120210T150143
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:16:56
Finished restore at 10-FEB-12
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy recid=8 stamp=774893599 filename=+DATA/rdpsdbst/datafile/system.258.774892587
datafile 2 switched to datafile copy
input datafile copy recid=9 stamp=774893599 filename=+DATA/rdpsdbst/datafile/undotbs1.261.774892593
datafile 3 switched to datafile copy
input datafile copy recid=10 stamp=774893599 filename=+DATA/rdpsdbst/datafile/sysaux.259.774892591
datafile 4 switched to datafile copy
input datafile copy recid=11 stamp=774893599 filename=+DATA/rdpsdbst/datafile/users.263.774892595
datafile 5 switched to datafile copy
input datafile copy recid=12 stamp=774893599 filename=+DATA/rdpsdbst/datafile/example.260.774892593
datafile 6 switched to datafile copy
input datafile copy recid=13 stamp=774893599 filename=+DATA/rdpsdbst/datafile/undotbs2.262.774892593
Finished Duplicate Db at 10-FEB-12
RMAN>
5,创建standby logfile
在standby的任意节点上
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/rdpsdbst/onlinelog/group_2.274.774628729
+RECOVERY/rdpsdb/onlinelog/group_2.258.774628737
+DATA/rdpsdbst/onlinelog/group_1.273.774628717
+RECOVERY/rdpsdb/onlinelog/group_1.257.774628723
+DATA/rdpsdbst/onlinelog/group_3.278.774628923
+RECOVERY/rdpsdb/onlinelog/group_3.259.774628929
+DATA/rdpsdbst/onlinelog/group_4.279.774628937
+RECOVERY/rdpsdb/onlinelog/group_4.260.774628943
8 rows selected.
SQL> alter database add standby logfile thread 1 group 5 size 50M;
Database altered.
SQL> alter database add standby logfile thread 1 group 6 size 50M;
Database altered.
SQL> alter database add standby logfile thread 1 group 7 size 50M;
Database altered.
SQL> alter database add standby logfile thread 2 group 8 size 50M;
Database altered.
SQL> alter database add standby logfile thread 2 group 9 size 50M;
Database altered.
SQL> alter database add standby logfile thread 2 group 10 size 50M;
Database altered.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/rdpsdbst/onlinelog/group_2.274.774628729
+RECOVERY/rdpsdb/onlinelog/group_2.258.774628737
+DATA/rdpsdbst/onlinelog/group_1.273.774628717
+RECOVERY/rdpsdb/onlinelog/group_1.257.774628723
+DATA/rdpsdbst/onlinelog/group_3.278.774628923
+RECOVERY/rdpsdb/onlinelog/group_3.259.774628929
+DATA/rdpsdbst/onlinelog/group_4.279.774628937
+RECOVERY/rdpsdb/onlinelog/group_4.260.774628943
+DATA/rdpsdbst/onlinelog/group_5.264.774894019
+RECOVERY/rdpsdbst/onlinelog/group_5.257.774894027
+DATA/rdpsdbst/onlinelog/group_6.265.774894061
MEMBER
--------------------------------------------------------------------------------
+RECOVERY/rdpsdbst/onlinelog/group_6.258.774894069
+DATA/rdpsdbst/onlinelog/group_7.266.774894099
+RECOVERY/rdpsdbst/onlinelog/group_7.259.774894107
+DATA/rdpsdbst/onlinelog/group_8.267.774894163
+RECOVERY/rdpsdbst/onlinelog/group_8.260.774894171
+DATA/rdpsdbst/onlinelog/group_9.268.774894193
+RECOVERY/rdpsdbst/onlinelog/group_9.261.774894205
+DATA/rdpsdbst/onlinelog/group_10.269.774894225
+RECOVERY/rdpsdbst/onlinelog/group_10.262.774894235
20 rows selected.