您的位置:首页 > 其它

RAC-DG搭建步骤及一些应用分析

2013-08-17 22:32 489 查看
今天的实验内容是RAC-DG的搭建及一些测试,并就在实验中遇到的一些错误进行分析并解决

环境:11.2.0.3+oel5.7

rac1:zlm1 192.168.1.171 zlm1-vip 192.168.1.172 zlm1-priv 172.168.1.192

rac2:zlm2 192.168.1.173 zlm2-vip 192.168.1.174 zlm2-priv 172.168.1.193

scan-ip:zlm-cluseter zlm-cluster-scan 192.168.1.176

dg:zlm3 192.168.1.178

之前已安装并配置RAC和RAC主库,准备好一个装好ORACLE软件的备库,过程略,现在开始进行RAC-DG配置

#先查看一下RAC主库数据文件,临时文件,日志文件存放路径

SQL> set line 200 pages 200

SQL> col file_name for a50

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME FILE_NAME

------------------------------ --------------------------------------------------

USERS +DATA/ora11rac/datafile/users.259.823440065

UNDOTBS1 +DATA/ora11rac/datafile/undotbs1.258.823440063

SYSAUX +DATA/ora11rac/datafile/sysaux.257.823440063

SYSTEM +DATA/ora11rac/datafile/system.256.823440061

EXAMPLE +DATA/ora11rac/datafile/example.264.823440247

UNDOTBS2 +DATA/ora11rac/datafile/undotbs2.265.823440549

6 rows selected.

SQL> col name for a50

SQL> select name from v$tempfile;

NAME

--------------------------------------------------

+DATA/ora11rac/tempfile/temp.263.823440229

SQL> select group#,member from v$logfile;

GROUP# MEMBER

---------- --------------------------------------------------

2 +DATA/ora11rac/onlinelog/group_2.262.823440213

2 +BACKUPDG/ora11rac/onlinelog/group_2.258.823440215

1 +DATA/ora11rac/onlinelog/group_1.261.823440207

1 +BACKUPDG/ora11rac/onlinelog/group_1.257.823440211

3 +DATA/ora11rac/onlinelog/group_3.266.823440667

3 +BACKUPDG/ora11rac/onlinelog/group_3.259.823440669

4 +DATA/ora11rac/onlinelog/group_4.267.823440669

4 +BACKUPDG/ora11rac/onlinelog/group_4.260.823440671

8 rows selected.

*********

主库配置:

*********

1.开启force logging

SQL> select inst_id,name,force_logging from gv$database;

INST_ID NAME FOR

---------- --------- ---

1 ORA11RAC NO

2 ORA11RAC NO

SQL> alter database force logging;

Database altered.

SQL> select inst_id,name,force_logging from gv$database;

INST_ID NAME FOR

---------- --------- ---

1 ORA11RAC YES

2 ORA11RAC YES

2.开启归档模式(所有RAC节点实例都必须在mount状态下)

SQL> select open_mode,log_mode from gv$database;

OPEN_MODE LOG_MODE

-------------------- ------------

MOUNTED NOARCHIVELOG

MOUNTED NOARCHIVELOG

SQL> alter database archivelog;

Database altered.

注:之前此处修改归档模式遇到一个ORA-00265: instance recovery required, cannotsetARCHIVELOG mode的错误提示,是由于之前实例非正常关闭,重新shutdown immediate再startup mount再修改就行了

SQL> select name,log_mode,force_logging from gv$database;

NAME LOG_MODE FOR

--------- ------------ ---

ORA11RAC ARCHIVELOG YES

ORA11RAC ARCHIVELOG YES

3.RAC主库用RMAN全备,备份归档,备份standby控制文件

[oracle@zlm1 ~]$ rman target /

Recovery Manager: Release 11.2.0.3.0 - Production on Thu Aug 15 11:49:32 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

connected to target database: ORA11RAC (DBID=3500433418, not open)

RMAN> run{

2> allocate channel c1 type disk;

3> allocate channel c2 type disk;

4> backup database format '/rmanbackup/full_%U.bak';

5> release channel c1;

6> release channel c2;

7> }

备份过程中出了点问题,如下

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03009: failure of backup command on c2 channel at 08/15/2013 11:53:07

ORA-00206: error in writing (block 477, # blocks 35) of control file

ORA-00202: control file: '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_ora11rac1.f'

ORA-27072: File I/O error

Additional information: 4

Additional information: 477

Additional information: 49152

#查看一下磁盘容量,原来是空间不够了

[root@zlm1 rmanbackup]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

16G 15G 20M 100% /

/dev/sda1 99M 23M 71M 25% /boot

tmpfs 1002M 677M 325M 68% /dev/shm

腾空一些磁盘空间后重新备份,问题解决

#备份所有归档文件

RMAN> backup archivelog all format '/rmanbackup/arc_%U.bak';

Starting backup at 15-AUG-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=37 instance=ora11rac1 device type=DISK

specification does not match any archived log in the repository

backup cancelled because there are no files to backup

Finished backup at 15-AUG-13

由于新建库后没有进行过事务和切换归档等操作,所以这里没有归档可以备份。

#备份主库控制文件,为备库创建standby控制文件

RMAN> backup device type disk format '/rmanbackup/stdctl_%U.ctl' current controlfile for standby;

Starting backup at 15-AUG-13

using channel ORA_DISK_1

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

including standby control file in backup set

channel ORA_DISK_1: starting piece 1 at 15-AUG-13

channel ORA_DISK_1: finished piece 1 at 15-AUG-13

piece handle=/rmanbackup/stdctl_09ohbtml_1_1.ctl tag=TAG20130815T122349 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

Finished backup at 15-AUG-13

4.RAC主库创建PFILE并修改内容

SQL> create pfile='/rmanbackup/initora11dg.ora' from spfile;

File created.

#装完RAC后数据库原有参数

*.audit_file_dest='/u01/app/oracle/admin/ora11rac/adump'

*.audit_trail='db'

*.cluster_database=true

*.compatible='11.2.0.0.0'

*.control_files='+DATA/ora11rac/controlfile/current.260.823440203','+BACKUPDG/ora11rac/controlfile/current.256.823440203'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_name='ora11rac'

*.db_recovery_file_dest='+BACKUPDG'

*.db_recovery_file_dest_size=4558159872

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora11racXDB)'

