在上一篇文章Oracle 10g RAC 配置物理dataguard系列2:备库安装、升级oracle软件、配置ASM实例
中,我们已经在物理备库上顺利安装、升级oracle软件同RAC主库版本一致的10.2.0.5,并且配置好ASM实例,这些准备工作一切就绪之后。接下来,我们需要在物理备库机器上一步一步的配置physical dataguard。
1 主库执行RMAN备份的准备工作:
其实,在配置physical standby dataguard时,主库必须要置于归档模式,且建议将数据库也置于FORCE LOGGING模式。在这里,我们在系列一文章里查看主库基本信息中,已经看到这些已经准备就绪。否则,需要将主库置于归档+FORCE LOGGING模式,在这里就省略这一步骤,当然我们也可以通过下述得以确认。在主库的第一个节点上执行:
[root@oracle-rac1 ~]# su - oracle
[oracle@oracle-rac1 ~]$ . oraenv
ORACLE_SID = [oracle] ? glndb
[oracle@oracle-rac1 ~]$ export ORACLE_SID=glndb1
[oracle@oracle-rac1 ~]$ env | grep ORA
ORACLE_SID=glndb1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
[oracle@oracle-rac1 ~]$ /u01/app/oracle/product/10.2.0/crs/bin/crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.glndb.db application ONLINE ONLINE oracle-rac2
ora...._svc.cs application ONLINE ONLINE oracle-rac1
ora....db1.srv application ONLINE ONLINE oracle-rac2
ora....b1.inst application ONLINE ONLINE oracle-rac1
ora....b2.inst application ONLINE ONLINE oracle-rac2
ora....svc2.cs application ONLINE ONLINE oracle-rac2
ora....db2.srv application ONLINE ONLINE oracle-rac2
ora....SM1.asm application ONLINE ONLINE oracle-rac1
ora....C1.lsnr application ONLINE ONLINE oracle-rac1
ora....ac1.gsd application ONLINE ONLINE oracle-rac1
ora....ac1.ons application ONLINE ONLINE oracle-rac1
ora....ac1.vip application ONLINE ONLINE oracle-rac1
ora....SM2.asm application ONLINE ONLINE oracle-rac2
ora....C2.lsnr application ONLINE ONLINE oracle-rac2
ora....ac2.gsd application ONLINE ONLINE oracle-rac2
ora....ac2.ons application ONLINE ONLINE oracle-rac2
ora....ac2.vip application ONLINE ONLINE oracle-rac2
[oracle@oracle-rac1 ~]$
[oracle@oracle-rac1 ~]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Feb 16 10:27:39 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba
Connected.
SQL> select name,log_mode,force_logging from gv$database;
NAME LOG_MODE FOR
--------- ------------ ---
GLNDB ARCHIVELOG YES
GLNDB ARCHIVELOG YES
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string glndb1
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string glndb
SQL> set line 160
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 7706 52428800 1 NO CURRENT 445956133 16-FEB-12
2 1 7705 52428800 1 YES INACTIVE 445918203 15-FEB-12
4 2 3273 52428800 1 NO CURRENT 445956150 16-FEB-12
5 2 3272 52428800 1 YES INACTIVE 445817248 15-FEB-12
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string location=/home/oracle/arch1
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9 string
log_archive_dest_state_1 string defer
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest string
log_archive_format string ARC_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL> alter system set log_archive_dest_2='location=/home/oracle/arch1 valid_for=(all_logfiles,all_roles) db_unique_name=glndb' sid='glndb1';
System altered.
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string location=/home/oracle/arch1 va
lid_for=(all_logfiles,all_role
s) db_unique_name=glndb
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string defer
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string ARC_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL>
节点2连接SQL*PLUS登录数据库:
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string glndb2
SQL> show parameter db_unique_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_unique_name string glndb
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string location=/home/oracle/arch2
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9 string
log_archive_dest_state_1 string DEFER
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_duplex_dest string
log_archive_format string ARC_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL> alter system set log_archive_dest_2='location=/home/oracle/arch2 valid_for=(all_logfiles,all_roles) db_unique_name=glndb' sid='glndb2';
System altered.
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string location=/home/oracle/arch2 va
lid_for=(all_logfiles,all_role
s) db_unique_name=glndb
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string DEFER
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string ARC_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL>
我们分别修改了两个节点的归档路径,节点1的归档指向/home/oracle/arch1,节点2的归档指向/home/oracle/arch2,这两个路径事先已经建好,这一步骤必须完成!
由于我们的RAC主库归档路径都各自指向本地存储,并没有放到共享存储上,所以,这里我们在用RMAN做备份的时候,需要连接到每个实例上进行备份。我们备份的路径分别指向每台机器的/oracle_backup,且在每个节点上也事先建好/oracle_backup路径,且确保oracle用户有对该路径的路写权限!
接下来,在节点1上执行备份,注意下述的rman备份命令中的GLNDB2连接字符串是连接到节点2的实例上,已经在节点1的/u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora事先配置好。
[oracle@oracle-rac1 ~]$ cat /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
GLNDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.36)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = glndb)
(INSTANCE_NAME = glndb2)
)
)
GLNDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.35)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = glndb)
(INSTANCE_NAME = glndb1)
)
)
GLNDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.35)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.36)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = glndb)
)
)
[oracle@oracle-rac1 ~]$
2 节点1上开始执行主库的RMAN备份:
[oracle@oracle-rac1 ~]$ env | grep ORA
ORACLE_SID=glndb1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
[oracle@oracle-rac1 ~]$ rman
Recovery Manager: Release 10.2.0.5.0 - Production on Thu Feb 16 11:01:19 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: GLNDB (DBID=3995745524)
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_glndb1.f'; # default
RMAN> list archivelog all;
using target database control file instead of recovery catalog
specification does not match any archive log in the recovery catalog
RMAN> list backup;
RMAN> report schema;
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 6039 SYSTEM *** +ORADATA/glndb/datafile/system.260.726057851
3 1290 SYSAUX *** +ORADATA/glndb/datafile/sysaux.262.726057863
4 150 UNDOTBS2 *** +ORADATA/glndb/datafile/undotbs2.264.726057869
5 2 USERS *** +ORADATA/glndb/datafile/users.265.726057871
6 30 UNDOTBS3 *** +ORADATA/glndb/datafile/undotbs3.268.774870843
169 2 EXAMPLE *** +ORADATA/glndb/datafile/example.435.756233417
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 10 TEMP 32767 +ORADATA/glndb/tempfile/temp.263.726057865
RMAN> run {
2> allocate channel c1 device type disk format '/oracle_backup/full_%U' connect sys/oracle@glndb1;
3> allocate channel c2 device type disk format '/oracle_backup/full_%U' connect sys/oracle@glndb2;
4> backup database plus archivelog;
5> release channel c1;
6> release channel c2;
7> }
allocated channel: c1
channel c1: sid=396 instance=glndb1 devtype=DISK
allocated channel: c2
channel c2: sid=399 instance=glndb2 devtype=DISK
Starting backup at 2012/02/16 11:07:39
current log archived
channel c1: starting archive log backupset
channel c1: specifying archive log(s) in backup set
input archive log thread=1 sequence=7706 recid=2116 stamp=775393668
channel c1: starting piece 1 at 2012/02/16 11:07:50
channel c2: starting archive log backupset
channel c2: specifying archive log(s) in backup set
input archive log thread=2 sequence=3273 recid=2115 stamp=775393663
channel c2: starting piece 1 at 2012/02/16 11:07:46
channel c1: finished piece 1 at 2012/02/16 11:07:52
piece handle=/oracle_backup/full_1mn3f4c6_1_1 tag=TAG20120216T110749 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:02
channel c2: finished piece 1 at 2012/02/16 11:07:55
piece handle=/oracle_backup/full_1nn3f4c2_1_1 tag=TAG20120216T110749 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:09
Finished backup at 2012/02/16 11:07:59
Starting backup at 2012/02/16 11:08:00
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
input datafile fno=00001 name=+ORADATA/glndb/datafile/system.260.726057851
input datafile fno=00005 name=+ORADATA/glndb/datafile/users.265.726057871
input datafile fno=00169 name=+ORADATA/glndb/datafile/example.435.756233417
channel c1: starting piece 1 at 2012/02/16 11:08:04
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
input datafile fno=00003 name=+ORADATA/glndb/datafile/sysaux.262.726057863
input datafile fno=00004 name=+ORADATA/glndb/datafile/undotbs2.264.726057869
input datafile fno=00006 name=+ORADATA/glndb/datafile/undotbs3.268.774870843
channel c2: starting piece 1 at 2012/02/16 11:08:00
channel c2: finished piece 1 at 2012/02/16 11:10:48
piece handle=/oracle_backup/full_1pn3f4cg_1_1 tag=TAG20120216T110803 comment=NONE
channel c2: backup set complete, elapsed time: 00:02:48
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
including current control file in backupset
channel c2: starting piece 1 at 2012/02/16 11:10:58
channel c2: finished piece 1 at 2012/02/16 11:11:06
piece handle=/oracle_backup/full_1qn3f4hp_1_1 tag=TAG20120216T110803 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:17
channel c2: starting full datafile backupset
channel c2: specifying datafile(s) in backupset
including current SPFILE in backupset
channel c2: starting piece 1 at 2012/02/16 11:11:07
channel c2: finished piece 1 at 2012/02/16 11:11:08
piece handle=/oracle_backup/full_1rn3f4ib_1_1 tag=TAG20120216T110803 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
channel c1: finished piece 1 at 2012/02/16 11:13:19
piece handle=/oracle_backup/full_1on3f4ck_1_1 tag=TAG20120216T110803 comment=NONE
channel c1: backup set complete, elapsed time: 00:05:15
Finished backup at 2012/02/16 11:13:19
Starting backup at 2012/02/16 11:13:19
current log archived
channel c1: starting archive log backupset
channel c1: specifying archive log(s) in backup set
input archive log thread=1 sequence=7707 recid=2117 stamp=775393999
channel c1: starting piece 1 at 2012/02/16 11:13:23
channel c2: starting archive log backupset
channel c2: specifying archive log(s) in backup set
input archive log thread=2 sequence=3274 recid=2118 stamp=775393996
channel c2: starting piece 1 at 2012/02/16 11:13:19
channel c1: finished piece 1 at 2012/02/16 11:13:24
piece handle=/oracle_backup/full_1sn3f4mj_1_1 tag=TAG20120216T111323 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
channel c2: finished piece 1 at 2012/02/16 11:13:20
piece handle=/oracle_backup/full_1tn3f4mf_1_1 tag=TAG20120216T111323 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 2012/02/16 11:13:24
released channel: c1
released channel: c2
RMAN> list backup;
List of Backup Sets
===================
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
48 26.34M DISK 00:00:01 2012/02/16 11:07:51
BP Key: 48 Status: AVAILABLE Compressed: NO Tag: TAG20120216T110749
Piece Name: /oracle_backup/full_1mn3f4c6_1_1
List of Archived Logs in backup set 48
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
1 7706 445956133 2012/02/16 01:33:55 446024208 2012/02/16 11:07:43
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
49 10.56M DISK 00:00:07 2012/02/16 11:07:53
BP Key: 49 Status: AVAILABLE Compressed: NO Tag: TAG20120216T110749
Piece Name: /oracle_backup/full_1nn3f4c2_1_1
List of Archived Logs in backup set 49
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
2 3273 445956150 2012/02/16 01:33:53 446024205 2012/02/16 11:07:37
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
50 Full 1.08G DISK 00:02:45 2012/02/16 11:10:45
BP Key: 50 Status: AVAILABLE Compressed: NO Tag: TAG20120216T110803
Piece Name: /oracle_backup/full_1pn3f4cg_1_1
List of Datafiles in backup set 50
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ------------------- ----
3 Full 446024239 2012/02/16 11:08:00 +ORADATA/glndb/datafile/sysaux.262.726057863
4 Full 446024239 2012/02/16 11:08:00 +ORADATA/glndb/datafile/undotbs2.264.726057869
6 Full 446024239 2012/02/16 11:08:00 +ORADATA/glndb/datafile/undotbs3.268.774870843
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
51 Full 15.30M DISK 00:00:17 2012/02/16 11:11:06
BP Key: 51 Status: AVAILABLE Compressed: NO Tag: TAG20120216T110803
Piece Name: /oracle_backup/full_1qn3f4hp_1_1
Control File Included: Ckp SCN: 446024474 Ckp time: 2012/02/16 11:10:49
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
52 Full 80.00K DISK 00:00:01 2012/02/16 11:11:08
BP Key: 52 Status: AVAILABLE Compressed: NO Tag: TAG20120216T110803
Piece Name: /oracle_backup/full_1rn3f4ib_1_1
SPFILE Included: Modification time: 2012/02/16 10:47:30
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
53 Full 5.81G DISK 00:05:09 2012/02/16 11:13:13
BP Key: 53 Status: AVAILABLE Compressed: NO Tag: TAG20120216T110803
Piece Name: /oracle_backup/full_1on3f4ck_1_1
List of Datafiles in backup set 53
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- ------------------- ----
1 Full 446024221 2012/02/16 11:08:04 +ORADATA/glndb/datafile/system.260.726057851
5 Full 446024221 2012/02/16 11:08:04 +ORADATA/glndb/datafile/users.265.726057871
169 Full 446024221 2012/02/16 11:08:04 +ORADATA/glndb/datafile/example.435.756233417
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
54 46.50K DISK 00:00:00 2012/02/16 11:13:19
BP Key: 54 Status: AVAILABLE Compressed: NO Tag: TAG20120216T111323
Piece Name: /oracle_backup/full_1tn3f4mf_1_1
List of Archived Logs in backup set 54
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
2 3274 446024205 2012/02/16 11:07:37 446024635 2012/02/16 11:13:16
BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ -------------------
55 80.00K DISK 00:00:00 2012/02/16 11:13:23
BP Key: 55 Status: AVAILABLE Compressed: NO Tag: TAG20120216T111323
Piece Name: /oracle_backup/full_1sn3f4mj_1_1
List of Archived Logs in backup set 55
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
1 7707 446024208 2012/02/16 11:07:43 446024632 2012/02/16 11:13:19
RMAN>
到各个节点的/oracle_backup路径下确认备份文件信息:
节点1:
[oracle@oracle-rac1 ~]$ cd /oracle_backup/ && ls -lh
total 5.9G
-rw-r----- 1 oracle oinstall 27M Feb 16 11:07 full_1mn3f4c6_1_1
-rw-r----- 1 oracle oinstall 5.9G Feb 16 11:13 full_1on3f4ck_1_1
-rw-r----- 1 oracle oinstall 81K Feb 16 11:13 full_1sn3f4mj_1_1
[oracle@oracle-rac1 oracle_backup]$
节点2:
[oracle@oracle-rac2 oracle_backup]$ ll -h
total 1.2G
-rw-r----- 1 oracle oinstall 11M Feb 16 11:07 full_1nn3f4c2_1_1
-rw-r----- 1 oracle oinstall 1.1G Feb 16 11:10 full_1pn3f4cg_1_1
-rw-r----- 1 oracle oinstall 16M Feb 16 11:11 full_1qn3f4hp_1_1
-rw-r----- 1 oracle oinstall 96K Feb 16 11:11 full_1rn3f4ib_1_1
-rw-r----- 1 oracle oinstall 47K Feb 16 11:13 full_1tn3f4mf_1_1
[oracle@oracle-rac2 oracle_backup]$
3 节点1上生成物理备库控制文件:
RMAN> backup device type disk format '/oracle_backup/standby_ctl_%U' current controlfile for standby;
Starting backup at 2012/02/16 11:21:22
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=411 instance=glndb1 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including standby control file in backupset
channel ORA_DISK_1: starting piece 1 at 2012/02/16 11:21:26
channel ORA_DISK_1: finished piece 1 at 2012/02/16 11:21:33
piece handle=/oracle_backup/standby_ctl_1un3f55k_1_1 tag=TAG20120216T112123 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:09
Finished backup at 2012/02/16 11:21:33
RMAN>
确认物理备库控制文件信息:
[oracle@oracle-rac1 ~]$ cd /oracle_backup/ && ll
total 6140020
-rw-r----- 1 oracle oinstall 27619328 Feb 16 11:07 full_1mn3f4c6_1_1
-rw-r----- 1 oracle oinstall 6237437952 Feb 16 11:13 full_1on3f4ck_1_1
-rw-r----- 1 oracle oinstall 82432 Feb 16 11:13 full_1sn3f4mj_1_1
-rw-r----- 1 oracle oinstall 16056320 Feb 16 11:21 standby_ctl_1un3f55k_1_1
[oracle@oracle-rac1 oracle_backup]$
4 在主库创建物理备库的初始化参数文件:
[oracle@oracle-rac1 ~]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Feb 16 11:23:53 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba;
Connected.
SQL> show parameter instance_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string glndb1
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +ORADATA/glndb/spfileglndb.ora
SQL> create pfile='/oracle_backup/initpridb.ora' from spfile;
File created.
SQL> !
[oracle@oracle-rac1 ~]$ cd /oracle_backup/ && ll -h
total 5.9G
-rw-r----- 1 oracle oinstall 27M Feb 16 11:07 full_1mn3f4c6_1_1
-rw-r----- 1 oracle oinstall 5.9G Feb 16 11:13 full_1on3f4ck_1_1
-rw-r----- 1 oracle oinstall 81K Feb 16 11:13 full_1sn3f4mj_1_1
-rw-r--r-- 1 oracle oinstall 2.3K Feb 16 11:25 initpridb.ora
-rw-r----- 1 oracle oinstall 16M Feb 16 11:21 standby_ctl_1un3f55k_1_1
[oracle@oracle-rac1 oracle_backup]$
5 分别FTP两个节点上/oracle_backup下的所有文件到备库机器172.16.0.202上的/oracle_backup路径下,备库机器的/oracle_backup路径在系列2中创建磁盘的那一节里已经提到过,现在就派上了用场!
节点1上:
[oracle@oracle-rac1 oracle_backup]$ pwd
/oracle_backup
[oracle@oracle-rac1 oracle_backup]$ ll
total 6140028
-rw-r----- 1 oracle oinstall 27619328 Feb 16 11:07 full_1mn3f4c6_1_1
-rw-r----- 1 oracle oinstall 6237437952 Feb 16 11:13 full_1on3f4ck_1_1
-rw-r----- 1 oracle oinstall 82432 Feb 16 11:13 full_1sn3f4mj_1_1
-rw-r--r-- 1 oracle oinstall 2324 Feb 16 11:25 initpridb.ora
-rw-r----- 1 oracle oinstall 16056320 Feb 16 11:21 standby_ctl_1un3f55k_1_1
[oracle@oracle-rac1 oracle_backup]$ scp * oracle@172.16.0.202:/oracle_backup
The authenticity of host '172.16.0.202 (172.16.0.202)' can't be established.
RSA key fingerprint is 87:6f:ef:3c:d2:e9:6b:c2:11:36:3d:75:22:77:e2:f3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.0.202' (RSA) to the list of known hosts.
oracle@172.16.0.202's password:
full_1mn3f4c6_1_1 100% 26MB 2.6MB/s 00:10
full_1on3f4ck_1_1 100% 5948MB 2.0MB/s 49:29
full_1sn3f4mj_1_1 100% 81KB 80.5KB/s 00:00
initpridb.ora 100% 2324 2.3KB/s 00:00
standby_ctl_1un3f55k_1_1 100% 15MB 15.3MB/s 00:01
[oracle@oracle-rac1 oracle_backup]$
节点2上:
[oracle@oracle-rac2 ~]$ cd /oracle_backup/
[oracle@oracle-rac2 oracle_backup]$ ll
total 1155632
-rw-r----- 1 oracle oinstall 11072000 Feb 16 11:07 full_1nn3f4c2_1_1
-rw-r----- 1 oracle oinstall 1154891776 Feb 16 11:10 full_1pn3f4cg_1_1
-rw-r----- 1 oracle oinstall 16056320 Feb 16 11:11 full_1qn3f4hp_1_1
-rw-r----- 1 oracle oinstall 98304 Feb 16 11:11 full_1rn3f4ib_1_1
-rw-r----- 1 oracle oinstall 48128 Feb 16 11:13 full_1tn3f4mf_1_1
[oracle@oracle-rac2 oracle_backup]$ scp * oracle@172.16.0.202:/oracle_backup
The authenticity of host '172.16.0.202 (172.16.0.202)' can't be established.
RSA key fingerprint is 87:6f:ef:3c:d2:e9:6b:c2:11:36:3d:75:22:77:e2:f3.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.0.202' (RSA) to the list of known hosts.
oracle@172.16.0.202's password:
full_1nn3f4c2_1_1 100% 11MB 5.3MB/s 00:02
full_1pn3f4cg_1_1 100% 1101MB 1.8MB/s 10:15
full_1qn3f4hp_1_1 100% 15MB 7.7MB/s 00:02
full_1rn3f4ib_1_1 100% 96KB 96.0KB/s 00:00
full_1tn3f4mf_1_1 100% 47KB 47.0KB/s 00:00
[oracle@oracle-rac2 oracle_backup]$
物理备库机器上确认:
[oracle@ora10grac-dg ~]$ cd /oracle_backup/
[oracle@ora10grac-dg oracle_backup]$ ll
total 7295636
-rw-r----- 1 oracle oinstall 27619328 Feb 16 11:32 full_1mn3f4c6_1_1
-rw-r----- 1 oracle oinstall 11072000 Feb 16 11:35 full_1nn3f4c2_1_1
-rw-r----- 1 oracle oinstall 6237437952 Feb 16 12:22 full_1on3f4ck_1_1
-rw-r----- 1 oracle oinstall 1154891776 Feb 16 11:46 full_1pn3f4cg_1_1
-rw-r----- 1 oracle oinstall 16056320 Feb 16 11:46 full_1qn3f4hp_1_1
-rw-r----- 1 oracle oinstall 98304 Feb 16 11:46 full_1rn3f4ib_1_1
-rw-r----- 1 oracle oinstall 82432 Feb 16 12:22 full_1sn3f4mj_1_1
-rw-r----- 1 oracle oinstall 48128 Feb 16 11:46 full_1tn3f4mf_1_1
-rw-r--r-- 1 oracle oinstall 2324 Feb 16 12:22 initpridb.ora
drwx------ 2 oracle oinstall 16384 Feb 15 13:52 lost+found
-rw-r----- 1 oracle oinstall 16056320 Feb 16 12:22 standby_ctl_1un3f55k_1_1
[oracle@ora10grac-dg oracle_backup]$
6 在备库上使用orapwd命令创建口令文件,要确保sys用户或者具有sysdba系统权限用户的口令要同主库两个节点上sys用户的口令一致。为简单起见,也可以在主库两个节点上分别修改sys用户口令为一致,然后,直接拷贝主库任意节点的口令文件到备库$ORACLE_HOME/dbs路径下,并且重命名为orapwSID,其中SID为备库上实例名,这里备库SID为pridb,,所以口令文件名应该为orapwpridb。
这里,在RAC两个节点上分别修改sys用户口令,然后,cp节点1下的口令文件到物理备库172.16.0.202的$ORACLE_HOME/dbs路径下,然后在备库上重命名该文件:
节点1:
[oracle@oracle-rac1 dbs]$ pwd
/u01/app/oracle/product/10.2.0/db_1/dbs
[oracle@oracle-rac1 dbs]$ ll
total 15716
-rw-rw---- 1 oracle oinstall 1544 Feb 14 16:58 hc_glndb1.dat
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r--r-- 1 oracle oinstall 40 Dec 31 01:28 initglndb1.ora
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-r----- 1 oracle oinstall 2048 Feb 16 11:05 orapwglndb1
-rw-r----- 1 oracle oinstall 16007168 Feb 16 11:21 snapcf_glndb1.f
[oracle@oracle-rac1 dbs]$ scp orapwglndb1 172.16.0.202:/u01/app/oracle/dbs
oracle@172.16.0.202's password:
orapwglndb1 100% 2048 2.0KB/s 00:00
[oracle@oracle-rac1 dbs]$
物理备库:
[oracle@ora10grac-dg dbs]$ env | grep ORA
ORACLE_SID=pridb
ORACLE_BASE=/u01/app
ORACLE_TERM=xterm
ORACLE_HOME=/u01/app/oracle
[oracle@ora10grac-dg dbs]$ pwd
/u01/app/oracle/dbs
[oracle@ora10grac-dg dbs]$ ll
total 52
-rw-rw---- 1 oracle oinstall 577 Feb 15 16:12 ab_+ASM.dat
-rw-rw---- 1 oracle oinstall 1544 Feb 15 16:12 hc_+ASM.dat
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-rw---- 1 oracle oinstall 24 Feb 15 16:12 lk+ASM
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:12 orapw+ASM
-rw-r----- 1 oracle oinstall 2048 Feb 16 14:17 orapwglndb1
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:18 spfile+ASM.ora
[oracle@ora10grac-dg dbs]$ mv orapwglndb1 orapwpridb
[oracle@ora10grac-dg dbs]$ ll
total 52
-rw-rw---- 1 oracle oinstall 577 Feb 15 16:12 ab_+ASM.dat
-rw-rw---- 1 oracle oinstall 1544 Feb 15 16:12 hc_+ASM.dat
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-rw---- 1 oracle oinstall 24 Feb 15 16:12 lk+ASM
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:12 orapw+ASM
-rw-r----- 1 oracle oinstall 2048 Feb 16 14:17 orapwpridb
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:18 spfile+ASM.ora
[oracle@ora10grac-dg dbs]$
7 配置主备库3台机器上的tnsnames.ora文件,使之三个$ORACLE_HOME/network/admin/tnsnames.ora文件内容完全一致!修改后,如下:
[oracle@ora10grac-dg admin]$ pwd
/u01/app/oracle/network/admin
[oracle@ora10grac-dg admin]$ ll
total 16
-rw-r--r-- 1 oracle oinstall 468 Feb 15 09:16 listener.ora
drwxr-x--- 2 oracle oinstall 4096 Feb 14 16:28 samples
-rw-r--r-- 1 oracle oinstall 172 Dec 26 2003 shrept.lst
-rw-r--r-- 1 oracle oinstall 1017 Feb 16 14:31 tnsnames.ora
[oracle@ora10grac-dg admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
GLNDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.36)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = glndb)
(INSTANCE_NAME = glndb2)
)
)
GLNDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.35)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = glndb)
(INSTANCE_NAME = glndb1)
)
)
GLNDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.35)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.36)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = glndb)
)
)
PRIDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.0.202)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pridb)
)
)
[oracle@ora10grac-dg admin]$
8 确保主、备库3台机器上的listener工作正常,并且在备库上利用上述的tnsnames.ora文件来分别访问两个节点:
[oracle@ora10grac-dg admin]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Feb 16 15:06:40 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn human/hr@glndb
Connected.
SQL> conn human/hr@glndb1
Connected.
SQL> conn human/hr@glndb2
Connected.
SQL> conn sys/oracle@glndb as sysdba
Connected.
SQL> conn sys/oracle@glndb1 as sysdba
Connected.
SQL> conn sys/oracle@glndb2 as sysdba
Connected.
SQL>
9 在备库上修改初始化参数文件,去掉所有的RAC参数,修改后如下:
[oracle@ora10grac-dg dbs]$ pwd
/u01/app/oracle/dbs
[oracle@ora10grac-dg dbs]$ ll
total 52
-rw-rw---- 1 oracle oinstall 577 Feb 15 16:12 ab_+ASM.dat
-rw-rw---- 1 oracle oinstall 1544 Feb 15 16:12 hc_+ASM.dat
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-rw---- 1 oracle oinstall 24 Feb 15 16:12 lk+ASM
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:12 orapw+ASM
-rw-r----- 1 oracle oinstall 2048 Feb 16 14:17 orapwpridb
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:18 spfile+ASM.ora
[oracle@ora10grac-dg dbs]$ cp /oracle_backup/initpridb.ora .
[oracle@ora10grac-dg dbs]$ ll
total 56
-rw-rw---- 1 oracle oinstall 577 Feb 15 16:12 ab_+ASM.dat
-rw-rw---- 1 oracle oinstall 1544 Feb 15 16:12 hc_+ASM.dat
-rw-r--r-- 1 oracle oinstall 12920 May 3 2001 initdw.ora
-rw-r----- 1 oracle oinstall 8385 Sep 11 1998 init.ora
-rw-r--r-- 1 oracle oinstall 2324 Feb 16 15:16 initpridb.ora
-rw-rw---- 1 oracle oinstall 24 Feb 15 16:12 lk+ASM
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:12 orapw+ASM
-rw-r----- 1 oracle oinstall 2048 Feb 16 14:17 orapwpridb
-rw-r----- 1 oracle oinstall 1536 Feb 15 16:18 spfile+ASM.ora
[oracle@ora10grac-dg dbs]$ cat initpridb.ora
*.audit_file_dest='/u01/app/admin/pridb/adump'
*.background_dump_dest='/u01/app/admin/pridb/bdump'
*.cluster_database=false
*.compatible='10.2.0.5.0'
*.control_files='+ORADATA/pridb/controlfile'
*.core_dump_dest='/u01/app/admin/pridb/cdump'
*.db_block_size=8192
*.db_create_file_dest='+ORADATA'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_files=300
*.db_name='glndb'
*.db_unique_name='pridb'
*.disk_asynch_io=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=glndbXDB)'
*.event='10298 trace name context forever, level 32'
*.global_names=FALSE
*.job_queue_processes=10
*.log_archive_config='dg_config=(glndb,pridb)'
*.log_archive_dest_2='location=/home/oracle/arch2 valid_for=(all_logfiles,all_roles) db_unique_name=pridb'
*.log_archive_dest_1='service=glndb1 lgwr sync valid_for=(online_logfiles,primary_roles) db_unique_name=glndb'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='ARC_%t_%S_%r.arc'
*.nls_length_semantics='CHAR'
*.open_cursors=300
*.pga_aggregate_target=1034944512
*.processes=400
*.remote_login_passwordfile='exclusive'
*.sessions=445
*.sga_target=1610612736
*.thread=1
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS3'
*.user_dump_dest='/u01/app/admin/pridb/udump'
*.db_file_name_convert='+ORADATA/glndb/','+ORADATA/pridb/'
*.log_file_name_convert='+ORADATA/glndb/','+ORADATA/pridb/'
*.standby_file_management='auto'
*.fal_server='glndb1','glndb2'
*.fal_client='pridb'
*.service_names='pridb'
[oracle@ora10grac-dg dbs]$
依据上述的参数文件配置,在物理备库上建立相应的路径:
[oracle@ora10grac-dg ~]$ cd /u01/app/admin/
[oracle@ora10grac-dg admin]$ pwd
/u01/app/admin
[oracle@ora10grac-dg admin]$ ll
total 4
drwxr-x--- 6 oracle oinstall 4096 Feb 15 16:12 +ASM
[oracle@ora10grac-dg admin]$ mkdir -p pridb/{a,b,c,u}dump
[oracle@ora10grac-dg admin]$ ll
total 8
drwxr-x--- 6 oracle oinstall 4096 Feb 15 16:12 +ASM
drwxr-xr-x 6 oracle oinstall 4096 Feb 16 15:52 pridb
[oracle@ora10grac-dg admin]$ cd pridb/
[oracle@ora10grac-dg glndb]$ ll
total 16
drwxr-xr-x 2 oracle oinstall 4096 Feb 16 15:52 adump
drwxr-xr-x 2 oracle oinstall 4096 Feb 16 15:52 bdump
drwxr-xr-x 2 oracle oinstall 4096 Feb 16 15:52 cdump
drwxr-xr-x 2 oracle oinstall 4096 Feb 16 15:52 udump
[oracle@ora10grac-dg glndb~]$ mkdir -p /home/oracle/arch2
[oracle@ora10grac-dg glndb~]$
同时, 依据上述的参数文件配置,在物理备库的ASM实例中上建立相应的路径:
[root@ora10grac-dg ~]# su - oracle
[oracle@ora10grac-dg ~]$ export ORACLE_SID=+ASM
[oracle@ora10grac-dg ~]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Feb 16 16:25:00 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba
Connected.
SQL> select name from v$asm_diskgroup;
NAME
--------------------------------------------------------------------------------
ORADATA
SQL> alter diskgroup oradata add directory '+ORADATA/PRIDB';
Diskgroup altered.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@ora10grac-dg ~]$ asmcmd
ASMCMD> ls
ORADATA/
ASMCMD> cd oradata
ASMCMD> ls
PRIDB/
ASMCMD> exit
[oracle@ora10grac-dg ~]$
10 启动备库至nomount状态:
[root@ora10grac-dg ~]# su - oracle
[oracle@ora10grac-dg ~]$ env | grep ORA
ORACLE_SID=pridb
ORACLE_BASE=/u01/app
ORACLE_TERM=xterm
ORACLE_HOME=/u01/app/oracle
[oracle@ora10grac-dg ~]$ ps -ef | grep asm_
oracle 4074 1 0 Feb16 ? 00:00:05 asm_pmon_+ASM
oracle 4076 1 0 Feb16 ? 00:00:01 asm_psp0_+ASM
oracle 4078 1 0 Feb16 ? 00:00:01 asm_mman_+ASM
oracle 4080 1 0 Feb16 ? 00:00:01 asm_dbw0_+ASM
oracle 4082 1 0 Feb16 ? 00:00:01 asm_lgwr_+ASM
oracle 4084 1 0 Feb16 ? 00:00:01 asm_ckpt_+ASM
oracle 4086 1 0 Feb16 ? 00:00:01 asm_smon_+ASM
oracle 4088 1 0 Feb16 ? 00:00:01 asm_rbal_+ASM
oracle 4090 1 0 Feb16 ? 00:00:04 asm_gmon_+ASM
oracle 7431 7400 0 09:45 pts/2 00:00:00 grep asm_
[oracle@ora10grac-dg ~]$ ps -ef | grep ora_
oracle 7435 7400 0 09:45 pts/2 00:00:00 grep ora_
[oracle@ora10grac-dg ~]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Feb 17 09:45:50 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2096632 bytes
Variable Size 385876488 bytes
Database Buffers 1207959552 bytes
Redo Buffers 14680064 bytes
SQL> !
[oracle@ora10grac-dg ~]$ ps -ef | grep ora_
oracle 7440 1 0 09:45 ? 00:00:00 ora_pmon_pridb
oracle 7442 1 0 09:45 ? 00:00:00 ora_psp0_pridb
oracle 7444 1 4 09:45 ? 00:00:01 ora_mman_pridb
oracle 7446 1 0 09:45 ? 00:00:00 ora_dbw0_pridb
oracle 7448 1 0 09:45 ? 00:00:00 ora_lgwr_pridb
oracle 7450 1 0 09:45 ? 00:00:00 ora_ckpt_pridb
oracle 7452 1 0 09:45 ? 00:00:00 ora_smon_pridb
oracle 7454 1 0 09:45 ? 00:00:00 ora_reco_pridb
oracle 7456 1 0 09:45 ? 00:00:00 ora_cjq0_pridb
oracle 7458 1 0 09:45 ? 00:00:00 ora_mmon_pridb
oracle 7460 1 0 09:45 ? 00:00:00 ora_mmnl_pridb
oracle 7462 1 0 09:45 ? 00:00:00 ora_d000_pridb
oracle 7464 1 0 09:45 ? 00:00:00 ora_s000_pridb
oracle 7491 7466 0 09:46 pts/4 00:00:00 grep ora_
[oracle@ora10grac-dg ~]$
11 备库恢复:
首先,RMAN连接物理备库,恢复备库控制文件:
[oracle@ora10grac-dg ~]$ rlwrap rman target /
Recovery Manager: Release 10.2.0.5.0 - Production on Fri Feb 17 10:03:25 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: glndb (not mounted)
RMAN> restore standby controlfile from '/oracle_backup/standby_ctl_1un3f55k_1_1';
Starting restore at 2012/02/17 10:03:35
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=431 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
output filename=+ORADATA/pridb/control.ctl
Finished restore at 2012/02/17 10:03:44
RMAN> host;
[oracle@ora10grac-dg ~]$ export ORACLE_SID=+ASM
[oracle@ora10grac-dg ~]$ asmcmd
ASMCMD> ls
ORADATA/
ASMCMD> cd oradata
ASMCMD> ls
PRIDB/
ASMCMD> cd pridb
ASMCMD> ls
CONTROLFILE/
control.ctl
ASMCMD> cd controlfile
ASMCMD> ls
current.256.775476221
ASMCMD> exit
[oracle@ora10grac-dg ~]$ export ORACLE_SID=pridb
[oracle@ora10grac-dg ~]$ rlwrap sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Feb 17 10:06:01 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set line 160
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ -------------------------------------------- ------------------------------
control_file_record_keep_time integer 7
control_files string +ORADATA/pridb/control.ctl
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@ora10grac-dg ~]$ exit
exit
host command complete
RMAN>
然后,在确认物理备库控制文件恢复成功后,将物理备库置于MOUNT状态,接下来restore物理备库:
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN> run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> restore database;
5> release channel c1;
6> release channel c2;
7> }
allocated channel: c1
channel c1: sid=431 devtype=DISK
allocated channel: c2
channel c2: sid=430 devtype=DISK
Starting restore at 2012/02/17 10:14:18
channel c1: starting datafile backupset restore
channel c1: specifying datafile(s) to restore from backup set
restoring datafile 00003 to +ORADATA/pridb/datafile/sysaux.262.726057863
restoring datafile 00004 to +ORADATA/pridb/datafile/undotbs2.264.726057869
restoring datafile 00006 to +ORADATA/pridb/datafile/undotbs3.268.774870843
channel c1: reading from backup piece /oracle_backup/full_1pn3f4cg_1_1
channel c2: starting datafile backupset restore
channel c2: specifying datafile(s) to restore from backup set
restoring datafile 00001 to +ORADATA/pridb/datafile/system.260.726057851
restoring datafile 00005 to +ORADATA/pridb/datafile/users.265.726057871
restoring datafile 00169 to +ORADATA/pridb/datafile/example.435.756233417
channel c2: reading from backup piece /oracle_backup/full_1on3f4ck_1_1
channel c1: restored backup piece 1
piece handle=/oracle_backup/full_1pn3f4cg_1_1 tag=TAG20120216T110803
channel c1: restore complete, elapsed time: 00:19:47
channel c2: restored backup piece 1
piece handle=/oracle_backup/full_1on3f4ck_1_1 tag=TAG20120216T110803
channel c2: restore complete, elapsed time: 00:23:23
Finished restore at 2012/02/17 10:37:50
released channel: c1
released channel: c2
RMAN> exit
Recovery Manager complete.
[oracle@ora10grac-dg ~]$
其次,SQL*PLUS连接物理备库,确认状态:
[oracle@ora10grac-dg ~]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Feb 17 10:39:58 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba
Connected.
SQL> select name from v$datafile
2 union
3 select name from v$controlfile
4 union
5 select member from v$logfile
6 ;
NAME
--------------------------------------------------------------------------------
+ORADATA/pridb/control.ctl
+ORADATA/pridb/datafile/example.261.775476929
+ORADATA/pridb/datafile/sysaux.257.775476887
+ORADATA/pridb/datafile/system.258.775476897
+ORADATA/pridb/datafile/undotbs2.259.775476909
+ORADATA/pridb/datafile/undotbs3.262.775476939
+ORADATA/pridb/datafile/users.260.775476921
+ORADATA/pridb/onlinelog/group_1.257.726057849
+ORADATA/pridb/onlinelog/group_2.258.726057849
+ORADATA/pridb/onlinelog/group_4.266.726058757
+ORADATA/pridb/onlinelog/group_5.267.726058757
11 rows selected.
SQL> set line 160
SQL> select dbid,name,switchover_status,db_unique_name,database_role,open_mode,current_scn from v$database;
DBID NAME SWITCHOVER DB_UNIQUE_ DATABASE_ROLE OPEN_MODE CURRENT_SCN
---------- --------- ---------- ---------- -------------------- ---------- -----------
3995745524 GLNDB TO PRIMARY pridb PHYSICAL STANDBY MOUNTED 446025625
SQL>
最后,至此,物理备库已经成功恢复!
12 在备库上创建standby logfile:
创建之前:
SQL> col status for a10
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- ------------ ---------- ------------- -------------------
1 1 7708 52428800 1 NO CURRENT 446024632 2012/02/16 11:13:19
2 1 7707 52428800 1 YES INACTIVE 446024208 2012/02/16 11:07:43
4 2 3275 52428800 1 NO CURRENT 446024635 2012/02/16 11:13:16
5 2 3274 52428800 1 YES INACTIVE 446024205 2012/02/16 11:07:37
SQL> col member for a50
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_
---------- ---------- ---------------------------- -------------------------------------------------- ------------
1 ONLINE +ORADATA/pridb/onlinelog/group_1.257.726057849 NO
2 ONLINE +ORADATA/pridb/onlinelog/group_2.258.726057849 NO
4 ONLINE +ORADATA/pridb/onlinelog/group_4.266.726058757 NO
5 ONLINE +ORADATA/pridb/onlinelog/group_5.267.726058757 NO
SQL> select * from v$standby_log;
no rows selected
SQL>
开始创建:
SQL> alter database add standby logfile thread 1 group 3 size 50m,group 6 size 50m,group 7 size 50m;
Database altered.
SQL> alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;
Database altered.
SQL>
创建之后:
SQL> select * from v$standby_log;
GROUP# DBID THREAD# SEQUENCE# BYTES USED ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME LAST_CHANGE# LAST_TIME
---------- ---------- ---------- ---------- ---------- ---------- ------------ ---------- ------------- ------------------- ------------ -------------------
3 UNASSIGNED 1 0 52428800 512 YES UNASSIGNED 0 0
6 UNASSIGNED 1 0 52428800 512 YES UNASSIGNED 0 0
7 UNASSIGNED 1 0 52428800 512 YES UNASSIGNED 0 0
8 UNASSIGNED 2 0 52428800 512 YES UNASSIGNED 0 0
9 UNASSIGNED 2 0 52428800 512 YES UNASSIGNED 0 0
10 UNASSIGNED 2 0 52428800 512 YES UNASSIGNED 0 0
6 rows selected.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVERY_
---------- ---------- ---------------------------- -------------------------------------------------- ------------
1 ONLINE +ORADATA/pridb/onlinelog/group_1.257.726057849 NO
2 ONLINE +ORADATA/pridb/onlinelog/group_2.258.726057849 NO
3 STANDBY +ORADATA/pridb/onlinelog/group_3.263.775479203 NO
4 ONLINE +ORADATA/pridb/onlinelog/group_4.266.726058757 NO
5 ONLINE +ORADATA/pridb/onlinelog/group_5.267.726058757 NO
6 STANDBY +ORADATA/pridb/onlinelog/group_6.264.775479205 NO
7 STANDBY +ORADATA/pridb/onlinelog/group_7.265.775479205 NO
8 STANDBY +ORADATA/pridb/onlinelog/group_8.266.775479229 NO
9 STANDBY +ORADATA/pridb/onlinelog/group_9.267.775479229 NO
10 STANDBY +ORADATA/pridb/onlinelog/group_10.268.775479231 NO
10 rows selected.
SQL>
13 备库启动redo apply:
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> select sequence#,name,first_time,next_time,applied from v$archived_log;
no rows selected
SQL> col switchover_status for a16
SQL> select dbid,name,switchover_status,db_unique_name,database_role,open_mode,current_scn from v$database;
DBID NAME SWITCHOVER_STATU DB_UNIQUE_ DATABASE_ROLE OPEN_MODE CURRENT_SCN
---------- --------- ---------------- ---------- -------------------- ---------- -----------
3995745524 GLNDB SESSIONS ACTIVE pridb PHYSICAL STANDBY MOUNTED 446025625
SQL> select sequence#,name,first_time,next_time,applied from v$archived_log;
no rows selected
SQL>
发现,这时候,备库根本没有应用归档日志,且从alert日志里可以看到下述信息:
alter database add standby logfile thread 1 group 3 size 50m,group 6 size 50m,group 7 size 50m
Fri Feb 17 10:53:26 CST 2012
Completed: alter database add standby logfile thread 1 group 3 size 50m,group 6 size 50m,group 7 size 50m
Fri Feb 17 10:53:49 CST 2012
alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m
Fri Feb 17 10:53:51 CST 2012
Completed: alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m
Fri Feb 17 11:02:26 CST 2012
alter database recover managed standby database using current logfile disconnect from session
Fri Feb 17 11:02:26 CST 2012
Attempt to start background Managed Standby Recovery process (pridb)
MRP0 started with pid=16, OS id=7915
Fri Feb 17 11:02:26 CST 2012
MRP0: Background Managed Standby Recovery process started (pridb)
Managed Standby Recovery starting Real Time Apply
parallel recovery started with 3 processes
Fri Feb 17 11:02:33 CST 2012
Waiting for all non-current ORLs to be archived...
Fri Feb 17 11:02:33 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '+ORADATA/pridb/onlinelog/group_1.257.726057849'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_1.257.726057849
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_1.257.726057849' does not exist
Fri Feb 17 11:02:33 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '+ORADATA/pridb/onlinelog/group_1.257.726057849'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_1.257.726057849
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_1.257.726057849' does not exist
Clearing online redo logfile 1 +ORADATA/pridb/onlinelog/group_1.257.726057849
Clearing online log 1 of thread 1 sequence number 7708
Fri Feb 17 11:02:33 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '+ORADATA/pridb/onlinelog/group_1.257.726057849'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_1.257.726057849
ORA-15173: entry 'group_1.257.726057849' does not exist in directory 'onlinelog'
Deleted Oracle managed file +ORADATA/pridb/onlinelog/group_1.257.726057849
Fri Feb 17 11:02:33 CST 2012
Completed: alter database recover managed standby database using current logfile disconnect from session
Fri Feb 17 11:02:35 CST 2012
Clearing online redo logfile 1 complete
Fri Feb 17 11:02:35 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '+ORADATA/pridb/onlinelog/group_2.258.726057849'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_2.258.726057849
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_2.258.726057849' does not exist
Fri Feb 17 11:02:35 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '+ORADATA/pridb/onlinelog/group_2.258.726057849'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_2.258.726057849
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_2.258.726057849' does not exist
Clearing online redo logfile 2 +ORADATA/pridb/onlinelog/group_2.258.726057849
Clearing online log 2 of thread 1 sequence number 7707
Fri Feb 17 11:02:35 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '+ORADATA/pridb/onlinelog/group_2.258.726057849'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_2.258.726057849
ORA-15173: entry 'group_2.258.726057849' does not exist in directory 'onlinelog'
Deleted Oracle managed file +ORADATA/pridb/onlinelog/group_2.258.726057849
Clearing online redo logfile 2 complete
Fri Feb 17 11:02:35 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 4 of thread 2
ORA-00312: online log 4 thread 2: '+ORADATA/pridb/onlinelog/group_4.266.726058757'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_4.266.726058757
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_4.266.726058757' does not exist
Fri Feb 17 11:02:35 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 4 of thread 2
ORA-00312: online log 4 thread 2: '+ORADATA/pridb/onlinelog/group_4.266.726058757'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_4.266.726058757
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_4.266.726058757' does not exist
Clearing online redo logfile 4 +ORADATA/pridb/onlinelog/group_4.266.726058757
Clearing online log 4 of thread 2 sequence number 3275
Fri Feb 17 11:02:35 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 4 of thread 2
ORA-00312: online log 4 thread 2: '+ORADATA/pridb/onlinelog/group_4.266.726058757'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_4.266.726058757
ORA-15173: entry 'group_4.266.726058757' does not exist in directory 'onlinelog'
Deleted Oracle managed file +ORADATA/pridb/onlinelog/group_4.266.726058757
Clearing online redo logfile 4 complete
Fri Feb 17 11:02:36 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 5 of thread 2
ORA-00312: online log 5 thread 2: '+ORADATA/pridb/onlinelog/group_5.267.726058757'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_5.267.726058757
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_5.267.726058757' does not exist
Fri Feb 17 11:02:36 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 5 of thread 2
ORA-00312: online log 5 thread 2: '+ORADATA/pridb/onlinelog/group_5.267.726058757'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_5.267.726058757
ORA-15012: ASM file '+ORADATA/pridb/onlinelog/group_5.267.726058757' does not exist
Clearing online redo logfile 5 +ORADATA/pridb/onlinelog/group_5.267.726058757
Clearing online log 5 of thread 2 sequence number 3274
Fri Feb 17 11:02:36 CST 2012
Errors in file /u01/app/admin/pridb/bdump/pridb_mrp0_7915.trc:
ORA-00313: open failed for members of log group 5 of thread 2
ORA-00312: online log 5 thread 2: '+ORADATA/pridb/onlinelog/group_5.267.726058757'
ORA-17503: ksfdopn:2 Failed to open file +ORADATA/pridb/onlinelog/group_5.267.726058757
ORA-15173: entry 'group_5.267.726058757' does not exist in directory 'onlinelog'
Deleted Oracle managed file +ORADATA/pridb/onlinelog/group_5.267.726058757
Clearing online redo logfile 5 complete
Media Recovery Waiting for thread 1 sequence 7707
从上述的错误信息,可以看到备库整等待主库第一个节点上的日志号为7707的日志。其它的错误信息提示是指备库第一次置于recover状态时,备库将生成对应的online redo log,这是正常的,可不必理会。
14 调整主库参数,使主库上的归档日志可以顺利传递到备库上去,其中也包括在主库备份完成到备库置于recover状态之间主库产生的归档日志,及archive log gap。
[oracle@oracle-rac1 ~]$ env | grep ORA
ORACLE_SID=glndb1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
[oracle@oracle-rac1 ~]$ sqlplus
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Feb 17 11:14:17 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
SQL> conn / as sysdba;
Connected.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 7710 52428800 1 YES INACTIVE 446188257 17-FEB-12
2 1 7711 52428800 1 NO CURRENT 446237897 17-FEB-12
4 2 3277 52428800 1 YES INACTIVE 446178255 17-FEB-12
5 2 3278 52428800 1 NO CURRENT 446238085 17-FEB-12
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_2 string location=/home/oracle/arch1 va
lid_for=(all_logfiles,all_role
s) db_unique_name=glndb
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string defer
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string ARC_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL> alter system set log_archive_dest_1='service=pridb lgwr sync valid_for=(online_logfiles,primary_role) db_unique_name=pridb' sid='*';
System altered.
SQL> alter system set log_archive_dest_state_1='enable';
System altered.
SQL> alter system set log_archive_config='dg_config=(glndb,pridb)' sid='*';
System altered.
SQL> show parameter log_archive
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_config string dg_config=(glndb,pridb)
log_archive_dest string
log_archive_dest_1 string service=pridb lgwr sync valid_
for=(online_logfiles,primary_r
ole) db_unique_name=pridb
log_archive_dest_10 string
log_archive_dest_2 string location=/home/oracle/arch1 va
lid_for=(all_logfiles,all_role
s) db_unique_name=glndb
log_archive_dest_3 string
log_archive_dest_4 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string ARC_%t_%S_%r.arc
log_archive_local_first boolean TRUE
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean FALSE
log_archive_trace integer 0
SQL> show parameter fal
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fal_client string
fal_server string
SQL> alter system set fal_server='pridb' sid='*';
System altered.
SQL> alter system set fal_client='glndb1' sid='*';
System altered.
SQL> alter system set fal_client='glndb1' sid='glndb1';
System altered.
SQL> alter system set fal_client='glndb2' sid='glndb2';
System altered.
SQL>
配置完主库的归档参数之后,在主库节点1上尝试切换日志,到备库上查看是否可以正常接收主库传递过来的归档日志?
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 7710 52428800 1 YES INACTIVE 446188257 17-FEB-12
2 1 7711 52428800 1 NO CURRENT 446237897 17-FEB-12
4 2 3277 52428800 1 YES INACTIVE 446178255 17-FEB-12
5 2 3278 52428800 1 NO CURRENT 446238085 17-FEB-12
SQL> alter system switch logfile;
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 7712 52428800 1 NO CURRENT 446238670 17-FEB-12
2 1 7711 52428800 1 YES ACTIVE 446237897 17-FEB-12
4 2 3277 52428800 1 YES INACTIVE 446178255 17-FEB-12
5 2 3278 52428800 1 NO CURRENT 446238085 17-FEB-12
SQL> !
[oracle@oracle-rac1 ~]$ cd /home/oracle/arch1/ && ll -h
total 134M
-rw-rw---- 1 oracle oinstall 27M Feb 16 11:07 ARC_1_0000007706_726057844.arc
-rw-r----- 1 oracle oinstall 79K Feb 16 11:13 ARC_1_0000007707_726057844.arc
-rw-rw---- 1 oracle oinstall 44M Feb 16 22:06 ARC_1_0000007708_726057844.arc
-rw-rw---- 1 oracle oinstall 44M Feb 17 04:17 ARC_1_0000007709_726057844.arc
-rw-rw---- 1 oracle oinstall 21M Feb 17 11:23 ARC_1_0000007710_726057844.arc
-rw-rw---- 1 oracle oinstall 228K Feb 17 11:30 ARC_1_0000007711_726057844.arc
[oracle@oracle-rac1 arch1]$
可以看到,主库节点1已经产生7711归档的本地日志,而备库上却没有接收到任何归档日志:
[oracle@ora10grac-dg arch2]$ pwd
/home/oracle/arch2
[oracle@ora10grac-dg arch2]$ ll
total 0
[oracle@ora10grac-dg arch2]$
并且物理备库的告警日志暂时也没有任何提示信息!!在这一步,尝试了N久,才发现备库的监听没有启动,导致主库无法连接物理备库,自然,主库的归档也就无法传递到物理备库。具体,可见下面的记录信息,首先在节点1上,在SQL*PLUS里尝试用pridb网络服务名连接物理备库时报错,没有监听,然后到物理备库启动监听,在物理备库上重新执行应用归档,最后问题的以解决!
主库尝试连接备库报错:
SQL> conn sys/oracle@pridb as sysdba
ERROR:
ORA-12541: TNS:no listener
Warning: You are no longer connected to ORACLE.
SQL>
备库监听未启,然后启动:
[oracle@ora10grac-dg arch2]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 17-FEB-2012 11:41:59
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora10grac-dg)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
[oracle@ora10grac-dg arch2]$ lsnrctl start
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 17-FEB-2012 11:42:04
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Starting /u01/app/oracle/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.5.0 - Production
System parameter file is /u01/app/oracle/network/admin/listener.ora
Log messages written to /u01/app/oracle/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora10grac-dg)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora10grac-dg)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date 17-FEB-2012 11:42:06
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/network/admin/listener.ora
Listener Log File /u01/app/oracle/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora10grac-dg)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@ora10grac-dg arch2]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 17-FEB-2012 11:42:27
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ora10grac-dg)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date 17-FEB-2012 11:42:06
Uptime 0 days 0 hr. 0 min. 20 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/network/admin/listener.ora
Listener Log File /u01/app/oracle/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora10grac-dg)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "pridb" has 1 instance(s).
Instance "pridb", status READY, has 1 handler(s) for this service...
Service "pridb_XPT" has 1 instance(s).
Instance "pridb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@ora10grac-dg arch2]$
备库重启启动redo apply:
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL>
过一段时间后,看到下述信息:
SQL> select sequence#,name,first_time,next_time,applied from v$archived_log;
SEQUENCE# NAME FIRST_TIME NEXT_TIME APPLIED
---------- -------------------------------------------------- ------------------- ------------------- ------------
7708 /home/oracle/arch2/ARC_1_0000007708_726057844.arc 2012/02/16 11:13:19 2012/02/16 22:05:46 YES
7709 /home/oracle/arch2/ARC_1_0000007709_726057844.arc 2012/02/16 22:05:46 2012/02/17 04:17:07 YES
7710 /home/oracle/arch2/ARC_1_0000007710_726057844.arc 2012/02/17 04:17:07 2012/02/17 11:23:14 YES
7711 /home/oracle/arch2/ARC_1_0000007711_726057844.arc 2012/02/17 11:23:14 2012/02/17 11:30:44 YES
7707 /home/oracle/arch2/ARC_1_0000007707_726057844.arc 2012/02/16 11:07:43 2012/02/16 11:13:19 YES
3274 /home/oracle/arch2/ARC_2_0000003274_726057844.arc 2012/02/16 11:07:37 2012/02/16 11:13:16 YES
3275 /home/oracle/arch2/ARC_2_0000003275_726057844.arc 2012/02/16 11:13:16 2012/02/16 23:03:02 YES
3276 /home/oracle/arch2/ARC_2_0000003276_726057844.arc 2012/02/16 23:03:02 2012/02/17 03:00:36 YES
3277 /home/oracle/arch2/ARC_2_0000003277_726057844.arc 2012/02/17 03:00:36 2012/02/17 11:25:24 YES
3278 /home/oracle/arch2/ARC_2_0000003278_726057844.arc 2012/02/17 11:25:24 2012/02/17 11:41:04 NO
10 rows selected.
SQL> select process,status,client_process,group#,thread#,sequence# from v$managed_standby;
PROCESS STATUS CLIENT_PROCESS GROUP THREAD# SEQUENCE#
------------------------------------ --------------- -------------------------------- ----- ---------- ----------
ARCH CONNECTED ARCH N/A 0 0
ARCH CONNECTED ARCH N/A 0 0
MRP0 WAIT_FOR_LOG N/A N/A 1 7712
RFS IDLE UNKNOWN N/A 0 0
RFS IDLE UNKNOWN N/A 0 0
SQL> !
[oracle@ora10grac-dg ~]$ cd /home/oracle/arch2/ && ll
total 210424
-rw-r----- 1 oracle oinstall 80896 Feb 17 11:46 ARC_1_0000007707_726057844.arc
-rw-r----- 1 oracle oinstall 45309952 Feb 17 11:45 ARC_1_0000007708_726057844.arc
-rw-r----- 1 oracle oinstall 45311488 Feb 17 11:46 ARC_1_0000007709_726057844.arc
-rw-r----- 1 oracle oinstall 21249024 Feb 17 11:46 ARC_1_0000007710_726057844.arc
-rw-r----- 1 oracle oinstall 233472 Feb 17 11:46 ARC_1_0000007711_726057844.arc
-rw-r----- 1 oracle oinstall 46592 Feb 17 11:47 ARC_2_0000003274_726057844.arc
-rw-r----- 1 oracle oinstall 47448576 Feb 17 11:47 ARC_2_0000003275_726057844.arc
-rw-r----- 1 oracle oinstall 45309952 Feb 17 11:48 ARC_2_0000003276_726057844.arc
-rw-r----- 1 oracle oinstall 9995776 Feb 17 11:48 ARC_2_0000003277_726057844.arc
-rw-r----- 1 oracle oinstall 214528 Feb 17 11:49 ARC_2_0000003278_726057844.arc
[oracle@ora10grac-dg arch2]$
此时,备库alert日志文件里也看到成功应用归档的信息如下:
Completed: alter database recover managed standby database using current logfile disconnect from session
Fri Feb 17 11:44:24 CST 2012
Using STANDBY_ARCHIVE_DEST parameter default value as /home/oracle/arch2
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[1]: Assigned to RFS process 8107
RFS[1]: Identified database type as 'physical standby'
Fri Feb 17 11:44:24 CST 2012
RFS LogMiner: Client disabled from further notification
Fri Feb 17 11:44:26 CST 2012
Fetching gap sequence in thread 1, gap sequence 7707-7707
Fri Feb 17 11:44:59 CST 2012
Redo Shipping Client Connected as PUBLIC
-- Connected User is Valid
RFS[2]: Assigned to RFS process 8112
RFS[2]: Identified database type as 'physical standby'
Fri Feb 17 11:45:21 CST 2012
RFS[1]: Archived Log: '/home/oracle/arch2/ARC_1_0000007708_726057844.arc'
Fri Feb 17 11:46:04 CST 2012
RFS[1]: Archived Log: '/home/oracle/arch2/ARC_1_0000007709_726057844.arc'
RFS[1]: Archived Log: '/home/oracle/arch2/ARC_1_0000007710_726057844.arc'
RFS[1]: Archived Log: '/home/oracle/arch2/ARC_1_0000007711_726057844.arc'
RFS[1]: Archived Log: '/home/oracle/arch2/ARC_1_0000007707_726057844.arc'
Fri Feb 17 11:46:29 CST 2012
Media Recovery Log /home/oracle/arch2/ARC_1_0000007707_726057844.arc
Media Recovery Waiting for thread 2 sequence 3274
Fetching gap sequence in thread 2, gap sequence 3274-3274
Fri Feb 17 11:47:02 CST 2012
RFS[2]: Archived Log: '/home/oracle/arch2/ARC_2_0000003274_726057844.arc'
Fri Feb 17 11:47:30 CST 2012
Media Recovery Log /home/oracle/arch2/ARC_2_0000003274_726057844.arc
Media Recovery Log /home/oracle/arch2/ARC_1_0000007708_726057844.arc
Fri Feb 17 11:47:40 CST 2012
Media Recovery Waiting for thread 2 sequence 3275 (in transit)
Fri Feb 17 11:47:51 CST 2012
RFS[2]: Archived Log: '/home/oracle/arch2/ARC_2_0000003275_726057844.arc'
Fri Feb 17 11:47:55 CST 2012
Media Recovery Log /home/oracle/arch2/ARC_2_0000003275_726057844.arc
Fri Feb 17 11:48:49 CST 2012
RFS[2]: Archived Log: '/home/oracle/arch2/ARC_2_0000003276_726057844.arc'
Fri Feb 17 11:48:59 CST 2012
RFS[2]: Archived Log: '/home/oracle/arch2/ARC_2_0000003277_726057844.arc'
RFS[2]: Archived Log: '/home/oracle/arch2/ARC_2_0000003278_726057844.arc'
Fri Feb 17 11:49:12 CST 2012
Media Recovery Log /home/oracle/arch2/ARC_1_0000007709_726057844.arc
Fri Feb 17 11:49:38 CST 2012
Media Recovery Log /home/oracle/arch2/ARC_2_0000003276_726057844.arc
Fri Feb 17 11:50:01 CST 2012
Media Recovery Log /home/oracle/arch2/ARC_2_0000003277_726057844.arc
Media Recovery Log /home/oracle/arch2/ARC_1_0000007710_726057844.arc
Media Recovery Log /home/oracle/arch2/ARC_1_0000007711_726057844.arc
Media Recovery Log /home/oracle/arch2/ARC_2_0000003278_726057844.arc
Media Recovery Waiting for thread 1 sequence 7712
看到这些信息后,才说明主库所有节点的归档日志已经全部传递到物理备库,且物理备库也成功应用了这些归档!
15 主库创建standby logfile。在主库上创建standby logfile的目的和作用是,将来在做switchover时,RAC主库变成新standby备库,而原来的物理备库变成新主库时,新standby备库可以顺利接受并应用新主库的归档日志。当然,也别忘记了要修改主库的standby_file_management、db_file_name_convert、log_file_name_convert这三个重要的参数!
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
1 ONLINE +ORADATA/glndb/onlinelog/group_1.257.726057849 NO
2 ONLINE +ORADATA/glndb/onlinelog/group_2.258.726057849 NO
4 ONLINE +ORADATA/glndb/onlinelog/group_4.266.726058757 NO
5 ONLINE +ORADATA/glndb/onlinelog/group_5.267.726058757 NO
SQL> select * from v$standby_log;
no rows selected
SQL> alter database add standby logfile thread 1 group 3 size 50m,group 6 size 50m,group 7 size 50m;
Database altered.
SQL> alter database add standby logfile thread 2 group 8 size 50m,group 9 size 50m,group 10 size 50m;
Database altered.
SQL> select * from v$standby_log;
GROUP# DBID THREAD# SEQUENCE# BYTES USED ARC STATUS FIRST_CHANGE# FIRST_TIM LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- --- ---------- ------------- --------- ------------ ---------
3 UNASSIGNED 1 0 52428800 512 YES UNASSIGNED 0 0
6 UNASSIGNED 1 0 52428800 512 YES UNASSIGNED 0 0
7 UNASSIGNED 1 0 52428800 512 YES UNASSIGNED 0 0
8 UNASSIGNED 2 0 52428800 512 YES UNASSIGNED 0 0
9 UNASSIGNED 2 0 52428800 512 YES UNASSIGNED 0 0
10 UNASSIGNED 2 0 52428800 512 YES UNASSIGNED 0 0
6 rows selected.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
1 ONLINE +ORADATA/glndb/onlinelog/group_1.257.726057849 NO
2 ONLINE +ORADATA/glndb/onlinelog/group_2.258.726057849 NO
3 STANDBY +ORADATA/glndb/onlinelog/group_3.261.775490705 NO
4 ONLINE +ORADATA/glndb/onlinelog/group_4.266.726058757 NO
5 ONLINE +ORADATA/glndb/onlinelog/group_5.267.726058757 NO
6 STANDBY +ORADATA/glndb/onlinelog/group_6.430.775490705 NO
7 STANDBY +ORADATA/glndb/onlinelog/group_7.444.775490707 NO
8 STANDBY +ORADATA/glndb/onlinelog/group_8.431.775491149 NO
9 STANDBY +ORADATA/glndb/onlinelog/group_9.445.775491149 NO
10 STANDBY +ORADATA/glndb/onlinelog/group_10.446.775491151 NO
10 rows selected.
SQL>
SQL> show parameter convert
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
log_file_name_convert string
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string MANUAL
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +ORADATA/glndb/spfileglndb.ora
SQL> alter system set standby_file_management='auto' sid='*';
System altered.
SQL> alter system set db_file_name_convert='+ORADATA/pridb/','+ORADATA/glndb/' sid='*' scope=spfile;
alter system set db_file_name_convert='+ORADATA/pridb/','+ORADATA/glndb/' sid='*' scope=spfile
*
ERROR at line 1:
ORA-02096: specified initialization parameter is not modifiable with this option
SQL> alter system set log_file_name_convert='+ORADATA/pridb/','+ORADATA/glndb/' sid='*' scope=spfile;
alter system set log_file_name_convert='+ORADATA/pridb/','+ORADATA/glndb/' sid='*' scope=spfile
*
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified
SQL>
发现,最后两个参数不能修改!百思不得其解,不得已,只好通过创建PFILE,在PFILE里修改这两个参数,然后再利用该PFILE来创建SPFILE的方式来修改之!
终于,终于,经过漫长的配置,我们的dataguard成功创建!关于dataguard的功能测试,将在下一篇文章里介绍!依然敬请期待!