ora11rac2.instance_number=2

ora11rac1.instance_number=1

*.memory_target=838860800

*.open_cursors=300

*.processes=150

*.remote_listener='zlm-cluster-scan:1521'

*.remote_login_passwordfile='exclusive'

ora11rac2.thread=2

ora11rac1.thread=1

ora11rac2.undo_tablespace='UNDOTBS2'

ora11rac1.undo_tablespace='UNDOTBS1'

#以下为配置DG而添加的内容

*.db_unique_name='ora11rac'

*.log_archive_config='dg_config=(ora11rac,ora11dg)'

*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=ora11rac'

*.log_archive_dest_2='service=ora11dg valid_for=(online_logfiles,primary_role) db_unique_name=ora11dg'

*.log_archive_dest_state_1=enable

*.log_archive_dest_state_2=enable

*.log_archive_format='arc_%t_%s_%r.arc'

#为switchover或failover而设置的参数

*.fal_server=ora11dg

*.standby_file_management='auto'

*.db_file_name_convert='/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/datafile','/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/tempfile'

*.log_file_name_convert='/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/onlinelog','/u01/app/oracle/oradata/ora11dg/datafile','+BACKUPDG/ora11rac/onlinelog'

在RAC主库节上创建备库口令文件

[oracle@zlm1 ~]$ orapwd file=/rmanbackup/orapwora11rac password=oracle

5.把之前的全备备份集,控制文件传到备库相同位置,把参数文件,口令文件传到备库$ORACLE_HOME/dbs

[oracle@zlm1 rmanbackup]$ ll

total 1187244

-rw-r----- 1 oracle asmadmin 714383360 Aug 15 12:11 full_05ohbsqs_1_1.bak

-rw-r----- 1 oracle asmadmin 462938112 Aug 15 12:11 full_06ohbsqs_1_1.bak

-rw-r----- 1 oracle asmadmin 18546688 Aug 15 12:11 full_07ohbt0b_1_1.bak

-rw-r----- 1 oracle asmadmin 98304 Aug 15 12:11 full_08ohbt0c_1_1.bak

-rw-r--r-- 1 oracle asmadmin 1987 Aug 15 14:03 initora11rac.ora

-rw-r----- 1 oracle oinstall 1536 Aug 15 13:01 orapwora11rac

-rw-r----- 1 oracle asmadmin 18546688 Aug 15 12:23 stdctl_09ohbtml_1_1.ctl

[oracle@zlm1 rmanbackup]$ scp full* stdctl* zlm3:/rmanbackup

oracle@zlm3's password:

full_05ohbsqs_1_1.bak 100% 681MB 8.0MB/s 01:25

full_06ohbsqs_1_1.bak 100% 441MB 8.0MB/s 00:55

full_07ohbt0b_1_1.bak 100% 18MB 17.7MB/s 00:01

full_08ohbt0c_1_1.bak 100% 96KB 96.0KB/s 00:00

stdctl_09ohbtml_1_1.ctl 100% 18MB 4.4MB/s 00:04

[oracle@zlm1 rmanbackup]$ scp initora11dg.ora orapwora11rac zlm3:$ORACLE_HOME/dbs

oracle@zlm3's password:

orapwora11rac 100% 1536 1.5KB/s 00:00

initora11rac.ora 100% 1987 1.9KB/s 00:00

*********

备库配置:

*********

1.在备库创建相应目录

[oracle@ora11dg ~]$ mkdir -p /u01/app/oracle/admin/ora11dg/adump

[oracle@ora11dg ~]$ mkdir -p /u01/app/oracle/oradata/ora11dg/datafile

[oracle@ora11dg ~]$ mkdir -p /u01/app/oracle/fast_recovery_area/ora11dg

2.重命名备库口令文件和参数文件

[oracle@ora11dg dbs]$ mv orapwora11rac orapwora11dg

[oracle@ora11dg dbs]$ mv initora11rac.ora initora11dg.ora

3.修改备库pfile,参数如下

ora11dg.__db_cache_size=121634816

ora11dg.__java_pool_size=4194304

ora11dg.__large_pool_size=4194304

ora11dg.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

ora11dg.__pga_aggregate_target=176160768

ora11dg.__sga_target=239075328

ora11dg.__shared_io_pool_size=0

ora11dg.__shared_pool_size=100663296

ora11dg.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/ora11dg/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/oradata/ora11dg/control01.ctl','/u01/app/oracle/fast_recovery_area/ora11dg/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_name='ora11rac'

*.db_unique_name='ora11dg'

*.log_archive_config='dg_config=(ora11rac,ora11dg)'

*.log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=ora11dg'

*.log_archive_dest_2='service=ora11rac valid_for=(online_logfiles,primary_role) db_unique_name=ora11rac'

*.log_archive_dest_state_1=enable

*.log_archive_dest_state_2=enable

*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'

*.db_recovery_file_dest_size=4322230272

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora11dgXDB)'

*.log_archive_format='%t_%s_%r.dbf'

*.log_archive_max_processes=30

*.memory_target=415236096

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

#配置switchover或failover所需参数

*.fal_server=ora11rac

*.standby_file_management=auto

*.db_file_name_convert='+DATA/ora11rac/datafile','/u01/app/oracle/oradata/ora11dg/datafile','+DATA/ora11rac/tempfile','/u01/app/oracle/oradata/ora11dg/datafile'

*.log_file_name_convert='+DATA/ora11rac/onlinelog','/u01/app/oracle/oradata/ora11dg/datafile',+BACKUPDG/ora11rac/onlinelog','/u01/app/oracle/oradata/ora11dg/datafile'

4.配置RAC主库2个节点和备库的tnsnames.ora,以及备库的listener.ora(主库listener.ora不用配置)

#RAC主库tnsnames.ora内容(RAC2个节点内容一样):

ORA11DG =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = zlm3)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = ora11dg)

)

)

ORA11RAC =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = zlm-cluster-scan)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ora11rac)

)

)

#备库的listener.ora内容:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = ora11dg)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = ora11dg)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = zlm3)(PORT = 1521))

)

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

ADR_BASE_LISTENER = /u01/app/oracle

5.开始创建备库,在备库执行

[oracle@zlm3 ~]$ env|grep ora

USER=oracle

ORACLE_SID=ora11dg

ORACLE_BASE=/u01/app/oracle

MAIL=/var/spool/mail/oracle

PATH=/u01/app/oracle/product/11.2.0/dbhome_1/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin

PWD=/home/oracle

HOME=/home/oracle

LOGNAME=oracle

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

#启动备库监听:

[oracle@ora11dg dbs]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 17-AUG-2013 14:21:17

Copyright (c) 1991, 2011, Oracle. All rights reserved.

Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production

System parameter file is /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Log messages written to /u01/app/oracle/diag/tnslsnr/ora11dg/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.178)(PORT=1521)))

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm3)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias LISTENER

Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production

Start Date 17-AUG-2013 14:21:20

Uptime 0 days 0 hr. 0 min. 24 sec

Trace Level off

Security ON: Local OS Authentication

SNMP OFF

Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File /u01/app/oracle/diag/tnslsnr/ora11dg/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.178)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Services Summary...

Service "ora11dg" has 1 instance(s).

Instance "ora11dg", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

#将备库启动到nomount状态:

[oracle@ora11dg dbs]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.3.0 Production on Sat Aug 17 14:20:47 2013

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup nomount

ORACLE instance started.

Total System Global Area 413372416 bytes

Fixed Size 2228904 bytes

Variable Size 285216088 bytes

Database Buffers 121634816 bytes

Redo Buffers 4292608 bytes

SQL> !

[oracle@ora11dg dbs]$ ps -ef|grep ora_

oracle 3056 1 0 14:22 ? 00:00:00 ora_pmon_ora11dg

oracle 3060 1 0 14:22 ? 00:00:00 ora_psp0_ora11dg

oracle 3064 1 2 14:22 ? 00:00:03 ora_vktm_ora11dg

oracle 3094 1 0 14:22 ? 00:00:00 ora_gen0_ora11dg

oracle 3098 1 0 14:22 ? 00:00:00 ora_diag_ora11dg

oracle 3102 1 0 14:22 ? 00:00:00 ora_dbrm_ora11dg

oracle 3106 1 0 14:22 ? 00:00:00 ora_dia0_ora11dg

oracle 3110 1 0 14:22 ? 00:00:00 ora_mman_ora11dg

oracle 3114 1 0 14:22 ? 00:00:00 ora_dbw0_ora11dg

oracle 3118 1 0 14:22 ? 00:00:00 ora_lgwr_ora11dg

oracle 3122 1 0 14:22 ? 00:00:00 ora_ckpt_ora11dg

oracle 3126 1 0 14:22 ? 00:00:00 ora_smon_ora11dg

oracle 3130 1 0 14:22 ? 00:00:00 ora_reco_ora11dg

oracle 3134 1 0 14:22 ? 00:00:00 ora_mmon_ora11dg

oracle 3138 1 0 14:22 ? 00:00:00 ora_mmnl_ora11dg

oracle 3142 1 0 14:22 ? 00:00:00 ora_d000_ora11dg

oracle 3146 1 0 14:22 ? 00:00:00 ora_s000_ora11dg

oracle 3211 3191 0 14:25 pts/2 00:00:00 grep ora_

6.用RMAN对备库进行一系列恢复

#先用从RAC主库拷贝来的备库控制文件备份集恢复备库控制文件

[oracle@ora11dg dbs]$rman

Recovery Manager: Release 11.2.0.3.0 - Production on Sat Aug 17 14:26:08 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

RMAN> restore standby controlfile from '/rmanbackup/stdctl_09ohbtml_1_1.ctl';

Starting restore at 17-AUG-13

using target database control file instead of recovery catalog

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of restore command at 08/17/2013 14:31:35

RMAN-12010: automatic channel allocation initialization failed

RMAN-06171: not connected to target database

RMAN> connect target /

connected to target database: ORA11RAC (not mounted)

using target database control file instead of recovery catalog

RMAN> restore standby controlfile from '/rmanbackup/stdctl_09ohbtml_1_1.ctl';

Starting restore at 17-AUG-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=21 device type=DISK

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:08

output file name=/u01/app/oracle/oradata/ora11dg/control01.ctl

output file name=/u01/app/oracle/fast_recovery_area/ora11dg/control02.ctl

Finished restore at 17-AUG-13

RMAN> exit

Recovery Manager complete.

[oracle@ora11dg dbs]$ exit

exit

SQL> alter database mount;

Database altered.

SQL>

#开始restore备库数据文件

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=52 device type=DISK

allocated channel: c2

channel c2: SID=53 device type=DISK

Starting restore at 17-AUG-13

Starting implicit crosscheck backup at 17-AUG-13

Crosschecked 4 objects

Crosschecked 3 objects

Finished implicit crosscheck backup at 17-AUG-13

Starting implicit crosscheck copy at 17-AUG-13

Finished implicit crosscheck copy at 17-AUG-13

searching for all files in the recovery area

cataloging files...

no files cataloged

channel c1: starting datafile backup set restore

channel c1: specifying datafile(s) to restore from backup set

channel c1: restoring datafile 00002 to /u01/app/oracle/oradata/ora11dg/datafile/sysaux.257.823440063

channel c1: restoring datafile 00003 to /u01/app/oracle/oradata/ora11dg/datafile/undotbs1.258.823440063

channel c1: restoring datafile 00006 to /u01/app/oracle/oradata/ora11dg/datafile/undotbs2.265.823440549

channel c1: reading from backup piece /rmanbackup/full_06ohbsqs_1_1.bak

channel c2: starting datafile backup set restore

channel c2: specifying datafile(s) to restore from backup set

channel c2: restoring datafile 00001 to /u01/app/oracle/oradata/ora11dg/datafile/system.256.823440061

channel c2: restoring datafile 00004 to /u01/app/oracle/oradata/ora11dg/datafile/users.259.823440065

channel c2: restoring datafile 00005 to /u01/app/oracle/oradata/ora11dg/datafile/example.264.823440247

channel c2: reading from backup piece /rmanbackup/full_05ohbsqs_1_1.bak

channel c1: piece handle=/rmanbackup/full_06ohbsqs_1_1.bak tag=TAG20130815T120900

channel c1: restored backup piece 1

channel c1: restore complete, elapsed time: 00:03:37

channel c2: piece handle=/rmanbackup/full_05ohbsqs_1_1.bak tag=TAG20130815T120900

channel c2: restored backup piece 1

channel c2: restore complete, elapsed time: 00:05:19

Finished restore at 17-AUG-13

released channel: c1

released channel: c2

RMAN>

#查看备库数据文件,临时文件和日志文件

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/ora11dg/datafile/system.256.823440061

/u01/app/oracle/oradata/ora11dg/datafile/sysaux.257.823440063

/u01/app/oracle/oradata/ora11dg/datafile/undotbs1.258.823440063

/u01/app/oracle/oradata/ora11dg/datafile/users.259.823440065

/u01/app/oracle/oradata/ora11dg/datafile/example.264.823440247

/u01/app/oracle/oradata/ora11dg/datafile/undotbs2.265.823440549

6 rows selected.

SQL> select name from v$tempfile;

NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/ora11dg/datafile/temp.263.823440229

SQL> select member from v$logfile;

MEMBER

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/ora11dg/datafile/group_2.262.823440213

+BACKUPDG/ora11rac/onlinelog/group_2.258.823440215

/u01/app/oracle/oradata/ora11dg/datafile/group_1.261.823440207

+BACKUPDG/ora11rac/onlinelog/group_1.257.823440211

/u01/app/oracle/oradata/ora11dg/datafile/group_3.266.823440667

+BACKUPDG/ora11rac/onlinelog/group_3.259.823440669

/u01/app/oracle/oradata/ora11dg/datafile/group_4.267.823440669

+BACKUPDG/ora11rac/onlinelog/group_4.260.823440671

8 rows selected.

说明RMAN恢复备库很成功,RAC主库全部文件都已传到备库

7.备库启动MRP进程开始应用日志(如果是arch模式,可以直接启用,如果是lgwr方式,必须先创建standby log文件)

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 0

Next log sequence to archive 0

Current log sequence 0

SQL> alter database recover managed standby database disconnect from session;

Database altered.

#查看RAC主库节点1归档日志序列

SQL> select open_mode from v$database;

OPEN_MODE

--------------------

READ WRITE

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 14

Next log sequence to archive 15

Current log sequence 15

#切换归档日志并查看

SQL> alter system switch logfile;

System altered.

SQL> select thread#,sequence#,applied from v$archived_log where thread#=1 order by 1,2;

THREAD# SEQUENCE# APPLIED

---------- ---------- ---------

1 9 NO

1 10 NO

1 11 NO

1 12 NO

1 13 NO

1 14 NO

1 15 NO

7 rows selected.

#查看备库是否同步

SQL> select thread#,sequence#,applied from v$archived_log;

no rows selected

检查备库alert日志,发现报了一个tns错误:

***********************************************************************

Fatal NI connect error 12541, connecting to:

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm-cluster-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ora11rac)(CID=(PROGRAM=oracle)(HOST=ora11dg)(USER=oracle))))

VERSION INFORMATION:

TNS for Linux: Version 11.2.0.3.0 - Production

TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.3.0 - Production

Time: 17-AUG-2013 15:06:44

Tracing not turned on.

Tns error struct:

ns main err code: 12541

TNS-12541: TNS:no listener

ns secondary err code: 12560

nt main err code: 511

TNS-00511: No listener

nt secondary err code: 111

nt OS err code: 0

Error 12541 received logging on to the standby

Check whether the listener is up and running.

FAL[client, MRP0]: Error 12541 connecting to ora11rac for fetching gap sequence

以上错误表明监听没有起来,查看主库归档路径归档路径是否有问题:

SQL> set line 200 pages 200

SQL> col dest_name for a30

SQL> col destination for a30

SQL> col error for a20

SQL> select dest_name,destination,error,status from v$archive_dest where dest_id<3;

DEST_NAME DESTINATION ERROR STATUS

------------------------------ ------------------------------ -------------------- ---------

LOG_ARCHIVE_DEST_1 USE_DB_RECOVERY_FILE_DEST VALID

LOG_ARCHIVE_DEST_2 INACTIVE

至此,发现一个问题,就是之前配置的主库参数并没有在spfile中生效,之前对主库创建完pfile文件,并用pifle启动后,又执行过以下命令:

SQL> create spfile from pfile;

原本目的是用pfile重新创建spfile文件,以使下次用startup命令启动数据库后,spfile会启用新配置的DG参数,其实是疏忽了一件事情,因为RAC环境中spifle是存放在ASM上的,应该要指定一个ASM路径,而不是默认的dbs,此处应该改为:

SQL> create spfile='+DATA/ora11rac/spfileora11rac.ora' from pfile;

#重新用之前修改好的pfile启动

SQL> startup pfile='/rmanbackup/initora11rac.ora' force

ORACLE instance started.

Total System Global Area 835104768 bytes

Fixed Size 2232960 bytes

Variable Size 578817408 bytes

Database Buffers 251658240 bytes

Redo Buffers 2396160 bytes

Database mounted.

Database opened.

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string

SQL> create spfile='+DATA/ora11rac/spfileora11rac1.ora' from pfile;

File created.

****************************************************************

注意:用pfile启动数据库实例时,RAC中其他节点必须关闭,否则会报ORA-01105和ORA-01677错误:

SQL> startup pfile='/rmanbackup/initora11rac.ora'

ORACLE instance started.

Total System Global Area 835104768 bytes

Fixed Size 2232960 bytes

Variable Size 578817408 bytes

Database Buffers 251658240 bytes

Redo Buffers 2396160 bytes

ORA-01105: mount is incompatible with mounts by other instances

ORA-01677: standby file name convert parameters differ from other instance

****************************************************************

#用RAC在ASM上的spfile启动

SQL> startup force

ORA-01506: missing or illegal database name

这个错误,按字面理解就是丢失数据库名,就是参数中没有db_name这项内容,或者配置错误,发生这个错误是因为没有之前的创建spfile语句没有指定pfile路径所致,其实和单实例本地路径存放不同,如果pfile不指定路径,默认使用的只是dbs下的initora11rac1.ora去生成spfile,由于在ASM中,此文件是用来指向ASM中spfile文件的存放路径,内容只有一句“+DATA/ora11rac/spfileora11rac.ora”,知道了问题所在,那么把上面那条创建spifle的语句修改如下:create
spfile='+DATA/ora11rac/spfileora11rac1.ora' from pfile='/rmanbackup/initora11rac.ora';

SQL> create spfile='+DATA/ora11rac/spfileora11rac.ora' from pfile='/rmanbackup/initora11rac.ora';

File created.

SQL> startup

ORACLE instance started.

Total System Global Area 835104768 bytes

Fixed Size 2232960 bytes

Variable Size 578817408 bytes

Database Buffers 251658240 bytes

Redo Buffers 2396160 bytes

Database mounted.

Database opened.

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string +DATA/ora11rac/spfileora11rac.

ora

此时再用spfile启动正常

#继续之前的步骤,在RAC主库查看归档路径

SQL> set line 200 pages 200

SQL> col dest_name for a30

SQL> col destination for a30

SQL> col error for a20

SQL> select dest_name,destination,error,status from v$archive_dest where dest_id<3;

DEST_NAME DESTINATION ERROR STATUS

------------------------------ ------------------------------ -------------------- ---------

LOG_ARCHIVE_DEST_1 USE_DB_RECOVERY_FILE_DEST VALID

LOG_ARCHIVE_DEST_2 ora11dg ORA-16191: Primary ERROR

log shipping client

not logged on

standby

查看主库alert文件,提示以下内容

Error 1017 received logging on to the standby

------------------------------------------------------------

Check that the primary and standby are using a password file

and remote_login_passwordfile is set to SHARED or EXCLUSIVE,

and that the SYS password is same in the password files.

returning error ORA-16191

------------------------------------------------------------

FAL[server, ARC3]: Error 16191 creating remote archivelog file 'ora11dg'

FAL[server, ARC3]: FAL archive failed, see trace file.

ARCH: FAL archive failed. Archiver continuing

ORACLE Instance ora11rac1 - Archival Error. Archiver continuing.

Sat Aug 17 05:53:06 2013

Error 1017 received logging on to the standby

------------------------------------------------------------

Check that the primary and standby are using a password file

and remote_login_passwordfile is set to SHARED or EXCLUSIVE,

and that the SYS password is same in the password files.

returning error ORA-16191

------------------------------------------------------------

PING[ARC2]: Heartbeat failed to connect to standby 'ora11dg'. Error is 16191.

#根据错误提示,可以判断可能主备库之间密码文件没有同步,故重新复制主库密码文件至备库

SQL> !

[oracle@zlm1 ~]$ scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwora11rac1 zlm3:$ORACLE_HOME/dbs

oracle@zlm3's password:

orapwora11rac1 100% 1536 1.5KB/s 00:00

[oracle@zlm1 ~]$

然后在备库把密码文件改成备库相应的名字orapw[sid],windows是pw[sid].ora(windows不区分大小写),此处对应的orapwora11rac1

[oracle@ora11dg ~]$ cd $ORACLE_HOME/dbs

[oracle@ora11dg dbs]$ ll

total 24

-rw-rw---- 1 oracle oinstall 1544 Aug 17 15:06 hc_ora11dg.dat

-rw-r--r-- 1 oracle oinstall 2851 May 15 2009 init.ora

-rw-r--r-- 1 oracle oinstall 1761 Aug 17 14:11 initora11dg.ora

-rw-r----- 1 oracle oinstall 24 Aug 17 14:34 lkORA11DG

-rw-r----- 1 oracle oinstall 1536 Aug 16 01:20 orapwora11dg

-rw-r----- 1 oracle oinstall 1536 Aug 17 18:02 orapwora11rac1

[oracle@ora11dg dbs]$ rm orapwora11dg

[oracle@ora11dg dbs]$ mv orapwora11rac1 orapwora11dg

此时再重新查看RAC主库归档路径

SQL> select dest_name,destination,error,status from v$archive_dest where dest_id<3;

DEST_NAME DESTINATION ERROR STATUS

------------------------------ ------------------------------ -------------------- ---------

LOG_ARCHIVE_DEST_1 USE_DB_RECOVERY_FILE_DEST VALID

LOG_ARCHIVE_DEST_2 ora11dg VALID

问题解决了,以下是alert中记录的最新记录的信息:

Sat Aug 17 06:01:15 2013

Thread 1 advanced to log sequence 28 (LGWR switch)

Current log# 2 seq# 28 mem# 0: +DATA/ora11rac/onlinelog/group_2.262.823440213

Current log# 2 seq# 28 mem# 1: +BACKUPDG/ora11rac/onlinelog/group_2.258.823440215

Sat Aug 17 06:01:16 2013

******************************************************************

LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2

******************************************************************

Sat Aug 17 06:01:20 2013

Archived Log entry 45 added for thread 1 sequence 27 ID 0xd0a41306 dest 1:

此时主库序列就已经到达27,因为之前解决故障的时候来回重启了好几次,之间归档日志时会递增的

SQL> archive log list

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 27

Next log sequence to archive 28

Current log sequence 28

切换一次日志

SQL> alter system switch logfile;

System altered.

SQL> select thread#,sequence#,applied from v$archived_log where thread#=1 and sequence#>25 order by 1,2;

THREAD# SEQUENCE# APPLIED

---------- ---------- ---------

1 25 NO

1 25 YES

1 26 NO

1 26 YES

1 27 NO

1 27 NO

1 28 NO

1 28 NO

8 rows selected.

备库之前已经启动了MRP进程,已经进行了REDO APPLY

SQL> select open_mode from v$database;

OPEN_MODE

--------------------

READ ONLY WITH APPLY

SQL> select thread#,sequence#,archived,applied from v$archived_log where thread#=1 and sequence#>25 order by 1,2 where;

THREAD# SEQUENCE# ARC APPLIED

---------- ---------- --- ---------

1 25 YES YES

1 26 YES YES

1 27 YES NO

1 28 YES NO

由于使用的是默认的arch方式传送归档,所以这里并没有同步归档主库的日志文件

查看备库alert文件:

Sat Aug 17 18:11:35 2013

Archived Log entry 31 added for thread 1 sequence 28 rlc 823440206 ID 0xd0a41306 dest 2:

RFS[8]: No standby redo logfiles created

很明显,提示没有创建standby redo logfiles,这样可以满足在maximum performance保护模式下,做为DG主备库之间的归档日志传输方式,这也是orace DG默认的一种方式

主库再切换一次归档

SQL> alter system switch logfile;

System altered.

SQL> select thread#,sequence#,applied from v$archived_log where thread#=1 and sequence#>25 order by 1,2;

THREAD# SEQUENCE# APPLIED

---------- ---------- ---------

1 25 NO

1 25 YES

1 26 NO

1 26 YES

1 27 NO

1 27 NO

1 28 NO

1 28 NO

1 29 NO

1 29 NO

10 rows selected.

继续查看备库的归档情况

SQL> select thread#,sequence#,archived,applied from v$archived_log where thread#=1 and sequence#>25 order by 1,2;

THREAD# SEQUENCE# ARC APPLIED

---------- ---------- --- ---------

1 25 YES YES

1 26 YES YES

1 27 YES YES

1 28 YES YES

1 29 YES YES

发现虽然是arch异步(arch默认就是async)模式归档,又切换了一次日志以后,目前从主库传来的日志已经全部APPLY了

此时可以再查看一下备库的alert文件,看看与之前的不同

RFS[8]: Opened log for thread 1 sequence 29 dbid -794533878 branch 823440206

Sat Aug 17 18:26:37 2013

Archived Log entry 32 added for thread 1 sequence 29 rlc 823440206 ID 0xd0a41306 dest 2:

RFS[8]: No standby redo logfiles created

RFS[8]: Opened log for thread 1 sequence 30 dbid -794533878 branch 823440206

Sat Aug 17 18:26:38 2013

Archived Log entry 33 added for thread 2 sequence 15 rlc 823440206 ID 0xd0a41306 dest 2:

RFS[4]: No standby redo logfiles created

RFS[4]: Opened log for thread 2 sequence 16 dbid -794533878 branch 823440206

Sat Aug 17 18:26:42 2013

Media Recovery Log /u01/app/oracle/fast_recovery_area/ORA11DG/archivelog/2013_08_17/o1_mf_2_15_90ylvxv6_.arc

Media Recovery Log /u01/app/oracle/fast_recovery_area/ORA11DG/archivelog/2013_08_17/o1_mf_1_28_90ylwdgf_.arc

Media Recovery Log /u01/app/oracle/fast_recovery_area/ORA11DG/archivelog/2013_08_17/o1_mf_1_29_90ym2qkz_.arc

Media Recovery Waiting for thread 1 sequence 30 (in transit)

同样还是未创建standby redo logfile的提示,在主库又一次切换归档后,生成了2个归档文件,序列28,29,并且被备库应用,另外有一个序列15是从RAC节点2中传递过来的,可以知道RAC节点2目前在备库应用到序列15

至此,整个RAC-DG环境搭建完毕。

********************************

为了能够使DG用在maximum available和maximum protection保护模式下,必须在备库创建standby redo logfiles,同时,必须在主库log_archive_dest_n中加上lgwr,sync,affirm参数

8.创建备库standby log文件

SQL> select * from v$standby_log;

no rows selected

SQL> alter database add standby logfile group

SQL> select thread#,group#,bytes/1024/1024 M from v$log;

THREAD# GROUP# M

---------- ---------- ----------

1 1 50

1 2 50

2 3 50

2 4 50

从上面的结果看出, RAC 有两个Redo Thread,每个Thread 有两个日志组,每个日志文件大小有50MB,所以要针对每个thread 需要创建3组 Standby Redo Log,大小为50MB。

SQL> Alter database add standby logfile thread 1 group 5 '/u01/app/oracle/oradata/ora11dg/datafile/redostd05.log' size 50m;

Alter database add standby logfile thread 1 group 5 '/u01/app/oracle/oradata/ora11dg/datafile/redostd05.log' size 50m

*

ERROR at line 1:

ORA-01156: recovery or flashback in progress may need access to files

说明必须先停止redo apply才可以创建

SQL> alter database recover managed standby database disconnect;

alter database recover managed standby database disconnect

*

ERROR at line 1:

ORA-01153: an incompatible media recovery is active

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> Alter database add standby logfile thread 1 group 5 '/u01/app/oracle/oradata/ora11dg/datafile/redostd05.log' size 50m;

Database altered.

SQL> Alter database add standby logfile thread 1 group 6 '/u01/app/oracle/oradata/ora11dg/datafile/redostd06.log' size 50m;

Database altered.

SQL> Alter database add standby logfile thread 1 group 7 '/u01/app/oracle/oradata/ora11dg/datafile/redostd07.log' size 50m;

Database altered.

SQL> Alter database add standby logfile thread 2 group 8 '/u01/app/oracle/oradata/ora11dg/datafile/redostd08.log' size 50m;

Database altered.

SQL> Alter database add standby logfile thread 2 group 9 '/u01/app/oracle/oradata/ora11dg/datafile/redostd09.log' size 50m;

Database altered.

SQL> Alter database add standby logfile thread 2 group 10 '/u01/app/oracle/oradata/ora11dg/datafile/redostd10.log' size 50m;

Database altered.

SQL> select group#,type,member from v$logfile where type='STANDBY';

GROUP# TYPE MEMBER

---------- ------- ------------------------------------------------------------

5 STANDBY /u01/app/oracle/oradata/ora11dg/datafile/redostd05.log

6 STANDBY /u01/app/oracle/oradata/ora11dg/datafile/redostd06.log

7 STANDBY /u01/app/oracle/oradata/ora11dg/datafile/redostd07.log

8 STANDBY /u01/app/oracle/oradata/ora11dg/datafile/redostd08.log

9 STANDBY /u01/app/oracle/oradata/ora11dg/datafile/redostd09.log

10 STANDBY /u01/app/oracle/oradata/ora11dg/datafile/redostd10.log

6 rows selected.

修改主库使用lgwr方式传送redo log

SQL> alter system set log_archive_dest_2='service=ora11dg lgwr valid_for=(online_logfiles,primary_role) db_unique_name=ora11dg';

System altered.

SQL> show parameter log_archive_dest_2

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_2 string service=ora11dg lgwr valid_for

=(online_logfiles,primary_role

) db_unique_name=ora11dg

log_archive_dest_20 string

log_archive_dest_21 string

log_archive_dest_22 string

log_archive_dest_23 string

log_archive_dest_24 string

log_archive_dest_25 string

log_archive_dest_26 string

log_archive_dest_27 string

log_archive_dest_28 string

log_archive_dest_29 string

#主库切换日志后,查看RAC主库alert文件内容:

******************************************************************

LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2

******************************************************************

LGWR: Standby redo logfile selected for thread 1 sequence 32 for destination LOG_ARCHIVE_DEST_2

Thread 1 advanced to log sequence 32 (LGWR switch)

Current log# 2 seq# 32 mem# 0: +DATA/ora11rac/onlinelog/group_2.262.823440213

Current log# 2 seq# 32 mem# 1: +BACKUPDG/ora11rac/onlinelog/group_2.258.823440215

Sat Aug 17 07:31:09 2013

Archived Log entry 70 added for thread 1 sequence 31 ID 0xd0a41306 dest 1:

表示已经使用了备库的standby redo logfile

#切换RAC主库的保护模式

SQL> alter database set standby database to maximize protection;

alter database set standby database to maximize protection

*

ERROR at line 1:

ORA-01126: database must be mounted in this instance and not open in any instance

说明数据库必须在mount状态下,并且所有节点不能是open状态

将2个节点都启动到mount状态

RAC1->startup mount force

ORACLE instance started.

Total System Global Area 835104768 bytes

Fixed Size 2232960 bytes

Variable Size 578817408 bytes

Database Buffers 251658240 bytes

Redo Buffers 2396160 bytes

Database mounted.

RAC2-> startup mount force

ORACLE instance started.

Total System Global Area 835104768 bytes

Fixed Size 2232960 bytes

Variable Size 583011712 bytes

Database Buffers 247463936 bytes

Redo Buffers 2396160 bytes

Database mounted.

SQL> set sqlprompt 'RAC2->'

继续修改RAC主库保护模式:

RAC1->select open_mode,database_role,protection_mode,protection_level from v$database;

OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL

-------------------- ---------------- -------------------- --------------------

MOUNTED PRIMARY MAXIMUM PROTECTION UNPROTECTED

查看备库保护模式:

SQL> select open_mode,database_role,protection_mode,protection_level from v$database;

OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL

-------------------- ---------------- -------------------- --------------------

READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE

由于此时RAC数据库是mount状态,所以PROTECTION_LEVEL状态为UNPROTECTED,备库也并未把模式转换为MAXIMUM PROTECTION

重启数据库到open模式:

RAC1->startup force

ORACLE instance started.

Total System Global Area 835104768 bytes

Fixed Size 2232960 bytes

Variable Size 578817408 bytes

Database Buffers 251658240 bytes

Redo Buffers 2396160 bytes

Database mounted.

Database opened.

RAC1->select open_mode,database_role,protection_mode,protection_level from v$database;

OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL

-------------------- ---------------- -------------------- --------------------

READ WRITE PRIMARY MAXIMUM PROTECTION MAXIMUM PROTECTION

备库查看保护模式:

DG-> select open_mode,database_role,protection_mode,protection_level from v$database;

OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL

-------------------- ---------------- -------------------- --------------------

READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PROTECTION MAXIMUM PROTECTION

此时保护模式已经正常传递到备库,官方文档第5章【Data Guard Protection Modes】阐述了关于保护模式转换,其中提到,当需要转换到MAXIMUM AVAILABLILITY和MAXIMUM PROTECTION保护模式时必须满足LGWR,AFFIRM,DB_UNIQUE_NAME,LGWR模式默认是采用SYNC模式传输的,所以SYNC可以不需要指定,另外,在11g,在启用LGWR模式的情况下,如果AFFIRM不指定,则默认采用AFFIRM。而在10g,默认是NOAFFIRM的,指点需要格外注意。除此以外,备库也是必须要有standby
redo logfiles的,否则保护模式无法切换成功。

分别从RAC的两个节点切换日志,让归档传到standby,分析在standby上如何应用来自两个节点的归档日志

先启动RAC两个节点

主库:

RAC1->select open_mode from v$database;

OPEN_MODE

--------------------

READ WRITE

备库:

RAC2->select open_mode from v$database;

OPEN_MODE

--------------------

MOUNTED

RAC2->alter database open;

Database altered.

RAC1->alter system switch logfile;

System altered.

#RAC主库切换日志后查看进程

RAC1->select process,status,sequence#,thread# from v$managed_standby;

PROCESS STATUS SEQUENCE# THREAD#

--------- ------------ ---------- ----------

ARCH OPENING 43 1

ARCH CLOSING 42 1

ARCH CONNECTED 0 0

ARCH CLOSING 42 1

LGWR CLOSING 36 1

LNS WRITING 44 1

6 rows selected.

#备库切换日志后查看进程

RAC2->alter system switch logfile;

System altered.

RAC2->select process,status,sequence#,thread# from v$managed_standby;

PROCESS STATUS SEQUENCE# THREAD#

--------- ------------ ---------- ----------

ARCH CLOSING 37 2

ARCH CONNECTED 0 0

ARCH CLOSING 36 2

ARCH CLOSING 36 2

LNS WRITING 38 2

由于采用log_archive_dest_2的value值是service=ora11dg valid_for=(online_logfiles,primary_role) db_unique_name=ora11dg并未指定lgwr,默认采用arch方式,此处可以看到切换日志后最新序列44对应的进程是LNS,即log-write network-server,如果是采用lgwr方式,可以在此看到LGWR进程

RAC1->select thread#,max(sequence#) from v$archived_log group by thread#;

THREAD# MAX(SEQUENCE#)

---------- --------------

1 43

2 37

查看备库日志应用情况

DG->select thread#,sequence#,archived,applied from v$archived_log where sequence#>35 order by 1,2;

THREAD# SEQUENCE# ARC APPLIED

---------- ---------- --- ---------

1 36 YES YES

1 37 YES YES

1 38 YES YES

1 39 YES YES

1 40 YES YES

1 41 YES YES

1 42 YES YES

1 43 YES YES

2 36 YES YES

2 37 YES NO

10 rows selected.

#主库切换一次日志并查看

RAC1->alter system switch logfile;

System altered.

RAC1->select thread#,max(sequence#) from v$archived_log group by thread#;

THREAD# MAX(SEQUENCE#)

---------- --------------

1 44

2 37

RAC1->select process,status,sequence#,thread# from v$managed_standby;

PROCESS STATUS SEQUENCE# THREAD#

--------- ------------ ---------- ----------

ARCH CLOSING 43 1

ARCH CLOSING 44 1

ARCH CONNECTED 0 0

ARCH CLOSING 42 1

LGWR CLOSING 36 1

LNS WRITING 45 1

6 rows selected.

#备库查看日志应用

DG->select thread#,sequence#,archived,applied from v$archived_log where sequence#>35 order by 1,2;

THREAD# SEQUENCE# ARC APPLIED

---------- ---------- --- ---------

1 36 YES YES

1 37 YES YES

1 38 YES YES

1 39 YES YES

1 40 YES YES

1 41 YES YES

1 42 YES YES

1 43 YES YES

1 44 YES NO

2 36 YES YES

2 37 YES YES

11 rows selected.

#备库切换一次日志并查看

RAC2->alter system switch logfile;

System altered.

RAC2->select process,status,sequence#,thread# from v$managed_standby;

PROCESS STATUS SEQUENCE# THREAD#

--------- ------------ ---------- ----------

ARCH CLOSING 37 2

ARCH CONNECTED 0 0

ARCH CLOSING 38 2

ARCH CLOSING 36 2

LNS WRITING 39 2

RAC2->select thread#,max(sequence#) from v$archived_log group by thread#;

THREAD# MAX(SEQUENCE#)

---------- --------------

1 44

2 38

#备库查看日志应用

DG->select thread#,sequence#,archived,applied from v$archived_log where sequence#>35 order by 1,2;

THREAD# SEQUENCE# ARC APPLIED

---------- ---------- --- ---------

1 36 YES YES

1 37 YES YES

1 38 YES YES

1 39 YES YES

1 40 YES YES

1 41 YES YES

1 42 YES YES

1 43 YES YES

1 44 YES YES

2 36 YES YES

2 37 YES YES

2 38 YES NO

12 rows selected.

根据以上规律得出结论:在arch模式下,在每个节点上做日志切换时,备库单独应用每个节点线程(thread)的归档,并且在应用另一个节点thread前,如果当前thread有未应用的日志,则先应用

--------------------------------------------------------------------------------------------------------

By aaron8219 Chinaunix Blog:http://blog.chinaunix.net/uid/24612962.html

原创文章,转载请注明链接,谢谢!

/article/8391284.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: