Orackle 10g 数据库DataGuard配置规范
2010-04-18 00:11
295 查看
Orackle10g数据库DataGuard配置规范
目录:
第一部分:文档信息
第二部分:配置DataGuard需要的硬件和系统要求
第三部分:Oracle10g的DataGuard的几个概念
第四部分:创建物理备用数据库和启动DataGuard的具体步骤
第五部分:对DataGuard日常监控的要求
第六部分:备用数据库的角色切换步骤
第七部分:在最大性能模式下的DataGuard配置步骤
第八部分:在最大可用模式下的DataGuard配置步骤
第九部分:在最大保护模式下的DataGuard配置步骤
第十部分:DataGuard下跟踪到的等待事件
第十一部分:如何做到保护数据
本文档是针对oracle10g数据库的physicalstanby数据库的DataGuard配置的。
2、主数据库服务和备用的数据库服务器需要使用相同的操作系统(补丁包也相同)。
3、主数据库服务和备用的数据库服务器需要使用相同的oracle数据库版本(包括补丁包)。
Redodatatransmittedfromtheprimarydatabaseisreceivedbytheremotefileserver(RFS)processonthestandbysystemwheretheRFSprocesswritestheredodatatoarchivedlogfilesorstandbyredologfiles.
在下列的情况下,必须使用standbyredolog文件:
Themaximumprotectionandmaximumavailabilitylevelsofdataprotection
Real-timeapply
Cascadedredologdestinations
使用standbyredolog有如下优点:
Thearchiver(ARCn)processorthelogwriter(LGWR)processontheprimarydatabasecantransmitredodatadirectlytoremotestandbyredologfiles,potentiallyeliminatingtheneedtoregisterapartialarchivedlogfile(forexample,torecoverafterastandbydatabasecrashes).
如何配置standbyredolog
(1)确保主备数据库上的redologfile的大小相同(或备机的redolog比主机的大)
(2)确定standbyredologgroup的数量
(maximumnumberoflogfilesforeachthread+1)*maximumnumberofthreads
(3)使用alterdatabaseaddstandbylogfile语句在备用数据库上增加standbyredolog
ARCn进程来传送redodata只在用在最大性能模式的DataGuard环境(maximumperformance),ARCn进程在什么时间传送redodata是一个参数来控制的:这个参数就是:
ArchivingtoLocalDestinationsBeforeArchivingtoRemoteDestinations
Specifying
ArchivingtoLocalandRemoteDestinationsattheSameTime
(2)LGWR进程来传送redodata到备用数据库
LGWR进程传送redodata也分成两种情况:SYNC和ASYNC
LGWRSYNC(同步模式)Transactionsarenotcommittedontheprimarydatabaseuntiltheredodatanecessarytorecoverthetransactionsisreceivedbythedestination.
LGWRSYNCArchivaltoaRemoteDestinationwithStandbyRedoLogFiles
Alogswitchontheprimarydatabasetriggersalogswitchonthestandbydatabase,causingARCnprocessesonthestandbydatabasetoarchivethestandbyredologfilestoarchivedredologfilesonthestandbydatabase.Then,logapplyservicesuseRedoApply(MRPprocess)orSQLApply(LSPprocess)toapplytheredodatatothestandbydatabase.
Ifreal-timeapplyisenabled,DataGuardrecoversredodatadirectlyfromthecurrentstandbyredologfileasitisbeingfilledupbytheRFSprocess.
LGWRASYNC模式
如何设置real-timeapply呢?
(2)管理物理备机上的redoapply?
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASECANCEL
SetPARALLEL_EXECUTION_MESSAGE_SIZE=4096
TuneNetworkI/O
6、在DataGuard环境下,三种保护数据的模式
DataGuard的三种保护模式
Table5-2MinimumRequirementsforDataProtectionModes
下面这个用法
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;
7、在DataGuard环境下,几个重要参数的说明
(1)LOG_ARCHIVE_CONFIG
Bydefault,the
(2)
The
(4)
(5)
(6)standby_file_management参数(注意这个参数在10.2.0.2中缺省是manaul,需要修改成auto)
SQL>altersystemsetstandby_file_management=autoscope=both;
Systemaltered.
8、在DataGuard环境下,管理ArchiveGaps
数据库名称DB_NAME为oradb(主备数据库的db_name、oracle_sid和instance_name都是oradb)
2、修改主数据库的日志模式为forcelogging(alterdatabaseforcelogging;)
3、确认passwordfile文件(如果不存在就用orapwd创建一个)
4、修改主数据库的参数
SQL>altersystemsetdb_unique_name='dg_pri'scope=spfile;
SQL>altersystemsetservice_names='dg_pri'scope=spfile;
SQL>altersystemsetlog_archive_config='DG_CONFIG=(dg_pri,dg_sec)'scope=both;
SQL>altersystemsetlog_archive_dest_1='location=/oradata/oradb/archivelog/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dg_pri'scope=spfile;
SQL>altersystemsetlog_archive_dest_2='service=dg_secLGWRSYNCAFFIRMNET_TIMEOUT=30VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg_sec'
scope=spfile;
SQL>altersystemsetstandby_file_management=autoscope=both;
Systemaltered.
SQL>altersystemsetfal_server='dg_sec'scope=both;
Systemaltered.
SQL>altersystemsetfal_client='dg_pri'scope=both;
Systemaltered.
5、对主数据库做一个备份(最好用rman备份或冷备份也可以)
6、创建物理备用数据库的standbycontrolfile
把主数据库启动到mount状态
SQL>alterdatabasecreatestandbycontrolfileas'/tmp/control01.ctl';
Databasealtered.
7、为物理备用数据库准备pfile文件
SQL>createpfile='/tmp/init.dg_sec.ora'fromspfile;
修改vi/tmp/init.dg_sec.ora
*.db_unique_name='dg_sec'
*.fal_client='dg_sec'
*.fal_server='dg_pri'
*.service_names='dg_sec'
*.log_archive_dest_1='location=/oradata/oradb/sec_archivelog/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dg_sec'
*.log_archive_dest_2='service=dg_priLGWRSYNCAFFIRMNET_TIMEOUT=30VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg_pri'
还要修改一个参数
8、把standbycontrol文件、pfile文件和密码文件拷贝到备用数据库上。
(在备用数据库上创建dump相关的目录)
9、把物理备用数据库启动到mount状态,创建standbyredologgroup(group的size与主数据库的完全相同,group的个数是主数据库的的onlineredolog的2倍或更多).
SQL>startmount
SQL>selectDATABASE_ROLEfromv$database;
DATABASE_ROLE
--------------------------------
PHYSICALSTANDBY
SQL>alterdatabaseaddstandbylogfilegroup10('/oradata/oradb/oradb/sec_redo01.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup11('/oradata/oradb/oradb/sec_redo02.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup12('/oradata/oradb/oradb/sec_redo03.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup13('/oradata/oradb/oradb/sec_redo04.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup14('/oradata/oradb/oradb/sec_redo05.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup15('/oradata/oradb/oradb/sec_redo06.log')size50M;
Databasealtered.
10、配置主备数据库的listener和tnsnames.ora文件
主数据库上的listener.ora的配置:
SID_LIST_DG=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=oradb)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=oradb)
)
)
DG=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.47)(PORT=18001))
)
物理备用数据库上的listener.ora文件
SID_LIST_DG=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=oradb)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=oradb)
)
)
DG=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.50)(PORT=18001))
)
主备数据库的tnsnames.ora文件:
DG_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.47)(PORT=18001))
)
(CONNECT_DATA=
(SID=oradb)
(SERVER=DEDICATED)
)
)
DG_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.50)(PORT=18001))
)
(CONNECT_DATA=
(SID=oradb)
(SERVER=DEDICATED)
)
)
11、在主数据库上设置DataGuard的保护模式.把主数据库启动到mount状态设置好DataGuard的保护模式.设置好保护模式后,再把主数据库启动到open状态。(是否设置好DataGuard的保护模式后再创建standbycontrolfile?)。
SQL>
查看DataGuard的保护模式
12、在物理备用数据库上启动日志传输
SQL>
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect;
Databasealtered.
13、
跟踪redolog的传送过程
可以在主备数据库上设置
SQL>selectrecovery_modefromv$archive_dest_status;
Querythephysicalstandbydatabasetomonitorlogapplyandlogtransportservicesactivityatthestandbysite.
(2)V$ARCHIVE_DEST_STATUS
Failover方式的切换是在主数据库宕掉(一般是硬件严重故障导致)后,物理备用数据库切换成primaryrole,切换后,原来宕掉的数据库一般不能立即加入到DataGuard中,需要修改错误后重新配置到DataGuard中.
(2)在物理备用数据库上检查是否有archiveredologgaps
(3)消除archiveredologgaps
从主数据库上或其他备份的地方把没有传到备数据库的archiveredolog传到物理备用数据库上,并注册到物理备用数据库的controlfile中。
(4)拷贝其他丢失的archiveredolog到物理备用数据库,并注册
(5)执行了(3)、(4)步骤后,再查看v$archive_gap,看archiveloggaps是否还存在
(6)在物理备用数据库上发起failover操作
a,如果备数据库上有standbyredolog
b,如果备数据库上没有standbyredolog
(7)把物理备用数据库转化成主用角色
(8)把新的主用数据库重新启动
(9)对新的主用数据库做全备份.
10.190.57.38是主数据库,10.190.57.53是物理备用数据库
数据库名称DB_NAME为orclesb(主备数据库的db_name、oracle_sid和instance_name都是ora10g)
修改10.190.57.38主数据库orclesb为forcelogging(alterdatabaseforcelogging;)
1,配置好主库上的listener和tnsnames.ora
在主库10.190.57.38上配置了listener和tnsnames.ora
ORCLESBi_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.38)(PORT=18010))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
ORCLESB_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.53)(PORT=20038))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
备库
[oracle@CXXBZDB1]$catlistener.ora
ORCLESB_SEC=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.53)(PORT=20038))
)
SID_LIST_ORCLESB_SEC=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orclesb)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=orclesb)
)
)
[oracle@CXXBZDB1]$cattnsnames.ora
ORCLESB_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.38)(PORT=18010))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
ORCLESB_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.53)(PORT=20038))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
2,修改主数据库上的spfile参数(修改前先备份当前的spfile)
在10.190.57.38上修改如下的spfile
altersystemsetlog_archive_dest_2='SERVICE=ORCLESB_SEC'scope=both;
altersystemsetlog_archive_dest_state_2=deferscope=both;
altersystemsetfal_server='ORCLESB_SEC'scope=both;
altersystemsetfal_client='ORCLESB_PRI'scope=both;
standby_file_management参数(注意这个参数在10.2.0.2中缺省是manaul,需要修改成auto)
SQL>altersystemsetstandby_file_management=autoscope=both;
Systemaltered.
3,对主数据库做一个rman备份
在10.190.57.38对ora10g数据库做一个rman全备份(online)
RMAN>run
{
allocatechannelch00typedisk;
backupTAGhot_db_bk_level0FORMAT'/p09esb/p09esb_u03/20100317/bk_%s_%p_%t'database;
RELEASECHANNELch00;
}
allocatedchannel:ch00
channelch00:sid=964devtype=DISK
Startingbackupat2010-03-1721:27:44
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
inputdatafilefno=00005name=/p09esb/p09esb_u02/orclesb/tbsesb01.dbf
inputdatafilefno=00001name=/p09esb/p09esb_u01/orclesb/system01.dbf
inputdatafilefno=00003name=/p09esb/p09esb_u01/orclesb/sysaux01.dbf
inputdatafilefno=00006name=/p09esb/p09esb_u01/orclesb/patrol_01.dbf
inputdatafilefno=00002name=/p09esb/p09esb_u01/orclesb/undotbs01.dbf
inputdatafilefno=00004name=/p09esb/p09esb_u01/orclesb/users01.dbf
channelch00:startingpiece1at2010-03-1721:27:44
channelch00:finishedpiece1at2010-03-1721:27:59
piecehandle=/p09esb/p09esb_u03/20100317/bk_647_1_713914064tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:15
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
includingcurrentcontrolfileinbackupset
includingcurrentSPFILEinbackupset
channelch00:startingpiece1at2010-03-1721:27:59
channelch00:finishedpiece1at2010-03-1721:28:00
piecehandle=/p09esb/p09esb_u03/20100317/bk_648_1_713914079tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:01
Finishedbackupat2010-03-1721:28:00
releasedchannel:ch00
4,创建物理备用数据库的standbycontrolfile
创建物理备用数据库的standbycontrolfile
在主数据库10.190.57.38上执行如下sql
sql>alterdatabasecreatestandbycontrolfileas'/home/oracle/orclesb_control_standby.ctl'
(或
5,创建备用数据库上使用的spfile
在主库上通过spfile来创建pfile
SQL>createpfile='/home/oracle/oraclesb.pfile'fromspfile;
修改了如下
*.fal_client='ORCLESB_SEC'
*.fal_server='ORCLESB_PRI'
*.standby_archive_dest='/p09esb/p09esb_u03/recv_arclog'
6,把spfile和standbycontrolfile传到备用数据库,把数据库启动到mount状态,restore数据库(注意还需要把$ORACLE_HOME/dbs下的密码文件也FTP到备机)
SQL>createspfilefrompfile='/p09esb/p09esb_u03/20100317/orclesb.pfile';
Filecreated.
SQL>startupnomount
ORACLEinstancestarted.
[oracle@CXCBDB3]$rmantarget/
RMAN>restorecontrolfilefrom‘/p09esb/p09esb_u03/20100317/orclesb_control_standby.ctl';
channelORA_DISK_1:copiedcontrolfilecopy
outputfilename=/p09esb/p09esb_u01/orclesb/control01.ctl
outputfilename=/p09esb/p09esb_u02/orclesb/control02.ctl
outputfilename=/p09esb/p09esb_u03/orclesb/control03.ctl
Finishedrestoreat2010-03-1722:45:01
把备机的数据库启动到mount状态
SQL>alterdatabasemountstandbydatabase;
Databasealtered.
查一下控制文件的备份集
RMAN>listbackup;
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
494Full716.00MDISK00:00:072010-03-1722:49:06
BPKey:494Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/p09esb/p09esb_u03/20100317/bk_654_1_713918939
ListofDatafilesinbackupset494
FileLVTypeCkpSCNCkpTimeName
-------------------------------------------
1Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/system01.dbf
2Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/undotbs01.dbf
3Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/sysaux01.dbf
4Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/users01.dbf
5Full186125942010-03-1722:48:59/p09esb/p09esb_u02/orclesb/tbsesb01.dbf
6Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/patrol_01.dbf
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
495Full5.30MDISK00:00:002010-03-1722:49:06
BPKey:495Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/p09esb/p09esb_u03/20100317/bk_655_1_713918946
ControlFileIncluded:CkpSCN:18612598Ckptime:2010-03-1722:49:06
SPFILEIncluded:Modificationtime:2010-03-1721:26:45
RMAN>run{
allocatechannelc1typedisk;
restoredatabase;
releasechannelc1;
}
RMAN>recoverdatabase;
RMAN>
7,查找主备数据库之间的archivedloggap信息,从主库的备份中找到archivedlog的备份,并把备份信息注册到standbydatabasecontrolfile中,恢复并应用这些归档日志.
(如果是archivedlogfile直接传过来,还可以直接把archivedlogfile直接注册到备机的控制文件中,如:
catalogarchivelog'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_839_690386448.arc';
注册后,在v$archivelog中就能看到了。
(第一次同步DataGuard时,可以使用这个办法查找
在备库上
SQL>selectmax(SEQUENCE#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
839
从rmanrecover信息中也可以看出只应用到seq839归档日志,其他后续日志还没有收到。
10,主备机之间建立Dataguard关系
在10.190.57.38上修改一个参数
altersystemsetlog_archive_dest_state_2=enable;
在备机(10.190.57.53
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEdisconnectfromsession;
在备机的alter.log中报如下错误提示信息:
注意还需要把$ORACLE_HOME/dbs下的密码文件也FTP到备机,否则在主机的alter.log中有如下的错误
ALTERSYSTEMSETlog_archive_dest_state_2='ENABLE'SCOPE=BOTH;
WedMar1723:08:102010
Error1031receivedloggingontothestandby
WedMar1723:08:102010
Errorsinfile/u01/oracle/admin/orclesb/bdump/orclesb_arc0_966802.trc:
ORA-01031:insufficientprivileges
PING[ARC0]:Heartbeatfailedtoconnecttostandby'ORCLESB_SEC'.Erroris1031.
把密码文件FTP到dataguard备机后,主机的alter.log中就没有上述错误了.
在备机的alter.log中有如下的信息
--ConnectedUserisValid
RFS[1]:AssignedtoRFSprocess917530
RFS[1]:Identifieddatabasetypeas'physicalstandby'
WedMar1723:18:102010
RFSLogMiner:Clientdisabledfromfurthernotification
RFS[1]:ArchivedLog:'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_840_690386448.arc'
RFS[1]:ArchivedLog:'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_841_690386448.arc'
RFS[1]:ArchivedLog:'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_842_690386448.arc'
WedMar1723:18:142010
MediaRecoveryLog/p09esb/p09esb_u03/recv_arclog/oraclesb_1_840_690386448.arc
MediaRecoveryLog/p09esb/p09esb_u03/recv_arclog/oraclesb_1_841_690386448.arc
MediaRecoveryLog/p09esb/p09esb_u03/recv_arclog/oraclesb_1_842_690386448.arc
MediaRecoveryWaitingforthread1sequence843
11,验证主备库之间是否是最大性能
备机上
selectdatabase_rolefromv$database;
DATABASE_ROLE
----------------
PHYSICALSTANDBY
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMPERFORMANCEMAXIMUMPERFORMANCENONEPHYSICALSTANDBY
18614140
10.190.57.83是主数据库,10.190.57.57是物理备用数据库
数据库名称DB_NAME为ora10g(主备数据库的db_name、oracle_sid和instance_name都是ora10g)
修改10.190.57.83主数据库ora10g的日志模式为forcelogging(alterdatabaseforcelogging;)
2,配置好主库上的listener和tnsnames.ora
在主库10.190.57.83上配置了listener和tnsnames.ora
cat$ORACLE_HOME/network/admin/listener.ora
ORA10G_PRI=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.83)(PORT=18188))
)
SID_LIST_ORA10G_PRI=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=ora10g)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=ora10g)
)
)
cat$ORACLE_HOME/network/admin/tnsnames.ora
ORA10G=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.83)(PORT=18083))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=ora10g)
)
)
ORA10G_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.83)(PORT=18188))
)
(CONNECT_DATA=
(SERVICE_NAME=ora10g)
)
)
ORA10G_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.57)(PORT=20188))
)
(CONNECT_DATA=
(SERVICE_NAME=ora10g)
)
)
2,修改主数据库上的spfile参数(修改前先备份当前的spfile)
在10.190.57.83上修改如下的spfile
altersystemsetlog_archive_dest_2='SERVICE=ORA10G_SECLGWRSYNCAFFIRMNET_TIMEOUT=30VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)'scope=spfile;
altersystemsetlog_archive_dest_state_2=deferscope=spfile;
altersystemsetfal_server='ORA10G_SEC'scope=spfile;
altersystemsetfal_client='ORA10G_PRI'scope=spfile;
3,对主数据库做一个rman备份
在10.190.57.83对ora10g数据库做一个rman全备份(online)
RMAN>run
2>{
3>allocatechannelch00typedisk;
4>backupTAGhot_db_bk_level0FORMAT'/cxdhxs/Archivelog/cxdhxs/ora10g/bk_%s_%p_%t'database;
5>sql'altersystemarchivelogcurrent';
6>BACKUPFORMAT'/cxdhxs/Archivelog/cxdhxs/ora10g/al_%s_%p_%t'ARCHIVELOGALL;
7>RELEASECHANNELch00;
8>}
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ch00
channelch00:sid=85devtype=DISK
Startingbackupat2009-12-3015:00:57
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
inputdatafilefno=00001name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/system01.dbf
inputdatafilefno=00002name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/undotbs01.dbf
inputdatafilefno=00003name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/sysaux01.dbf
inputdatafilefno=00004name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/users01.dbf
channelch00:startingpiece1at2009-12-3015:00:58
channelch00:finishedpiece1at2009-12-3015:01:13
piecehandle=/u01/oracle/product/db10gr2/dbs/bk_1_1_706978858tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:15
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
includingcurrentcontrolfileinbackupset
includingcurrentSPFILEinbackupset
channelch00:startingpiece1at2009-12-3015:01:15
channelch00:finishedpiece1at2009-12-3015:01:16
piecehandle=/u01/oracle/product/db10gr2/dbs/bk_2_1_706978873tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:03
Finishedbackupat2009-12-3015:01:16
sqlstatement:altersystemarchivelogcurrent
Startingbackupat2009-12-3015:01:16
currentlogarchived
channelch00:startingarchivelogbackupset
channelch00:specifyingarchivelog(s)inbackupset
inputarchivelogthread=1sequence=11recid=1stamp=706978876
inputarchivelogthread=1sequence=12recid=2stamp=706978876
channelch00:startingpiece1at2009-12-3015:01:17
channelch00:finishedpiece1at2009-12-3015:01:18
piecehandle=/u01/oracle/product/db10gr2/dbs/al_3_1_706978876tag=TAG20091230T150116comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:02
Finishedbackupat2009-12-3015:01:18
releasedchannel:ch00
RMAN>
4,创建物理备用数据库的standbycontrolfile
创建物理备用数据库的standbycontrolfile
在主数据库10.190.57.83上执行如下sql
sql>alterdatabasecreatestandbycontrolfileas'/home/oracle/control_standby.ctl'
(或
5,创建备用数据库上使用的spfile
在主库上通过spfile来创建pfile
SQL>createpfile='/home/oracle/ora10g.pfile'fromspfile;
修改了如下
*.fal_client='ORA10G_SEC'
*.fal_server='ORA10G_PRI'
*.log_archive_dest_2='service=ora10g_pri’
*.log_archive_dest_state_2=’defer’
*.standby_archive_dest='/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv'
6,把spfile和standbycontrolfile传到备用数据库,把数据库启动到mount状态,restore数据库
SQL>createspfilefrompfile='/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g.pfile';
Filecreated.
SQL>startupnomount
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
SQL>exit
[oracle@CXCBDB3]$rmantarget/
RecoveryManager:Release10.2.0.4.0-ProductiononWedDec3015:52:312009
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase:ora10g(notmounted)
RMAN>restorecontrolfilefrom'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g_ctl_standby.ctl';
Startingrestoreat2009-12-3015:52:51
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=153devtype=DISK
channelORA_DISK_1:copiedcontrolfilecopy
outputfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/control01.ctl
outputfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/control02.ctl
outputfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/control03.ctl
Finishedrestoreat2009-12-3015:52:53
把备机的数据库启动到mount状态
SQL>alterdatabasemountstandbydatabase;
Databasealtered.
查一下控制文件的备份集
RMAN>listbackup;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
ListofBackupSets
===================
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
1Full285.38MDISK00:00:092009-12-3015:01:07
BPKey:1Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/u01/oracle/product/db10gr2/dbs/bk_1_1_706978858
ListofDatafilesinbackupset1
FileLVTypeCkpSCNCkpTimeName
-------------------------------------------
1Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/system01.dbf
2Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/undotbs01.dbf
3Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/sysaux01.dbf
4Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/users01.dbf
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
2Full5.30MDISK00:00:022009-12-3015:01:15
BPKey:2Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/u01/oracle/product/db10gr2/dbs/bk_2_1_706978873
ControlFileIncluded:CkpSCN:185520Ckptime:2009-12-3015:01:13
SPFILEIncluded:Modificationtime:2009-12-3014:53:24
BSKeySizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------
313.40MDISK00:00:012009-12-3015:01:17
BPKey:3Status:AVAILABLECompressed:NOTag:TAG20091230T150116
PieceName:/u01/oracle/product/db10gr2/dbs/al_3_1_706978876
ListofArchivedLogsinbackupset3
ThrdSeqLowSCNLowTimeNextSCNNextTime
-----------------------------------------------------------
1111794752009-12-3014:02:551855282009-12-3015:01:16
1121855282009-12-3015:01:161855332009-12-3015:01:16
RMAN>
RMAN>run{
2>allocatechannelc1typedisk;
3>restoredatabase;
4>releasechannelc1;
5>}
allocatedchannel:c1
channelc1:sid=150devtype=DISK
Startingrestoreat2009-12-3015:59:00
channelc1:startingdatafilebackupsetrestore
channelc1:specifyingdatafile(s)torestorefrombackupset
restoringdatafile00001to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/system01.dbf
restoringdatafile00002to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/undotbs01.dbf
restoringdatafile00003to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/sysaux01.dbf
restoringdatafile00004to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/users01.dbf
channelc1:readingfrombackuppiece/u01/oracle/product/db10gr2/dbs/bk_1_1_706978858
RMAN>recoverdatabase;
Startingrecoverat2009-12-3016:00:04
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=150devtype=DISK
startingmediarecovery
channelORA_DISK_1:startingarchivelogrestoretodefaultdestination
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=11
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=12
channelORA_DISK_1:readingfrombackuppiece/u01/oracle/product/db10gr2/dbs/al_3_1_706978876
channelORA_DISK_1:restoredbackuppiece1
piecehandle=/u01/oracle/product/db10gr2/dbs/al_3_1_706978876tag=TAG20091230T150116
channelORA_DISK_1:restorecomplete,elapsedtime:00:00:01
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_11_706974874.arcthread=1sequence=11
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_12_706974874.arcthread=1sequence=12
unabletofindarchivelog
archivelogthread=1sequence=13
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat12/30/200916:00:06
RMAN-06054:mediarecoveryrequestingunknownlog:thread1seq13lowscn185533
RMAN>
7,查找主备数据库之间的archivedloggap信息,从主库的备份中找到archivedlog的备份,并把备份信息注册到standbydatabasecontrolfile中,恢复并应用这些归档日志.
(如果是archivedlogfile直接传过来,还可以直接把archivedlogfile直接注册到备机的控制文件中,如:
alterdatabaseregisterlogfile'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_24_707169363.arc';
或用rman中catalogarchivelog命令
注册后,在v$archivelog中就能看到了。
(第一次同步DataGuard时,可以使用这个办法查找
在备库上
SQL>selectmax(SEQUENCE#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
12
从rmanrecover信息中也可以看出只应用到seq12归档日志,其他后续日志还没有收到。
从主库的本地归档目录下看到
[oracle@CXDHXSDB1]$ls-lt
total24
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_19_706974874.arc
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_18_706974874.arc
中间还查13—17这几个归档日志,这些归档日志已经被带库备份后从本地删除了,需要从磁带上恢复这些归档。
从主库的控制文件可以查看这些归档日志的备份情况
BSKeySizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------
41.53MDISK00:00:012009-12-3016:13:04
BPKey:4Status:AVAILABLECompressed:NOTag:TAG20091230T161303
PieceName:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183
ListofArchivedLogsinbackupset4
ThrdSeqLowSCNLowTimeNextSCNNextTime
-----------------------------------------------------------
1121855282009-12-3015:01:161855332009-12-3015:01:16
1131855332009-12-3015:01:161859972009-12-3015:16:22
1141859972009-12-3015:16:221859992009-12-3015:16:22
1151859992009-12-3015:16:221860022009-12-3015:16:23
1161860022009-12-3015:16:231860042009-12-3015:16:24
1171860042009-12-3015:16:241881942009-12-3016:13:03
在备库(10.190.57.57上)
[oracle@CXCBDB3]$rmantarget/
RecoveryManager:Release10.2.0.4.0-ProductiononWedDec3016:18:052009
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase:ORA10G(DBID=4025847002,notopen)
RMAN>catalogbackuppiece'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183';
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
catalogedbackuppiece
backuppiecehandle=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183recid=4stamp=706983505
RMAN>recoverdatabase;
Startingrecoverat2009-12-3016:18:55
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=147devtype=DISK
startingmediarecovery
channelORA_DISK_1:startingarchivelogrestoretodefaultdestination
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=13
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=14
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=15
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=16
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=17
channelORA_DISK_1:readingfrombackuppiece/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183
channelORA_DISK_1:restoredbackuppiece1
piecehandle=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183tag=TAG20091230T161303
channelORA_DISK_1:restorecomplete,elapsedtime:00:00:02
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_13_706974874.arcthread=1sequence=13
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_14_706974874.arcthread=1sequence=14
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_15_706974874.arcthread=1sequence=15
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_16_706974874.arcthread=1sequence=16
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_17_706974874.arcthread=1sequence=17
unabletofindarchivelog
archivelogthread=1sequence=18
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat12/30/200916:18:59
RMAN-06054:mediarecoveryrequestingunknownlog:thread1seq18lowscn188194
RMAN>
8,在备库上创建standbylogfile.
(要大小相同或更大,standbylogfile个数比主数据库多1个/thread)
UsethefollowingSQLcommandsonthestandbydatabasetocreate
standbyredologfilesthatmatchtheprimarydatabase:
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo03.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo04.log'SIZE52428800;
9,在备库(10.190.57.57)上创建standbylogfile.
(要大小相同或更大,standbylogfile个数比主数据库多1个/thread)
UsethefollowingSQLcommandsonthestandbydatabasetocreate
standbyredologfilesthatmatchtheprimarydatabase:
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo03.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo04.log'SIZE52428800;
10,把主库关闭启动到mount状态,设置成最大可用模式,主备机之间建立Dataguard同步关系
在10.190.57.83主库上
SQL>shutdownimmediate
SQL>startupmount
把主库上的归档日志传到备机,
[oracle@CXDHXSDB1]$pwd
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log
[oracle@CXDHXSDB1]$ls-lt|more
total24
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_19_706974874.arc
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_18_706974874.arc
在备机上继续recover最新的archivelog日志
RMAN>recoverdatabase;
Startingrecoverat2009-12-3016:42:20
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=150devtype=DISK
startingmediarecovery
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_18_706974874.arcthread=1sequence=18
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arcthread=1sequence=19
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arcthread=1sequence=20
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat12/30/200916:42:22
RMAN-11003:failureduringparse/executionofSQLstatement:alterdatabaserecoverlogfile'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arc'
ORA-00310:archivedlogcontainssequence19;sequence20required
ORA-00334:archivedlog:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arc'
备机上
SQL>selectmax(sequence#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
19
主机上
SQL>selectmax(sequence#)fromv$archived_log
2;
MAX(SEQUENCE#)
--------------
19
在主机(10.190.57.83)上修改一个参数
altersystemsetlog_archive_dest_state_2=enable;
在备机(10.190.57.57)
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect;
在备机的alter.log中报如下错误提示信息:
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect
WedDec3016:54:242009
AttempttostartbackgroundManagedStandbyRecoveryprocess(ora10g)
MRP0startedwithpid=19,OSid=2196128
WedDec3016:54:242009
MRP0:BackgroundManagedStandbyRecoveryprocessstarted(ora10g)
ManagedStandbyRecoverystartingRealTimeApply
parallelrecoverystartedwith16processes
WedDec3016:54:292009
Waitingforallnon-currentORLstobearchived...
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
Clearingonlineredologfile1/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log
Clearingonlinelog1ofthread1sequencenumber13
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-19527:physicalstandbyredologmustberenamed
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
Clearingonlineredologfile1complete
MediaRecoveryWaitingforthread1sequence20
WedDec3016:54:302009
Completed:ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect
WedDec3016:56:192009
在主机(10.190.57.83)上设置最大可用模式
SQL>ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEAVAILABILITY;
Databasealtered.
在主机(10.190.57.83)上把数据库打开
SQL>alterdatabaseopen;
Databasealtered.
在主机的alter.log中基本上没有什么提示信息,
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
StartingbackgroundprocessQMNC
QMNCstartedwithpid=19,OSid=238740
WedDec3016:56:302009
Completed:alterdatabaseopen
在备机的alter.log中提示如下:
RFS[1]:AssignedtoRFSprocess2339140
RFS[1]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMAVAILABILITYmode
ChangingstandbycontrolfiletoMAXIMUMAVAILABILITYmode
Primarythread1alreadymarkedasopen;setting'closed'
WedDec3016:56:192009
RFSLogMiner:Clientdisabledfromfurthernotification
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[2]:AssignedtoRFSprocess2187826
RFS[2]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMAVAILABILITYmode
Standbycontrolfileconsistentwithprimary
PrimarydatabaseisinMAXIMUMAVAILABILITYmode
Standbycontrolfileconsistentwithprimary
RFS[2]:Successfullyopenedstandbylog4:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'
WedDec3016:56:262009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[3]:AssignedtoRFSprocess2294696
RFS[3]:Identifieddatabasetypeas'physicalstandby'
RFS[3]:Successfullyopenedstandbylog5:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'
WedDec3016:56:292009
MediaRecoveryLog/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_20_706974874.arc
MediaRecoveryWaitingforthread1sequence21(intransit)
WedDec3016:56:302009
RecoveryofOnlineRedoLog:Thread1Group4Seq21Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log
WedDec3016:57:162009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[4]:AssignedtoRFSprocess1712200
RFS[4]:Identifieddatabasetypeas'physicalstandby'
11,验证主备库之间是否是最大可用模式
SQL>selectdatabase_rolefromv$database;
DATABASE_ROLE
----------------
PRIMARY
SQL>SELECTRECOVERY_MODEFROMV$ARCHIVE_DEST_STATUSWHEREDEST_ID=2;
RECOVERY_MODE
-----------------------
MANAGEDREALTIMEAPPLY
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMAVAILABILITYMAXIMUMAVAILABILITYNONEPRIMARY
189653
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMAVAILABILITYMAXIMUMAVAILABILITYNONEPHYSICALSTANDBY
189104
在最大可用模式下主备数据库的current_scn并不相同。
主库上SQL>selectcurrent_scnfromv$database;
CURRENT_SCN
-----------
220718
备库上SQL>selectcurrent_scnfromv$database;
CURRENT_SCN
-----------
189699
第10步骤
在主机(10.190.57.83)上设置最大保护模式
SQL>ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEProtection;
Databasealtered.
SQL>ALTERDATABASEopen
Databasealtered.
主机的alter.log中提示如下信息
ThuDec3112:45:172009
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEProtection
ThuDec3112:45:172009
Completed:ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEProtection
ThuDec3112:45:412009
alterdatabaseopen
ThuDec3112:45:412009
LGWR:STARTINGARCHPROCESSES
ARC0startedwithpid=16,OSid=320658
ThuDec3112:45:412009
ARC0:Archivalstarted
ARC1:Archivalstarted
LGWR:STARTINGARCHPROCESSESCOMPLETE
ARC1startedwithpid=17,OSid=369132
ThuDec3112:45:412009
LGWR:PrimarydatabaseisinMAXIMUMPROTECTIONmode
ThuDec3112:45:412009
DestinationLOG_ARCHIVE_DEST_2isSYNCHRONIZED
LGWR:DestinationLOG_ARCHIVE_DEST_1isnotservicedbyLGWR
LNSbstartedwithpid=18,OSid=250806
ThuDec3112:45:482009
******************************************************************
LGWR:Setting'active'archivalfordestinationLOG_ARCHIVE_DEST_2
******************************************************************
LNSbstartedwithpid=18,OSid=455890
ThuDec3112:45:512009
LGWR:Standbyredologfileselectedtoarchivethread1sequence26
LGWR:Standbyredologfileselectedforthread1sequence26fordestinationLOG_ARCHIVE_DEST_2
ThuDec3112:45:512009
Thread1advancedtologsequence26(threadopen)
LGWR:WaitingforORLstobearchived...
ThuDec3112:45:522009
ARC0:Becomingthe'noFAL'ARCH
ARC0:Becomingthe'noSRL'ARCH
ThuDec3112:45:522009
ARC1:BecomingtheheartbeatARCH
ThuDec3112:45:522009
ARC0:LGWRisactivelyarchivingdestinationLOG_ARCHIVE_DEST_2
ARC0:Standbyredologfileselectedforthread1sequence25fordestinationLOG_ARCHIVE_DEST_2
ThuDec3112:45:552009
LGWR:ORLssuccessfullyarchived
Thread1openedatlogsequence26
Currentlog#2seq#26mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo02.log
Successfulopenofredothread1
ThuDec3112:45:552009
MTTRadvisoryisdisabledbecauseFAST_START_MTTR_TARGETisnotset
ThuDec3112:45:552009
SMON:enablingcacherecovery
ThuDec3112:45:562009
SuccessfullyonlinedUndoTablespace1.
ThuDec3112:45:562009
SMON:enablingtxrecovery
ThuDec3112:45:562009
DatabaseCharactersetisAL32UTF8
OpeningwithinternalResourceManagerplan
whereNUMAPG=1,CPUs=24
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
StartingbackgroundprocessQMNC
QMNCstartedwithpid=19,OSid=234498
ThuDec3112:45:572009
Completed:alterdatabaseopen
备机的alter.log中提示如下的信息:
RFS[5]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMPROTECTIONmode
ChangingstandbycontrolfiletoMAXIMUMPROTECTIONmode
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[6]:AssignedtoRFSprocess1712232
RFS[6]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMPROTECTIONmode
Standbycontrolfileconsistentwithprimary
PrimarydatabaseisinMAXIMUMPROTECTIONmode
Standbycontrolfileconsistentwithprimary
RFS[6]:Successfullyopenedstandbylog4:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'
ThuDec3112:45:522009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[7]:AssignedtoRFSprocess2396486
RFS[7]:Identifieddatabasetypeas'physicalstandby'
RFS[7]:Successfullyopenedstandbylog5:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'
ThuDec3112:45:562009
MediaRecoveryLog/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_25_706974874.arc
MediaRecoveryWaitingforthread1sequence26(intransit)
ThuDec3112:45:562009
RecoveryofOnlineRedoLog:Thread1Group4Seq26Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log
ThuDec3112:46:412009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[8]:AssignedtoRFSprocess1798322
RFS[8]:Identifieddatabasetypeas'physicalstandby'
主库上检查状态:
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMPROTECTIONMAXIMUMPROTECTIONNONEPRIMARY
221306
备库上检查状态:
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMPROTECTIONMAXIMUMPROTECTIONNONEPHYSICALSTANDBY
220800
在最大保护模式下,备库不允许被关闭,提示如下信息
在备库上执行shutdown
SQL>shutdownimmediate
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
SQL>
ThuDec3112:56:092009
AttempttoshutdownStandbyDatabase
StandbyDatabaseoperatinginNODATALOSSmode
Detectedprimarydatabasealive,shutdownprimaryfirst,shutdownaborted
把主数据库关闭后,再到备库上执行如下的命令
SQL>alterdatabaseopenreadonly;
alterdatabaseopenreadonly
*
ERRORatline1:
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
(二)、当主库突然宕机后,在最大保护模式下,备库如何打开的问题.
模拟主库突然宕机(主库上执行shutdownabort),
在最大保护模式下,备库无法直接打开的。
SQL>selectDATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVELfromv$database;
DATABASE_ROLEPROTECTION_MODEPROTECTION_LEVEL
--------------------------------------------------------
PHYSICALSTANDBYMAXIMUMPROTECTIONMAXIMUMPROTECTION
SQL>alterdatabaseopenreadonly;
alterdatabaseopenreadonly
*
ERRORatline1:
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
备库如何接管和打开,需要执行如下的步骤
0,(针对最大保护模式的Dataguard,在failover前,需要在备库上执行如下操作:
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPERFORMANCE
1,Identifyandresolveanygapsinthearchivedredologfiles.
2,RepeatStep1untilallgapsareresolved.
3,Copyanyothermissingarchivedredologfiles.
4,Initiateafailoveronthetargetphysicalstandbydatabase.
The
实际执行后,在备库的alter.log中报告如下的错误:
ThuDec3113:35:142009
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISHFORCE
ThuDec3113:35:142009
TerminalRecovery:Stoppingrealtimeapply
ThuDec3113:35:142009
MRP0:BackgroundMediaRecoverycancelledwithstatus16037
ThuDec3113:35:142009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-16037:userrequestedcancelofmanagedrecoveryoperation
ManagedStandbyRecoverynotusingRealTimeApply
Recoveryinterrupted!
Recovereddatafilestoaconsistentstateatchange221935
ThuDec3113:35:152009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-16037:userrequestedcancelofmanagedrecoveryoperation
ThuDec3113:35:152009
MRP0:BackgroundMediaRecoveryprocessshutdown(ora10g)
ThuDec3113:35:152009
TerminalRecovery:Stoppedrealtimeapply
ThuDec3113:35:152009
AttempttodoaTerminalRecovery(ora10g)
ThuDec3113:35:152009
MediaRecoveryStart:ManagedStandbyRecovery(ora10g)
ManagedStandbyRecoverynotusingRealTimeApply
parallelrecoverystartedwith16processes
TerminalRecoverytimestampis'12/31/200913:35:15'
TerminalRecovery:applyingstandbyredologs.
TerminalRecovery:thread1seq#26redorequired
TerminalRecovery:
ThuDec3113:35:152009
RecoveryofOnlineRedoLog:Thread1Group4Seq26Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log
IdentifiedEnd-Of-Redoforthread1sequence26
TerminalRecovery:Updatednextavailableblockforthread1sequence26lno4tovalue1840
ThuDec3113:35:152009
Incompleterecoveryappliedallredoevergenerated.
Recoverycompletedthroughchange221936
ThuDec3113:35:152009
MediaRecoveryComplete(ora10g)
TerminalRecovery:enabledarchivedestinationLOG_ARCHIVE_DEST_1
TerminalRecovery:successfulcompletion
Begin:StandbyRedoLogfilearchival
ThuDec3113:35:152009
Error1034receivedloggingontothestandby
ThuDec3113:35:152009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_arc1_2237092.trc:
ORA-01034:ORACLEnotavailable
ARC1:Error1034Creatingarchivelogfileto'ora10g_pri'
ThuDec3113:35:182009
End:StandbyRedoLogfilearchival
ResettingstandbyactivationID4025856474(0xeff5b1da)
Completed:ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISHFORCE
[oracle@CXCBDB3]$
5,Convertthephysicalstandbydatabasetotheprimaryrole.
6,Finishthetransitionofthestandbydatabasetotheprimarydatabaserole
SQL.>alterdatabaseopen;
Alter.log中报如下的提示:
ThuDec3113:44:092009
alterdatabaseopen
ThuDec3113:44:092009
AssigningactivationID4025827071(0xeff53eff)
Thread1openedatlogsequence1
Currentlog#1seq#1mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log
Successfulopenofredothread1
ThuDec3113:44:092009
MTTRadvisoryisdisabledbecauseFAST_START_MTTR_TARGETisnotset
ThuDec3113:44:092009
SMON:enablingcacherecovery
ThuDec3113:44:092009
SuccessfullyonlinedUndoTablespace1.
Dictionarycheckbeginning
ThuDec3113:44:092009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_dbw0_3491214.trc:
ORA-01157:cannotidentify/lockdatafile201-seeDBWRtracefile
ORA-01110:datafile201:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/temp01.dbf'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
ThuDec3113:44:092009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_dbw0_3491214.trc:
ORA-01186:file201failedverificationtests
ORA-01157:cannotidentify/lockdatafile201-seeDBWRtracefile
ORA-01110:datafile201:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/temp01.dbf'
ThuDec3113:44:092009
File201notverifiedduetoerrorORA-01157
ThuDec3113:44:092009
Dictionarycheckcomplete
ThuDec3113:44:092009
SMON:enablingtxrecovery
ThuDec3113:44:092009
Re-creatingtempfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/temp01.dbf
DatabaseCharactersetisAL32UTF8
OpeningwithinternalResourceManagerplan
whereNUMAPG=1,CPUs=32
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
StartingbackgroundprocessQMNC
QMNCstartedwithpid=20,OSid=2179986
ThuDec3113:44:112009
LOGSTDBY:Validatingcontrolfilewithlogicalmetadata
ThuDec3113:44:112009
LOGSTDBY:Validationcomplete
Completed:alterdatabaseopen
7,
(三)、继续测试原来的主库是否可以正常打开
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
Databasemounted.
ORA-03113:end-of-fileoncommunicationchannel
ALTERDATABASEOPEN
ThuDec3113:48:562009
Beginningcrashrecoveryof1threads
parallelrecoverystartedwith16processes
ArchivelogdestinationLOG_ARCHIVE_DEST_2validatedforno-data-lossrecovery
ThuDec3113:48:572009
Errorsinfile/u01/oracle/admin/ora10g/udump/ora10g_ora_307776.trc:
ORA-16009:remotearchivelogdestinationmustbeaSTANDBYdatabase
SMON:Error16009creatingarchivelogfile'ORA10G_SEC'
ThuDec3113:48:572009
Startedredoscan
ThuDec3113:48:572009
Completedredoscan
1401redoblocksread,383datablocksneedrecovery
ThuDec3113:48:572009
Startedredoapplicationat
Thread1:logseq26,block439
ThuDec3113:48:572009
RecoveryofOnlineRedoLog:Thread1Group2Seq26Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo02.log
ThuDec3113:48:572009
Completedredoapplication
ThuDec3113:48:572009
Completedcrashrecoveryat
Thread1:logseq26,block1840,scn241936
383datablocksread,383datablockswritten,1401redoblocksread
ThuDec3113:48:572009
SMON:Completedarchivinglog2thread1sequence26(ora10g)
ThuDec3113:48:572009
LGWR:STARTINGARCHPROCESSES
ARC0startedwithpid=32,OSid=430994
ThuDec3113:48:572009
ARC0:Archivalstarted
ARC1:Archivalstarted
LGWR:STARTINGARCHPROCESSESCOMPLETE
ARC1startedwithpid=33,OSid=361912
ThuDec3113:48:572009
LGWR:PrimarydatabaseisinMAXIMUMPROTECTIONmode
ThuDec3113:48:572009
DestinationLOG_ARCHIVE_DEST_2isUNSYNCHRONIZED
LGWR:DestinationLOG_ARCHIVE_DEST_1isnotservicedbyLGWR
LNSbstartedwithpid=34,OSid=455892
ThuDec3113:49:002009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307334.trc:
ORA-16009:remotearchivelogdestinationmustbeaSTANDBYdatabase
ThuDec3113:49:002009
LGWR:Error16009verifyingarchivelogdestinationLOG_ARCHIVE_DEST_2
LGWR:Error16009disconnectingfromdestinationLOG_ARCHIVE_DEST_2standbyhost'ORA10G_SEC'
LGWR:Continuing...
LGWR:Minimumof1applicablestandbydatabaserequired
ThuDec3113:49:042009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307334.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
ThuDec3113:49:042009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307334.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
LGWR:terminatinginstanceduetoerror16072
Terminationissuedtoinstanceprocesses.Waitingfortheprocessestoexit
ThuDec3113:49:122009
InstanceterminatedbyLGWR,pid=307334
修改参数后,数据库仍然无法打开
SQL>altersystemsetlog_archive_dest_state_2=defer;
Systemaltered.
SQL>alterdatabasemount;
Databasealtered.
SQL>alterdatabaseopen;
alterdatabaseopen
*
ERRORatline1:
ORA-03113:end-of-fileoncommunicationchannel
把SQL>altersystemsetlog_archive_dest_2='';
Systemaltered.
SQL>shutdownimmediate
ORA-01507:databasenotmounted
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
Databasemounted.
ORA-03113:end-of-fileoncommunicationchannel
ARC1startedwithpid=17,OSid=197406
ThuDec3113:55:362009
LGWR:PrimarydatabaseisinMAXIMUMPROTECTIONmode
LGWR:DestinationLOG_ARCHIVE_DEST_1isnotservicedbyLGWR
LGWR:Minimumof1LGWRstandbydatabaserequired
ThuDec3113:55:362009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307864.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
ThuDec3113:55:362009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307864.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
LGWR:terminatinginstanceduetoerror16072
InstanceterminatedbyLGWR,pid=307864
通过如下的途径打开数据库
SQL>conn/assysdba
Connectedtoanidleinstance.
SQL>startupmount
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
Databasemounted.
SQL>ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPERFORMANCE;
Databasealtered.
SQL>alterdatabaseopen;
Databasealtered.
附录:如何验证PhysicalStandbyDatabase在正常运行
Onceyoucreatethephysicalstandbydatabaseandsetupredotransportservices,youmaywanttoverifydatabasemodificationsarebeingsuccessfullytransmittedfromtheprimarydatabasetothestandbydatabase.
Toseethatredodataisbeingreceivedonthestandbydatabase,youshouldfirstidentifytheexistingarchivedredologfilesonthestandbydatabase,forcealogswitchandarchiveafewonlineredologfilesontheprimarydatabase,andthencheckthestandbydatabaseagain.Thefollowingstepsshowhowtoperformthesetasks.
Step1Identifytheexistingarchivedredologfiles.
Onthestandbydatabase,querythe
Step2Forcealogswitchtoarchivethecurrentonlineredologfile.
Ontheprimarydatabase,issuethe
Step3Verifythenewredodatawasarchivedonthestandbydatabase.
Onthestandbydatabase,querythe
Thearchivedredologfilesarenowavailabletobeappliedtothephysicalstandbydatabase.
Step4Verifynewarchivedredologfileswereapplied.
Onthestandbydatabase,querythe
4rowsselected.
SeeSection5.9.1,"MonitoringLogFileArchivalInformation"andSection8.5.4,"MonitoringLogApplyServicesonPhysicalStandbyDatabases"toverifyredotransportservicesandlogapplyservicesareworkingcorrectly.
LNSwaitonSENDREQ1
LGWR-LNSwaitonchannel1
SQL*Netmessagetoclient1
smontimer1
pmontimer1
rdbmsipcmessage12
StreamsAQ:qmnslaveidlewait1
logfileswitch(checkpointincomplete)1
StreamsAQ:qmncoordinatoridlewait1
StreamsAQ:waitingfortimemanagementorcleanuptasks1
在上述情况下,会遇到如下的情况:说明了两个问题
(备机启动到mount状态后,listener启动后,就可以自动接收主机传来的日志)
从v$archived_log中看,已经接收到新的arclog,
SQL>selectnamefromv$archived_log;
NAME
--------------------------------------------------------------------------------
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_24_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_25_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_26_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_27_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_28_707169363.arc
采用rman继续recover就会报告如下:
RMAN>recoverdatabase;
Startingrecoverat2010-01-1306:49:18
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=145devtype=DISK
startingmediarecovery
archivelogthread1sequence26isalreadyondiskasfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_26_707169363.arc
archivelogthread1sequence27isalreadyondiskasfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_27_707169363.arc
archivelogthread1sequence28isalreadyondiskasfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_28_707169363.arc
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_26_707169363.arcthread=1sequence=26
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_27_707169363.arcthread=1sequence=27
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_28_707169363.arcthread=1sequence=28
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_29_707169363.arcthread=1sequence=29
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat01/13/201006:49:19
RMAN-11003:failureduringparse/executionofSQLstatement:alterdatabaserecoverlogfile'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_29_707169363.arc'
ORA-16145:archivalforthread#1sequence#29inprogress
(二)、测试PHY备机在正常状态下是否可以进行alterdatabaseopenresetlogs
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
SQL>alterdata
SQL>alterdatabaseopenresetlogs;
alterdatabaseopenresetlogs
*
ERRORatline1:
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
-----------------------------------------------------------------------------------------------------
如果不应用日志,直接把数据库启动到mount状态。也没有办法直接open
SQL>alterdatabaseopenresetlogs;
alterdatabaseopenresetlogs
*
ERRORatline1:
ORA-01666:controlfileisforastandbydatabase
(二),DataGuard物理备机在运行过程中报告如下的错误信息
FriJan811:19:242010
RFS[1]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_105935_659623339.arc'
FriJan811:19:342010
RFS[2]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc'
RFS[2]:PhysicalStandbyinthefutureofBranch(resetlogs_id)707742451
RFS[2]:StandbydatabaseSCN:17:-1170684592PrimarybranchSCN:17:-1213531574
RFS[2]:NewArchivalREDOBranch(resetlogs_id):707742451Prior:659623339
RFS[2]:ArchivalActivationID:0x57d50c9fCurrent:0x54f80ae9
RFS[2]:EffectofprimarydatabaseOPENRESETLOGS
NewincarnationbranchdetectedinArchiveLog,filename/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc
Inspectionoffilechangedrdifrom2to3
Settingrecoverytargetincarnationto3
分析,在物理备库上有这个日志,而且是RFS注册进去的,但是主库上没有这个日志
SQL>selectREGISTRAR,APPLIED,status,RESETLOGS_TIME,namefromv$archived_logwherename='/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc';
REGISTRAPPSRESETLOGS_TIME
------------------------------
NAME
--------------------------------------------------------------------------------
RFSNOA2010-01-0811:07:31
/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc
主库上执行
SQL>selectnamefromv$archived_logwherename='/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc'
2;
norowsselected
主库上
SQL>selectdistinct(FIRST_NONLOGGED_TIME)fromv$datafile;
FIRST_NONLOGGED_TIM
-------------------
SQL>selectdistinct(FIRST_NONLOGGED_SCN)fromv$datafile;
FIRST_NONLOGGED_SCN
-------------------
0
SQL>selectdistinct(UNRECOVERABLE_TIME)fromv$datafile;
UNRECOVERABLE_TIME
-------------------
2008-09-1915:02:09
2008-09-1915:02:13
2008-09-1915:02:19
2008-09-1915:02:21
2009-03-1313:48:35
2009-03-1313:48:47
SQL>selectcount(*)fromV$BACKUP_CORRUPTION;
COUNT(*)
----------
0
RFS[2]:AssignedtoRFSprocess1724506
RFS[2]:Identifieddatabasetypeas'physicalstandby'
RFS[2]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_107354_659623339.arc'
TueJan1222:34:432010
RFS[2]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_107355_659623339.arc'
RFS[2]:PhysicalStandbyinthefutureofBranch(resetlogs_id)659623339
RFS[2]:StandbydatabaseSCN:17:-1170684592PrimarybranchSCN:0:538113
RFS[2]:NewArchivalREDOBranch(resetlogs_id):659623339Prior:707742451
RFS[2]:ArchivalActivationID:0x54f80ae9Current:0x54f80ae9
RFS[2]:EffectofprimarydatabaseOPENRESETLOGS
后来经过反复查找原因,结果如下:
(在1.8在10.190.57.96上恢复了一个p09auto的测试数据库
InCXTESTDBserver(10.190.57.96上,而且57.96上的spfile和tnsnames.ora配置与主库(57.56)完全相同.)
[oracle@CXTESTDB]$rmantarget/
RMAN>listincarnationofdatabase;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
ListofDatabaseIncarnations
DBKeyIncKeyDBNameDBIDSTATUSResetSCNResetTime
-------------------------------------------------------------
11P09AUTO1425540585PARENT12008-05-1021:24:43
22P09AUTO1425540585PARENT5381132008-07-0912:42:19
33P09AUTO1425540585CURRENT760958797542010-01-0811:07:31
在10.190.57.57上
[oracle@CXCBDB3]$rmantarget/
RecoveryManager:Release10.2.0.4.0-ProductiononWedJan2011:35:152010
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase:P09AUTO(DBID=1425540585)
RMAN>listincarnationofdatabase;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
ListofDatabaseIncarnations
DBKeyIncKeyDBNameDBIDSTATUSResetSCNResetTime
-------------------------------------------------------------
11P09AUTO1425540585PARENT12008-05-1021:24:43
22P09AUTO1425540585CURRENT5381132008-07-0912:42:19
33P09AUTO1425540585ORPHAN760958797542010-01-0811:07:31
---------------------
在10.190.57.57上查看RFS进程的信息
SQL>selectPROCESS,CLIENT_PID,CLIENT_DBIDfromV$MANAGED_STANDBY;
PROCESSCLIENT_PIDCLIENT_DBID
----------------------------------
ARCH17449401425540585
ARCH23638361425540585
RFS3695801425540585
RFS19102561425540585
SQL>hostps-ef|grep2363836
oracle23638361008:51:03-0:00ora_arc1_p09auto
oracle23761422310456011:26:54pts/10:00grep2363836
SQL>hostps-ef|grep1744940
oracle17449401008:51:03-0:00ora_arc0_p09auto
oracle23761462310456011:27:03pts/10:00grep1744940
SQL>hostps-ef|grep369580
oracle23964762310456011:15:28pts/10:00grep369580
SQL>hostps-ef|grep1910256
oracle23964802310456011:15:37pts/10:00grep1910256
然后在到主数据库上查找
在10.190.57.56上
[jtduanjs@CXCBDB1]$ps-ef|grep369580
jtduanjs2560276861296011:15:59pts/10:00grep369580
oracle369580153Dec14-302:57ora_arc1_p09auto
[jtduanjs@CXCBDB1]$ps-ef|grep1910256
jtduanjs3130170861296011:16:10pts/10:00grep1910256
[jtduanjs@CXCBDB1]$
在10.190.57.96上找
[oracle@CXTESTDB]$ps-ef|grep1910256
oracle4060243658172011:16:26pts/20:00grep1910256
oracle191025610Jan08-3:48ora_arc0_p09auto
(三),DataGuard配置后,主机数据库在RMAN备份过程中报告如下的错误信息
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
archivelogfilename=/cxdhxs/Archivelog/cxdhxs/1_3887_701298441.arcthread=1sequence=3887
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
archivelogfilename=/cxdhxs/Archivelog/cxdhxs/1_3888_701298441.arcthread=1sequence=3888
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
archivelogfilename=/cxdhxs/Archivelog/cxdhxs/1_3889_701298441.arcthread=1sequence=3888
查看
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
Cause:AnarchivelogthatshouldhavebeendeletedwasnotasitwasrequiredbyStreamsorDataGuard.Thenextmessageidentifiesthearchivelog.
Action:Thisisaninformationalmessage.Thearchivelogcanbedeletedafteritisnolongerneeded.SeethedocumentationforDataGuardtoalterthesetofactiveDataGuarddestinations.SeethedocumentationforStreamstoalterthesetofactivestreams.
(查看metalink上的文档:
IsItPossibleToDeleteArchiveLogsFromTheDownstreamCaptureInDownstreamDatabaseUsingRMAN[ID563928.1]
RMANlooksatcolumnAPPLIEDfromV$ARCHIVED_LOGtabletodecidewhetherremoveornotthearchivedlogs.
WhenrunningRMANtodeletearchivesfromtheSOURCEDatabase,itwilldeletethoseonesdeterminednotneededforthedownstreamcapture.
目录:
第一部分:文档信息
第二部分:配置DataGuard需要的硬件和系统要求
第三部分:Oracle10g的DataGuard的几个概念
第四部分:创建物理备用数据库和启动DataGuard的具体步骤
第五部分:对DataGuard日常监控的要求
第六部分:备用数据库的角色切换步骤
第七部分:在最大性能模式下的DataGuard配置步骤
第八部分:在最大可用模式下的DataGuard配置步骤
第九部分:在最大保护模式下的DataGuard配置步骤
第十部分:DataGuard下跟踪到的等待事件
第十一部分:如何做到保护数据
第一部分:文档信息
序号 | 行动类型 | 人员 | 修改日期 | 修改原因 | 审核人员 | 备注 |
1 | 创建 | 彭上坤 | 2008-2-26 | |||
2 | ||||||
3 | ||||||
第二部分:配置数据库DataGuard的硬件和系统要求
1、主数据库服务和备用的数据库服务器需要使用相同或相近的硬件。2、主数据库服务和备用的数据库服务器需要使用相同的操作系统(补丁包也相同)。
3、主数据库服务和备用的数据库服务器需要使用相同的oracle数据库版本(包括补丁包)。
第三部分:Oracle10g的DataGuard的几个概念
1、备用数据库上的RFS进程
物理备用数据库上的RFS进程是接收主数据库上传到的redodata,并写入物理备用数据库的archivelog或standbyredolog的进程。Redodatatransmittedfromtheprimarydatabaseisreceivedbytheremotefileserver(RFS)processonthestandbysystemwheretheRFSprocesswritestheredodatatoarchivedlogfilesorstandbyredologfiles.
2、Standbyredolog的概念
Astandbyredologissimilarinallwaystoanonlineredolog,exceptthatastandbyredologisusedonlywhenthedatabaseisrunninginthestandbyroletostoreredodatareceivedfromtheprimarydatabase.在下列的情况下,必须使用standbyredolog文件:
Themaximumprotectionandmaximumavailabilitylevelsofdataprotection
Real-timeapply
Cascadedredologdestinations
使用standbyredolog有如下优点:
Thearchiver(ARCn)processorthelogwriter(LGWR)processontheprimarydatabasecantransmitredodatadirectlytoremotestandbyredologfiles,potentiallyeliminatingtheneedtoregisterapartialarchivedlogfile(forexample,torecoverafterastandbydatabasecrashes).
如何配置standbyredolog
(1)确保主备数据库上的redologfile的大小相同(或备机的redolog比主机的大)
(2)确定standbyredologgroup的数量
(maximumnumberoflogfilesforeachthread+1)*maximumnumberofthreads
(3)使用alterdatabaseaddstandbylogfile语句在备用数据库上增加standbyredolog
ALTERDATABASEADDSTANDBYLOGFILEGROUP10
('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo')SIZE500M;
(4)可以在
V$STANDBY_LOG
查看了standbyredolog
3、物理备用数据库上没有onlineredolog的.
Physicalstandbydatabasesdonothaveanassociatedonlineredolog,becausephysicalstandbydatabasesareneveropenedforread/writeI/O;changesarenotmadetothedatabaseandredodataisnotgenerated.4、在DataGuard环境下,redodata传到物理备用数据库的机制
(1)ARCn进程来传送redodata到备用数据库.ARCn进程来传送redodata只在用在最大性能模式的DataGuard环境(maximumperformance),ARCn进程在什么时间传送redodata是一个参数来控制的:这个参数就是:
LOG_ARCHIVE_LOCAL_FIRST
在oracle10.2.0.2版本中,缺省情况下:ARC进程如何传送redodata的:(在10.1.版本以前,缺省情况下不是这样的)
ArchivingtoLocalDestinationsBeforeArchivingtoRemoteDestinations
Specifying
LOG_ARCHIVE_LOCAL_FIRST=FALSEismostusefulforfasternetworkconnections
ArchivingtoLocalandRemoteDestinationsattheSameTime
(2)LGWR进程来传送redodata到备用数据库
LGWR进程传送redodata也分成两种情况:SYNC和ASYNC
LGWRSYNC(同步模式)Transactionsarenotcommittedontheprimarydatabaseuntiltheredodatanecessarytorecoverthetransactionsisreceivedbythedestination.
LGWRSYNCArchivaltoaRemoteDestinationwithStandbyRedoLogFiles
(可以采用类似如下的配置方式:LOG_ARCHIVE_DEST_2='SERVICE=bostonLGWRSYNCNET_TIMEOUT=30')
Alogswitchontheprimarydatabasetriggersalogswitchonthestandbydatabase,causingARCnprocessesonthestandbydatabasetoarchivethestandbyredologfilestoarchivedredologfilesonthestandbydatabase.Then,logapplyservicesuseRedoApply(MRPprocess)orSQLApply(LSPprocess)toapplytheredodatatothestandbydatabase.
Ifreal-timeapplyisenabled,DataGuardrecoversredodatadirectlyfromthecurrentstandbyredologfileasitisbeingfilledupbytheRFSprocess.
LGWRASYNC模式
LGWRASYNCArchivalwithNetworkServer(LNSn)Processes
5、在DataGuard环境下,redodata应用到物理备用数据库的机制(1)ApplyingRedoDatatoaStandbyDestinationUsingReal-TimeApply
Astheremotefileserver(RFS)processwritestheredodatatostandbyredologfilesonthestandbydatabase,logapplyservicescanrecoverredofromstandbyredologfilesastheyarebeingfilled.如何设置real-timeapply呢?
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASE
USINGCURRENTLOGFILE
如何查看是否设置了real-timeapply
RECOVERY_MODEcolumninthe
V$ARCHIVE_DEST_STATUSview.Itwilldisplay
MANAGEDREAL-TIMEAPPLYwhenreal-timeapplyisenabled.
(2)管理物理备机上的redoapply?
a.
启动redoapply
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASE[disconnect]
b.
启动实时redoapply
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILE;
c.
停止redoapply
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASECANCEL
d.
查看redoapply的状态
SELECTMESSAGEFROMV$DATAGUARD_STATUS;
e.
如何提高物理备用数据库上redoapply的效率.
RECOVERSTANDBYDATABASEPARALLEL#CPUs*2;
SetPARALLEL_EXECUTION_MESSAGE_SIZE=4096
TuneNetworkI/O
DISK_ASYNCH_IO
to
TRUE(thedefault).
6、在DataGuard环境下,三种保护数据的模式
DataGuard的三种保护模式
Table5-2MinimumRequirementsforDataProtectionModes
MaximumProtection | MaximumAvailability | MaximumPerformance | |
Redoarchivalprocess | LGWR | LGWR | LGWRor ARCH |
Networktransmissionmode | SYNC | SYNC | SYNCor ASYNCwhenusing LGWRprocess. SYNCifusing ARCHprocess |
Diskwriteoption | AFFIRM | AFFIRM | AFFIRMor NOAFFIRM |
Standbyredologrequired? | Yes | Yes | Optional,butrecommended |
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZE{PROTECTION|AVAILABILITY|PERFORMANCE}
可以在V$DATABASE中查看到DataGuard的保护模式
SELECTPROTECTION_MODE,PROTECTION_LEVELFROMV$DATABASE;
下面这个用法
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASE
USINGCURRENTLOGFILE;(
设置real-timeapplyredolog)
7、在DataGuard环境下,几个重要参数的说明
(1)LOG_ARCHIVE_CONFIG
Bydefault,the
LOG_ARCHIVE_CONFIGparameterenablesthedatabasetosendandreceiveredo;afteraroletransition,youmayneedtospecifythesesettingsagainusingthe
SEND,
NOSEND,
RECEIVE,or
NORECEIVEkeywords.
(2)
LOG_ARCHIVE_LOCAL_FIRST
The
LOG_ARCHIVE_LOCAL_FIRSTinitializationparametercontrolswhenthearchiverprocesses(ARCn)transmitredodatatoremotestandbydatabasedestinations.Thefollowingtabledescribespossiblevaluesforthisparameter.
(3)LOG_ARCHIVE_MAX_PROCESSES
LOG_ARCHIVE_MAX_PROCESSESinitializationparameter(thedefaultsettingis2).
(4)
STANDBY_ARCHIVE_DEST
参数(在物理备用数据库上)
(5)
LOG_ARCHIVE_TRACE(
设置这个参数跟踪redolog的传送过程)
(6)standby_file_management参数(注意这个参数在10.2.0.2中缺省是manaul,需要修改成auto)
SQL>altersystemsetstandby_file_management=autoscope=both;
Systemaltered.
8、在DataGuard环境下,管理ArchiveGaps
第四部分:创建物理备用数据库和启动DataGuard的具体步骤
1、以下列的配置为例来说明(单实例的普通数据库)数据库名称DB_NAME为oradb(主备数据库的db_name、oracle_sid和instance_name都是oradb)
数据库类型 | DB_UNIQUE_NAME | SERVICE_NAMES | Tnsnames.ora中的netservicename |
Primary | Dg_pri | Dg_pri | Dg_pri |
Physicalstandby | Dg_sec | Dg_sec | Dg_sec |
3、确认passwordfile文件(如果不存在就用orapwd创建一个)
4、修改主数据库的参数
SQL>altersystemsetdb_unique_name='dg_pri'scope=spfile;
SQL>altersystemsetservice_names='dg_pri'scope=spfile;
SQL>altersystemsetlog_archive_config='DG_CONFIG=(dg_pri,dg_sec)'scope=both;
SQL>altersystemsetlog_archive_dest_1='location=/oradata/oradb/archivelog/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dg_pri'scope=spfile;
SQL>altersystemsetlog_archive_dest_2='service=dg_secLGWRSYNCAFFIRMNET_TIMEOUT=30VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg_sec'
scope=spfile;
SQL>altersystemsetstandby_file_management=autoscope=both;
Systemaltered.
SQL>altersystemsetfal_server='dg_sec'scope=both;
Systemaltered.
SQL>altersystemsetfal_client='dg_pri'scope=both;
Systemaltered.
5、对主数据库做一个备份(最好用rman备份或冷备份也可以)
6、创建物理备用数据库的standbycontrolfile
把主数据库启动到mount状态
SQL>alterdatabasecreatestandbycontrolfileas'/tmp/control01.ctl';
Databasealtered.
7、为物理备用数据库准备pfile文件
SQL>createpfile='/tmp/init.dg_sec.ora'fromspfile;
修改vi/tmp/init.dg_sec.ora
*.db_unique_name='dg_sec'
*.fal_client='dg_sec'
*.fal_server='dg_pri'
*.service_names='dg_sec'
*.log_archive_dest_1='location=/oradata/oradb/sec_archivelog/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dg_sec'
*.log_archive_dest_2='service=dg_priLGWRSYNCAFFIRMNET_TIMEOUT=30VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg_pri'
还要修改一个参数
STANDBY_ARCHIVE_DEST(
在MaximumPerformance模式,在物理备用数据库上配置的,在备机上接收到主机传来的archivelog日志的接收目录)
8、把standbycontrol文件、pfile文件和密码文件拷贝到备用数据库上。
(在备用数据库上创建dump相关的目录)
9、把物理备用数据库启动到mount状态,创建standbyredologgroup(group的size与主数据库的完全相同,group的个数是主数据库的的onlineredolog的2倍或更多).
SQL>startmount
SQL>selectDATABASE_ROLEfromv$database;
DATABASE_ROLE
--------------------------------
PHYSICALSTANDBY
SQL>alterdatabaseaddstandbylogfilegroup10('/oradata/oradb/oradb/sec_redo01.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup11('/oradata/oradb/oradb/sec_redo02.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup12('/oradata/oradb/oradb/sec_redo03.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup13('/oradata/oradb/oradb/sec_redo04.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup14('/oradata/oradb/oradb/sec_redo05.log')size50M;
Databasealtered.
SQL>alterdatabaseaddstandbylogfilegroup15('/oradata/oradb/oradb/sec_redo06.log')size50M;
Databasealtered.
10、配置主备数据库的listener和tnsnames.ora文件
主数据库上的listener.ora的配置:
SID_LIST_DG=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=oradb)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=oradb)
)
)
DG=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.47)(PORT=18001))
)
物理备用数据库上的listener.ora文件
SID_LIST_DG=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=oradb)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=oradb)
)
)
DG=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.50)(PORT=18001))
)
主备数据库的tnsnames.ora文件:
DG_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.47)(PORT=18001))
)
(CONNECT_DATA=
(SID=oradb)
(SERVER=DEDICATED)
)
)
DG_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.203.14.50)(PORT=18001))
)
(CONNECT_DATA=
(SID=oradb)
(SERVER=DEDICATED)
)
)
11、在主数据库上设置DataGuard的保护模式.把主数据库启动到mount状态设置好DataGuard的保护模式.设置好保护模式后,再把主数据库启动到open状态。(是否设置好DataGuard的保护模式后再创建standbycontrolfile?)。
SQL>
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEAVAILABILITY;
查看DataGuard的保护模式
SQL>SELECTPROTECTION_MODE,PROTECTION_LEVELFROMV$DATABASE;
12、在物理备用数据库上启动日志传输
SQL>
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEAVAILABILITY;
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect;
Databasealtered.
13、
第五部分:对DataGuard日常监控的要求
1、日常查看redolog是否被传送到物理备用数据库
在主数据库上查看,redolog是否被送到归档的位置.
SQL>SELECTDESTINATION,STATUS,ARCHIVED_THREAD#,ARCHIVED_SEQ#
2>FROMV$ARCHIVE_DEST_STATUS
3>WHERESTATUS<>'DEFERRED'ANDSTATUS<>'INACTIVE';
在主数据库上查看,Findoutifarchivedredologfileshavebeenreceived.
SQL>SELECTLOCAL.THREAD#,LOCAL.SEQUENCE#FROM
2>(SELECTTHREAD#,SEQUENCE#FROMV$ARCHIVED_LOGWHEREDEST_ID=1)
3>LOCALWHERE
4>LOCAL.SEQUENCE#NOTIN
5>(SELECTSEQUENCE#FROMV$ARCHIVED_LOGWHEREDEST_ID=2AND
6>THREAD#=LOCAL.THREAD#);
跟踪redolog的传送过程
可以在主备数据库上设置
LOG_ARCHIVE_TRACE
参数
2、在物理备用数据库上查看,是否real-timeapplyredolog
Todetermineifreal-timeapplyisenabled,querytheRECOVERY_MODEcolumninthe
V$ARCHIVE_DEST_STATUSview.Itwilldisplay
MANAGEDREAL-TIMEAPPLYwhenreal-timeapplyisenabled.
SQL>selectrecovery_modefromv$archive_dest_status;
3、监控物理备用数据库上LogApplyServices
(1)V$MANAGED_STANDBY视图查看Querythephysicalstandbydatabasetomonitorlogapplyandlogtransportservicesactivityatthestandbysite.
SQL>SELECTPROCESS,STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKSFROMV$MANAGED_STANDBY;
PROCESSSTATUSTHREAD#SEQUENCE#BLOCK#BLOCKS
-----------------------------------------------------------
RFSATTACHED19477272
MRP0APPLYING_LOG19461072
(2)V$ARCHIVE_DEST_STATUS
SQL>SELECTDEST_ID,ARCHIVED_THREAD#,ARCHIVED_SEQ#,APPLIED_THREAD#,APPLIED_SEQ#
FROMV$ARCHIVE_DEST_STATUS;
ARCHIVED_THREAD#ARCHIVED_SEQ#APPLIED_THREAD#APPLIED_SEQ#
--------------------------------------------------------
19471945
SQL>SELECTRECOVERY_MODEFROMV$ARCHIVE_DEST_STATUSWHEREDEST_ID=2;
RECOVERY_MODE
-----------------------
MANAGEDREAL-TIMEAPPLY
4、查看物理备用数据库上的DataGuard的状态
SQL>SELECTMESSAGEFROMV$DATAGUARD_STATUS;
第六部分:备用数据库的角色切换步骤
1、查看当前数据库所处的角色
SQL>selectdatabase_rolefromv$database;2、DataGuard模式下的Failover方式切换
在DataGuard模式下,有两种切换模式,Switchover和Failover,这两种切换都需要手工执行完成(通过执行sql命令或用DataGuardbrokerinterface工具完成).Failover方式的切换是在主数据库宕掉(一般是硬件严重故障导致)后,物理备用数据库切换成primaryrole,切换后,原来宕掉的数据库一般不能立即加入到DataGuard中,需要修改错误后重新配置到DataGuard中.
3、Failover切换的具体步骤
(1)判断主数据库确实出现严重的硬件故障或其他原因导致主数据库无法启动。(2)在物理备用数据库上检查是否有archiveredologgaps
SQL>SELECTTHREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE#FROMV$ARCHIVE_GAP;
(3)消除archiveredologgaps
从主数据库上或其他备份的地方把没有传到备数据库的archiveredolog传到物理备用数据库上,并注册到物理备用数据库的controlfile中。
SQL>ALTERDATABASEREGISTERPHYSICALLOGFILE'archiveredolog文件名称';
(4)拷贝其他丢失的archiveredolog到物理备用数据库,并注册
SQL>SELECTUNIQUETHREAD#ASTHREAD,MAX(SEQUENCE#)
2>OVER(PARTITIONBYthread#)ASLASTfromV$ARCHIVED_LOG;
SQL>ALTERDATABASEREGISTERPHYSICALLOGFILE'archiveredolog文件名称';
(5)执行了(3)、(4)步骤后,再查看v$archive_gap,看archiveloggaps是否还存在
(6)在物理备用数据库上发起failover操作
a,如果备数据库上有standbyredolog
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISH;
b,如果备数据库上没有standbyredolog
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASE
2>FINISHSKIPSTANDBYLOGFILE;
(7)把物理备用数据库转化成主用角色
SQL>ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY;
(8)把新的主用数据库重新启动
SQL>SHUTDOWNIMMEDIATE;
SQL>STARTUP;
(9)对新的主用数据库做全备份.
第七部分:在最大性能模式下的DataGuard配置步骤
以如下环境为例来说明10.190.57.38是主数据库,10.190.57.53是物理备用数据库
数据库名称DB_NAME为orclesb(主备数据库的db_name、oracle_sid和instance_name都是ora10g)
修改10.190.57.38主数据库orclesb为forcelogging(alterdatabaseforcelogging;)
1,配置好主库上的listener和tnsnames.ora
在主库10.190.57.38上配置了listener和tnsnames.ora
ORCLESBi_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.38)(PORT=18010))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
ORCLESB_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.53)(PORT=20038))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
备库
[oracle@CXXBZDB1]$catlistener.ora
ORCLESB_SEC=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.53)(PORT=20038))
)
SID_LIST_ORCLESB_SEC=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orclesb)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=orclesb)
)
)
[oracle@CXXBZDB1]$cattnsnames.ora
ORCLESB_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.38)(PORT=18010))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
ORCLESB_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.53)(PORT=20038))
)
(CONNECT_DATA=
(SERVICE_NAME=orclesb)
)
)
2,修改主数据库上的spfile参数(修改前先备份当前的spfile)
在10.190.57.38上修改如下的spfile
altersystemsetlog_archive_dest_2='SERVICE=ORCLESB_SEC'scope=both;
altersystemsetlog_archive_dest_state_2=deferscope=both;
altersystemsetfal_server='ORCLESB_SEC'scope=both;
altersystemsetfal_client='ORCLESB_PRI'scope=both;
standby_file_management参数(注意这个参数在10.2.0.2中缺省是manaul,需要修改成auto)
SQL>altersystemsetstandby_file_management=autoscope=both;
Systemaltered.
3,对主数据库做一个rman备份
在10.190.57.38对ora10g数据库做一个rman全备份(online)
RMAN>run
{
allocatechannelch00typedisk;
backupTAGhot_db_bk_level0FORMAT'/p09esb/p09esb_u03/20100317/bk_%s_%p_%t'database;
RELEASECHANNELch00;
}
allocatedchannel:ch00
channelch00:sid=964devtype=DISK
Startingbackupat2010-03-1721:27:44
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
inputdatafilefno=00005name=/p09esb/p09esb_u02/orclesb/tbsesb01.dbf
inputdatafilefno=00001name=/p09esb/p09esb_u01/orclesb/system01.dbf
inputdatafilefno=00003name=/p09esb/p09esb_u01/orclesb/sysaux01.dbf
inputdatafilefno=00006name=/p09esb/p09esb_u01/orclesb/patrol_01.dbf
inputdatafilefno=00002name=/p09esb/p09esb_u01/orclesb/undotbs01.dbf
inputdatafilefno=00004name=/p09esb/p09esb_u01/orclesb/users01.dbf
channelch00:startingpiece1at2010-03-1721:27:44
channelch00:finishedpiece1at2010-03-1721:27:59
piecehandle=/p09esb/p09esb_u03/20100317/bk_647_1_713914064tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:15
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
includingcurrentcontrolfileinbackupset
includingcurrentSPFILEinbackupset
channelch00:startingpiece1at2010-03-1721:27:59
channelch00:finishedpiece1at2010-03-1721:28:00
piecehandle=/p09esb/p09esb_u03/20100317/bk_648_1_713914079tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:01
Finishedbackupat2010-03-1721:28:00
releasedchannel:ch00
4,创建物理备用数据库的standbycontrolfile
创建物理备用数据库的standbycontrolfile
在主数据库10.190.57.38上执行如下sql
sql>alterdatabasecreatestandbycontrolfileas'/home/oracle/orclesb_control_standby.ctl'
(或
RMAN>BACKUPCURRENTCONTROLFILEFORSTANDBYFORMAT'/tmp/ForStandbyCTRL.bck';)
5,创建备用数据库上使用的spfile
在主库上通过spfile来创建pfile
SQL>createpfile='/home/oracle/oraclesb.pfile'fromspfile;
修改了如下
*.fal_client='ORCLESB_SEC'
*.fal_server='ORCLESB_PRI'
*.standby_archive_dest='/p09esb/p09esb_u03/recv_arclog'
6,把spfile和standbycontrolfile传到备用数据库,把数据库启动到mount状态,restore数据库(注意还需要把$ORACLE_HOME/dbs下的密码文件也FTP到备机)
SQL>createspfilefrompfile='/p09esb/p09esb_u03/20100317/orclesb.pfile';
Filecreated.
SQL>startupnomount
ORACLEinstancestarted.
[oracle@CXCBDB3]$rmantarget/
RMAN>restorecontrolfilefrom‘/p09esb/p09esb_u03/20100317/orclesb_control_standby.ctl';
channelORA_DISK_1:copiedcontrolfilecopy
outputfilename=/p09esb/p09esb_u01/orclesb/control01.ctl
outputfilename=/p09esb/p09esb_u02/orclesb/control02.ctl
outputfilename=/p09esb/p09esb_u03/orclesb/control03.ctl
Finishedrestoreat2010-03-1722:45:01
把备机的数据库启动到mount状态
SQL>alterdatabasemountstandbydatabase;
Databasealtered.
查一下控制文件的备份集
RMAN>listbackup;
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
494Full716.00MDISK00:00:072010-03-1722:49:06
BPKey:494Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/p09esb/p09esb_u03/20100317/bk_654_1_713918939
ListofDatafilesinbackupset494
FileLVTypeCkpSCNCkpTimeName
-------------------------------------------
1Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/system01.dbf
2Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/undotbs01.dbf
3Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/sysaux01.dbf
4Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/users01.dbf
5Full186125942010-03-1722:48:59/p09esb/p09esb_u02/orclesb/tbsesb01.dbf
6Full186125942010-03-1722:48:59/p09esb/p09esb_u01/orclesb/patrol_01.dbf
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
495Full5.30MDISK00:00:002010-03-1722:49:06
BPKey:495Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/p09esb/p09esb_u03/20100317/bk_655_1_713918946
ControlFileIncluded:CkpSCN:18612598Ckptime:2010-03-1722:49:06
SPFILEIncluded:Modificationtime:2010-03-1721:26:45
RMAN>run{
allocatechannelc1typedisk;
restoredatabase;
releasechannelc1;
}
RMAN>recoverdatabase;
RMAN>
7,查找主备数据库之间的archivedloggap信息,从主库的备份中找到archivedlog的备份,并把备份信息注册到standbydatabasecontrolfile中,恢复并应用这些归档日志.
(如果是archivedlogfile直接传过来,还可以直接把archivedlogfile直接注册到备机的控制文件中,如:
catalogarchivelog'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_839_690386448.arc';
注册后,在v$archivelog中就能看到了。
(第一次同步DataGuard时,可以使用这个办法查找
在备库上
SQL>selectmax(SEQUENCE#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
839
从rmanrecover信息中也可以看出只应用到seq839归档日志,其他后续日志还没有收到。
10,主备机之间建立Dataguard关系
在10.190.57.38上修改一个参数
altersystemsetlog_archive_dest_state_2=enable;
在备机(10.190.57.53
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEdisconnectfromsession;
在备机的alter.log中报如下错误提示信息:
注意还需要把$ORACLE_HOME/dbs下的密码文件也FTP到备机,否则在主机的alter.log中有如下的错误
ALTERSYSTEMSETlog_archive_dest_state_2='ENABLE'SCOPE=BOTH;
WedMar1723:08:102010
Error1031receivedloggingontothestandby
WedMar1723:08:102010
Errorsinfile/u01/oracle/admin/orclesb/bdump/orclesb_arc0_966802.trc:
ORA-01031:insufficientprivileges
PING[ARC0]:Heartbeatfailedtoconnecttostandby'ORCLESB_SEC'.Erroris1031.
把密码文件FTP到dataguard备机后,主机的alter.log中就没有上述错误了.
在备机的alter.log中有如下的信息
--ConnectedUserisValid
RFS[1]:AssignedtoRFSprocess917530
RFS[1]:Identifieddatabasetypeas'physicalstandby'
WedMar1723:18:102010
RFSLogMiner:Clientdisabledfromfurthernotification
RFS[1]:ArchivedLog:'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_840_690386448.arc'
RFS[1]:ArchivedLog:'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_841_690386448.arc'
RFS[1]:ArchivedLog:'/p09esb/p09esb_u03/recv_arclog/oraclesb_1_842_690386448.arc'
WedMar1723:18:142010
MediaRecoveryLog/p09esb/p09esb_u03/recv_arclog/oraclesb_1_840_690386448.arc
MediaRecoveryLog/p09esb/p09esb_u03/recv_arclog/oraclesb_1_841_690386448.arc
MediaRecoveryLog/p09esb/p09esb_u03/recv_arclog/oraclesb_1_842_690386448.arc
MediaRecoveryWaitingforthread1sequence843
11,验证主备库之间是否是最大性能
备机上
selectdatabase_rolefromv$database;
DATABASE_ROLE
----------------
PHYSICALSTANDBY
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMPERFORMANCEMAXIMUMPERFORMANCENONEPHYSICALSTANDBY
18614140
第八部分:在最大可用模式下的DataGuard配置步骤
以如下环境为例来说明10.190.57.83是主数据库,10.190.57.57是物理备用数据库
数据库名称DB_NAME为ora10g(主备数据库的db_name、oracle_sid和instance_name都是ora10g)
修改10.190.57.83主数据库ora10g的日志模式为forcelogging(alterdatabaseforcelogging;)
2,配置好主库上的listener和tnsnames.ora
在主库10.190.57.83上配置了listener和tnsnames.ora
cat$ORACLE_HOME/network/admin/listener.ora
ORA10G_PRI=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.83)(PORT=18188))
)
SID_LIST_ORA10G_PRI=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=ora10g)
(ORACLE_HOME=/u01/oracle/product/db10gr2)
(SID_NAME=ora10g)
)
)
cat$ORACLE_HOME/network/admin/tnsnames.ora
ORA10G=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.83)(PORT=18083))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=ora10g)
)
)
ORA10G_PRI=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.83)(PORT=18188))
)
(CONNECT_DATA=
(SERVICE_NAME=ora10g)
)
)
ORA10G_SEC=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.57.57)(PORT=20188))
)
(CONNECT_DATA=
(SERVICE_NAME=ora10g)
)
)
2,修改主数据库上的spfile参数(修改前先备份当前的spfile)
在10.190.57.83上修改如下的spfile
altersystemsetlog_archive_dest_2='SERVICE=ORA10G_SECLGWRSYNCAFFIRMNET_TIMEOUT=30VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)'scope=spfile;
altersystemsetlog_archive_dest_state_2=deferscope=spfile;
altersystemsetfal_server='ORA10G_SEC'scope=spfile;
altersystemsetfal_client='ORA10G_PRI'scope=spfile;
3,对主数据库做一个rman备份
在10.190.57.83对ora10g数据库做一个rman全备份(online)
RMAN>run
2>{
3>allocatechannelch00typedisk;
4>backupTAGhot_db_bk_level0FORMAT'/cxdhxs/Archivelog/cxdhxs/ora10g/bk_%s_%p_%t'database;
5>sql'altersystemarchivelogcurrent';
6>BACKUPFORMAT'/cxdhxs/Archivelog/cxdhxs/ora10g/al_%s_%p_%t'ARCHIVELOGALL;
7>RELEASECHANNELch00;
8>}
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ch00
channelch00:sid=85devtype=DISK
Startingbackupat2009-12-3015:00:57
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
inputdatafilefno=00001name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/system01.dbf
inputdatafilefno=00002name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/undotbs01.dbf
inputdatafilefno=00003name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/sysaux01.dbf
inputdatafilefno=00004name=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/users01.dbf
channelch00:startingpiece1at2009-12-3015:00:58
channelch00:finishedpiece1at2009-12-3015:01:13
piecehandle=/u01/oracle/product/db10gr2/dbs/bk_1_1_706978858tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:15
channelch00:startingfulldatafilebackupset
channelch00:specifyingdatafile(s)inbackupset
includingcurrentcontrolfileinbackupset
includingcurrentSPFILEinbackupset
channelch00:startingpiece1at2009-12-3015:01:15
channelch00:finishedpiece1at2009-12-3015:01:16
piecehandle=/u01/oracle/product/db10gr2/dbs/bk_2_1_706978873tag=HOT_DB_BK_LEVEL0comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:03
Finishedbackupat2009-12-3015:01:16
sqlstatement:altersystemarchivelogcurrent
Startingbackupat2009-12-3015:01:16
currentlogarchived
channelch00:startingarchivelogbackupset
channelch00:specifyingarchivelog(s)inbackupset
inputarchivelogthread=1sequence=11recid=1stamp=706978876
inputarchivelogthread=1sequence=12recid=2stamp=706978876
channelch00:startingpiece1at2009-12-3015:01:17
channelch00:finishedpiece1at2009-12-3015:01:18
piecehandle=/u01/oracle/product/db10gr2/dbs/al_3_1_706978876tag=TAG20091230T150116comment=NONE
channelch00:backupsetcomplete,elapsedtime:00:00:02
Finishedbackupat2009-12-3015:01:18
releasedchannel:ch00
RMAN>
4,创建物理备用数据库的standbycontrolfile
创建物理备用数据库的standbycontrolfile
在主数据库10.190.57.83上执行如下sql
sql>alterdatabasecreatestandbycontrolfileas'/home/oracle/control_standby.ctl'
(或
RMAN>BACKUPCURRENTCONTROLFILEFORSTANDBYFORMAT'/tmp/ForStandbyCTRL.bck';)
5,创建备用数据库上使用的spfile
在主库上通过spfile来创建pfile
SQL>createpfile='/home/oracle/ora10g.pfile'fromspfile;
修改了如下
*.fal_client='ORA10G_SEC'
*.fal_server='ORA10G_PRI'
*.log_archive_dest_2='service=ora10g_pri’
*.log_archive_dest_state_2=’defer’
*.standby_archive_dest='/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv'
6,把spfile和standbycontrolfile传到备用数据库,把数据库启动到mount状态,restore数据库
SQL>createspfilefrompfile='/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g.pfile';
Filecreated.
SQL>startupnomount
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
SQL>exit
[oracle@CXCBDB3]$rmantarget/
RecoveryManager:Release10.2.0.4.0-ProductiononWedDec3015:52:312009
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase:ora10g(notmounted)
RMAN>restorecontrolfilefrom'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g_ctl_standby.ctl';
Startingrestoreat2009-12-3015:52:51
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=153devtype=DISK
channelORA_DISK_1:copiedcontrolfilecopy
outputfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/control01.ctl
outputfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/control02.ctl
outputfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/control03.ctl
Finishedrestoreat2009-12-3015:52:53
把备机的数据库启动到mount状态
SQL>alterdatabasemountstandbydatabase;
Databasealtered.
查一下控制文件的备份集
RMAN>listbackup;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
ListofBackupSets
===================
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
1Full285.38MDISK00:00:092009-12-3015:01:07
BPKey:1Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/u01/oracle/product/db10gr2/dbs/bk_1_1_706978858
ListofDatafilesinbackupset1
FileLVTypeCkpSCNCkpTimeName
-------------------------------------------
1Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/system01.dbf
2Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/undotbs01.dbf
3Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/sysaux01.dbf
4Full1855152009-12-3015:00:58/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/users01.dbf
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------------
2Full5.30MDISK00:00:022009-12-3015:01:15
BPKey:2Status:AVAILABLECompressed:NOTag:HOT_DB_BK_LEVEL0
PieceName:/u01/oracle/product/db10gr2/dbs/bk_2_1_706978873
ControlFileIncluded:CkpSCN:185520Ckptime:2009-12-3015:01:13
SPFILEIncluded:Modificationtime:2009-12-3014:53:24
BSKeySizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------
313.40MDISK00:00:012009-12-3015:01:17
BPKey:3Status:AVAILABLECompressed:NOTag:TAG20091230T150116
PieceName:/u01/oracle/product/db10gr2/dbs/al_3_1_706978876
ListofArchivedLogsinbackupset3
ThrdSeqLowSCNLowTimeNextSCNNextTime
-----------------------------------------------------------
1111794752009-12-3014:02:551855282009-12-3015:01:16
1121855282009-12-3015:01:161855332009-12-3015:01:16
RMAN>
RMAN>run{
2>allocatechannelc1typedisk;
3>restoredatabase;
4>releasechannelc1;
5>}
allocatedchannel:c1
channelc1:sid=150devtype=DISK
Startingrestoreat2009-12-3015:59:00
channelc1:startingdatafilebackupsetrestore
channelc1:specifyingdatafile(s)torestorefrombackupset
restoringdatafile00001to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/system01.dbf
restoringdatafile00002to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/undotbs01.dbf
restoringdatafile00003to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/sysaux01.dbf
restoringdatafile00004to/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/users01.dbf
channelc1:readingfrombackuppiece/u01/oracle/product/db10gr2/dbs/bk_1_1_706978858
RMAN>recoverdatabase;
Startingrecoverat2009-12-3016:00:04
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=150devtype=DISK
startingmediarecovery
channelORA_DISK_1:startingarchivelogrestoretodefaultdestination
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=11
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=12
channelORA_DISK_1:readingfrombackuppiece/u01/oracle/product/db10gr2/dbs/al_3_1_706978876
channelORA_DISK_1:restoredbackuppiece1
piecehandle=/u01/oracle/product/db10gr2/dbs/al_3_1_706978876tag=TAG20091230T150116
channelORA_DISK_1:restorecomplete,elapsedtime:00:00:01
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_11_706974874.arcthread=1sequence=11
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_12_706974874.arcthread=1sequence=12
unabletofindarchivelog
archivelogthread=1sequence=13
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat12/30/200916:00:06
RMAN-06054:mediarecoveryrequestingunknownlog:thread1seq13lowscn185533
RMAN>
7,查找主备数据库之间的archivedloggap信息,从主库的备份中找到archivedlog的备份,并把备份信息注册到standbydatabasecontrolfile中,恢复并应用这些归档日志.
(如果是archivedlogfile直接传过来,还可以直接把archivedlogfile直接注册到备机的控制文件中,如:
alterdatabaseregisterlogfile'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_24_707169363.arc';
或用rman中catalogarchivelog命令
注册后,在v$archivelog中就能看到了。
(第一次同步DataGuard时,可以使用这个办法查找
在备库上
SQL>selectmax(SEQUENCE#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
12
从rmanrecover信息中也可以看出只应用到seq12归档日志,其他后续日志还没有收到。
从主库的本地归档目录下看到
[oracle@CXDHXSDB1]$ls-lt
total24
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_19_706974874.arc
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_18_706974874.arc
中间还查13—17这几个归档日志,这些归档日志已经被带库备份后从本地删除了,需要从磁带上恢复这些归档。
从主库的控制文件可以查看这些归档日志的备份情况
BSKeySizeDeviceTypeElapsedTimeCompletionTime
-----------------------------------------------------------
41.53MDISK00:00:012009-12-3016:13:04
BPKey:4Status:AVAILABLECompressed:NOTag:TAG20091230T161303
PieceName:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183
ListofArchivedLogsinbackupset4
ThrdSeqLowSCNLowTimeNextSCNNextTime
-----------------------------------------------------------
1121855282009-12-3015:01:161855332009-12-3015:01:16
1131855332009-12-3015:01:161859972009-12-3015:16:22
1141859972009-12-3015:16:221859992009-12-3015:16:22
1151859992009-12-3015:16:221860022009-12-3015:16:23
1161860022009-12-3015:16:231860042009-12-3015:16:24
1171860042009-12-3015:16:241881942009-12-3016:13:03
在备库(10.190.57.57上)
[oracle@CXCBDB3]$rmantarget/
RecoveryManager:Release10.2.0.4.0-ProductiononWedDec3016:18:052009
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase:ORA10G(DBID=4025847002,notopen)
RMAN>catalogbackuppiece'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183';
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
catalogedbackuppiece
backuppiecehandle=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183recid=4stamp=706983505
RMAN>recoverdatabase;
Startingrecoverat2009-12-3016:18:55
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=147devtype=DISK
startingmediarecovery
channelORA_DISK_1:startingarchivelogrestoretodefaultdestination
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=13
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=14
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=15
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=16
channelORA_DISK_1:restoringarchivelog
archivelogthread=1sequence=17
channelORA_DISK_1:readingfrombackuppiece/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183
channelORA_DISK_1:restoredbackuppiece1
piecehandle=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/al_4_1_706983183tag=TAG20091230T161303
channelORA_DISK_1:restorecomplete,elapsedtime:00:00:02
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_13_706974874.arcthread=1sequence=13
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_14_706974874.arcthread=1sequence=14
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_15_706974874.arcthread=1sequence=15
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_16_706974874.arcthread=1sequence=16
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_17_706974874.arcthread=1sequence=17
unabletofindarchivelog
archivelogthread=1sequence=18
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat12/30/200916:18:59
RMAN-06054:mediarecoveryrequestingunknownlog:thread1seq18lowscn188194
RMAN>
8,在备库上创建standbylogfile.
(要大小相同或更大,standbylogfile个数比主数据库多1个/thread)
UsethefollowingSQLcommandsonthestandbydatabasetocreate
standbyredologfilesthatmatchtheprimarydatabase:
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo03.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo04.log'SIZE52428800;
9,在备库(10.190.57.57)上创建standbylogfile.
(要大小相同或更大,standbylogfile个数比主数据库多1个/thread)
UsethefollowingSQLcommandsonthestandbydatabasetocreate
standbyredologfilesthatmatchtheprimarydatabase:
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo03.log'SIZE52428800;
ALTERDATABASEADDSTANDBYLOGFILE'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo04.log'SIZE52428800;
10,把主库关闭启动到mount状态,设置成最大可用模式,主备机之间建立Dataguard同步关系
在10.190.57.83主库上
SQL>shutdownimmediate
SQL>startupmount
把主库上的归档日志传到备机,
[oracle@CXDHXSDB1]$pwd
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log
[oracle@CXDHXSDB1]$ls-lt|more
total24
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_19_706974874.arc
-rw-r-----1oracleoinstall1024Dec3016:14ora10g_1_18_706974874.arc
在备机上继续recover最新的archivelog日志
RMAN>recoverdatabase;
Startingrecoverat2009-12-3016:42:20
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=150devtype=DISK
startingmediarecovery
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_18_706974874.arcthread=1sequence=18
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arcthread=1sequence=19
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arcthread=1sequence=20
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat12/30/200916:42:22
RMAN-11003:failureduringparse/executionofSQLstatement:alterdatabaserecoverlogfile'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arc'
ORA-00310:archivedlogcontainssequence19;sequence20required
ORA-00334:archivedlog:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_19_706974874.arc'
备机上
SQL>selectmax(sequence#)fromv$archived_log;
MAX(SEQUENCE#)
--------------
19
主机上
SQL>selectmax(sequence#)fromv$archived_log
2;
MAX(SEQUENCE#)
--------------
19
在主机(10.190.57.83)上修改一个参数
altersystemsetlog_archive_dest_state_2=enable;
在备机(10.190.57.57)
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect;
在备机的alter.log中报如下错误提示信息:
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect
WedDec3016:54:242009
AttempttostartbackgroundManagedStandbyRecoveryprocess(ora10g)
MRP0startedwithpid=19,OSid=2196128
WedDec3016:54:242009
MRP0:BackgroundManagedStandbyRecoveryprocessstarted(ora10g)
ManagedStandbyRecoverystartingRealTimeApply
parallelrecoverystartedwith16processes
WedDec3016:54:292009
Waitingforallnon-currentORLstobearchived...
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
Clearingonlineredologfile1/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log
Clearingonlinelog1ofthread1sequencenumber13
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
WedDec3016:54:292009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-19527:physicalstandbyredologmustberenamed
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
Clearingonlineredologfile1complete
MediaRecoveryWaitingforthread1sequence20
WedDec3016:54:302009
Completed:ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEdisconnect
WedDec3016:56:192009
在主机(10.190.57.83)上设置最大可用模式
SQL>ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEAVAILABILITY;
Databasealtered.
在主机(10.190.57.83)上把数据库打开
SQL>alterdatabaseopen;
Databasealtered.
在主机的alter.log中基本上没有什么提示信息,
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
StartingbackgroundprocessQMNC
QMNCstartedwithpid=19,OSid=238740
WedDec3016:56:302009
Completed:alterdatabaseopen
在备机的alter.log中提示如下:
RFS[1]:AssignedtoRFSprocess2339140
RFS[1]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMAVAILABILITYmode
ChangingstandbycontrolfiletoMAXIMUMAVAILABILITYmode
Primarythread1alreadymarkedasopen;setting'closed'
WedDec3016:56:192009
RFSLogMiner:Clientdisabledfromfurthernotification
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[2]:AssignedtoRFSprocess2187826
RFS[2]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMAVAILABILITYmode
Standbycontrolfileconsistentwithprimary
PrimarydatabaseisinMAXIMUMAVAILABILITYmode
Standbycontrolfileconsistentwithprimary
RFS[2]:Successfullyopenedstandbylog4:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'
WedDec3016:56:262009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[3]:AssignedtoRFSprocess2294696
RFS[3]:Identifieddatabasetypeas'physicalstandby'
RFS[3]:Successfullyopenedstandbylog5:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'
WedDec3016:56:292009
MediaRecoveryLog/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_20_706974874.arc
MediaRecoveryWaitingforthread1sequence21(intransit)
WedDec3016:56:302009
RecoveryofOnlineRedoLog:Thread1Group4Seq21Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log
WedDec3016:57:162009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[4]:AssignedtoRFSprocess1712200
RFS[4]:Identifieddatabasetypeas'physicalstandby'
11,验证主备库之间是否是最大可用模式
SQL>selectdatabase_rolefromv$database;
DATABASE_ROLE
----------------
PRIMARY
SQL>SELECTRECOVERY_MODEFROMV$ARCHIVE_DEST_STATUSWHEREDEST_ID=2;
RECOVERY_MODE
-----------------------
MANAGEDREALTIMEAPPLY
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMAVAILABILITYMAXIMUMAVAILABILITYNONEPRIMARY
189653
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMAVAILABILITYMAXIMUMAVAILABILITYNONEPHYSICALSTANDBY
189104
在最大可用模式下主备数据库的current_scn并不相同。
主库上SQL>selectcurrent_scnfromv$database;
CURRENT_SCN
-----------
220718
备库上SQL>selectcurrent_scnfromv$database;
CURRENT_SCN
-----------
189699
第九部分:在最大保护模式下的DataGuard配置步骤
(一)前面的步骤与第八部分中第1---第9步骤完全相同.第10步骤
在主机(10.190.57.83)上设置最大保护模式
SQL>ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEProtection;
Databasealtered.
SQL>ALTERDATABASEopen
Databasealtered.
主机的alter.log中提示如下信息
ThuDec3112:45:172009
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEProtection
ThuDec3112:45:172009
Completed:ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEProtection
ThuDec3112:45:412009
alterdatabaseopen
ThuDec3112:45:412009
LGWR:STARTINGARCHPROCESSES
ARC0startedwithpid=16,OSid=320658
ThuDec3112:45:412009
ARC0:Archivalstarted
ARC1:Archivalstarted
LGWR:STARTINGARCHPROCESSESCOMPLETE
ARC1startedwithpid=17,OSid=369132
ThuDec3112:45:412009
LGWR:PrimarydatabaseisinMAXIMUMPROTECTIONmode
ThuDec3112:45:412009
DestinationLOG_ARCHIVE_DEST_2isSYNCHRONIZED
LGWR:DestinationLOG_ARCHIVE_DEST_1isnotservicedbyLGWR
LNSbstartedwithpid=18,OSid=250806
ThuDec3112:45:482009
******************************************************************
LGWR:Setting'active'archivalfordestinationLOG_ARCHIVE_DEST_2
******************************************************************
LNSbstartedwithpid=18,OSid=455890
ThuDec3112:45:512009
LGWR:Standbyredologfileselectedtoarchivethread1sequence26
LGWR:Standbyredologfileselectedforthread1sequence26fordestinationLOG_ARCHIVE_DEST_2
ThuDec3112:45:512009
Thread1advancedtologsequence26(threadopen)
LGWR:WaitingforORLstobearchived...
ThuDec3112:45:522009
ARC0:Becomingthe'noFAL'ARCH
ARC0:Becomingthe'noSRL'ARCH
ThuDec3112:45:522009
ARC1:BecomingtheheartbeatARCH
ThuDec3112:45:522009
ARC0:LGWRisactivelyarchivingdestinationLOG_ARCHIVE_DEST_2
ARC0:Standbyredologfileselectedforthread1sequence25fordestinationLOG_ARCHIVE_DEST_2
ThuDec3112:45:552009
LGWR:ORLssuccessfullyarchived
Thread1openedatlogsequence26
Currentlog#2seq#26mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo02.log
Successfulopenofredothread1
ThuDec3112:45:552009
MTTRadvisoryisdisabledbecauseFAST_START_MTTR_TARGETisnotset
ThuDec3112:45:552009
SMON:enablingcacherecovery
ThuDec3112:45:562009
SuccessfullyonlinedUndoTablespace1.
ThuDec3112:45:562009
SMON:enablingtxrecovery
ThuDec3112:45:562009
DatabaseCharactersetisAL32UTF8
OpeningwithinternalResourceManagerplan
whereNUMAPG=1,CPUs=24
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
StartingbackgroundprocessQMNC
QMNCstartedwithpid=19,OSid=234498
ThuDec3112:45:572009
Completed:alterdatabaseopen
备机的alter.log中提示如下的信息:
RFS[5]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMPROTECTIONmode
ChangingstandbycontrolfiletoMAXIMUMPROTECTIONmode
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[6]:AssignedtoRFSprocess1712232
RFS[6]:Identifieddatabasetypeas'physicalstandby'
PrimarydatabaseisinMAXIMUMPROTECTIONmode
Standbycontrolfileconsistentwithprimary
PrimarydatabaseisinMAXIMUMPROTECTIONmode
Standbycontrolfileconsistentwithprimary
RFS[6]:Successfullyopenedstandbylog4:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log'
ThuDec3112:45:522009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[7]:AssignedtoRFSprocess2396486
RFS[7]:Identifieddatabasetypeas'physicalstandby'
RFS[7]:Successfullyopenedstandbylog5:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo02.log'
ThuDec3112:45:562009
MediaRecoveryLog/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_25_706974874.arc
MediaRecoveryWaitingforthread1sequence26(intransit)
ThuDec3112:45:562009
RecoveryofOnlineRedoLog:Thread1Group4Seq26Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log
ThuDec3112:46:412009
RedoShippingClientConnectedasPUBLIC
--ConnectedUserisValid
RFS[8]:AssignedtoRFSprocess1798322
RFS[8]:Identifieddatabasetypeas'physicalstandby'
主库上检查状态:
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMPROTECTIONMAXIMUMPROTECTIONNONEPRIMARY
221306
备库上检查状态:
SQL>selectPROTECTION_MODE,PROTECTION_LEVEL,GUARD_STATUS,DATABASE_ROLE,to_char(current_scn)fromv$database;
PROTECTION_MODEPROTECTION_LEVELGUARD_SDATABASE_ROLE
---------------------------------------------------------------
TO_CHAR(CURRENT_SCN)
----------------------------------------
MAXIMUMPROTECTIONMAXIMUMPROTECTIONNONEPHYSICALSTANDBY
220800
在最大保护模式下,备库不允许被关闭,提示如下信息
在备库上执行shutdown
SQL>shutdownimmediate
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
SQL>
ThuDec3112:56:092009
AttempttoshutdownStandbyDatabase
StandbyDatabaseoperatinginNODATALOSSmode
Detectedprimarydatabasealive,shutdownprimaryfirst,shutdownaborted
把主数据库关闭后,再到备库上执行如下的命令
SQL>alterdatabaseopenreadonly;
alterdatabaseopenreadonly
*
ERRORatline1:
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
(二)、当主库突然宕机后,在最大保护模式下,备库如何打开的问题.
模拟主库突然宕机(主库上执行shutdownabort),
在最大保护模式下,备库无法直接打开的。
SQL>selectDATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVELfromv$database;
DATABASE_ROLEPROTECTION_MODEPROTECTION_LEVEL
--------------------------------------------------------
PHYSICALSTANDBYMAXIMUMPROTECTIONMAXIMUMPROTECTION
SQL>alterdatabaseopenreadonly;
alterdatabaseopenreadonly
*
ERRORatline1:
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
备库如何接管和打开,需要执行如下的步骤
0,(针对最大保护模式的Dataguard,在failover前,需要在备库上执行如下操作:
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPERFORMANCE
1,Identifyandresolveanygapsinthearchivedredologfiles.
SELECTTHREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE#FROMV$ARCHIVE_GAP;
2,RepeatStep1untilallgapsareresolved.
3,Copyanyothermissingarchivedredologfiles.
4,Initiateafailoveronthetargetphysicalstandbydatabase.
SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISHFORCE;
The
FORCEkeywordterminatesactiveRFSprocessesonthetargetphysicalstandbydatabase,sothatfailovercanproceedimmediatelywithoutwaitingfornetworkconnectionstotimeout:
实际执行后,在备库的alter.log中报告如下的错误:
ThuDec3113:35:142009
ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISHFORCE
ThuDec3113:35:142009
TerminalRecovery:Stoppingrealtimeapply
ThuDec3113:35:142009
MRP0:BackgroundMediaRecoverycancelledwithstatus16037
ThuDec3113:35:142009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-16037:userrequestedcancelofmanagedrecoveryoperation
ManagedStandbyRecoverynotusingRealTimeApply
Recoveryinterrupted!
Recovereddatafilestoaconsistentstateatchange221935
ThuDec3113:35:152009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_mrp0_2196128.trc:
ORA-16037:userrequestedcancelofmanagedrecoveryoperation
ThuDec3113:35:152009
MRP0:BackgroundMediaRecoveryprocessshutdown(ora10g)
ThuDec3113:35:152009
TerminalRecovery:Stoppedrealtimeapply
ThuDec3113:35:152009
AttempttodoaTerminalRecovery(ora10g)
ThuDec3113:35:152009
MediaRecoveryStart:ManagedStandbyRecovery(ora10g)
ManagedStandbyRecoverynotusingRealTimeApply
parallelrecoverystartedwith16processes
TerminalRecoverytimestampis'12/31/200913:35:15'
TerminalRecovery:applyingstandbyredologs.
TerminalRecovery:thread1seq#26redorequired
TerminalRecovery:
ThuDec3113:35:152009
RecoveryofOnlineRedoLog:Thread1Group4Seq26Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/std_redo01.log
IdentifiedEnd-Of-Redoforthread1sequence26
TerminalRecovery:Updatednextavailableblockforthread1sequence26lno4tovalue1840
ThuDec3113:35:152009
Incompleterecoveryappliedallredoevergenerated.
Recoverycompletedthroughchange221936
ThuDec3113:35:152009
MediaRecoveryComplete(ora10g)
TerminalRecovery:enabledarchivedestinationLOG_ARCHIVE_DEST_1
TerminalRecovery:successfulcompletion
Begin:StandbyRedoLogfilearchival
ThuDec3113:35:152009
Error1034receivedloggingontothestandby
ThuDec3113:35:152009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_arc1_2237092.trc:
ORA-01034:ORACLEnotavailable
ARC1:Error1034Creatingarchivelogfileto'ora10g_pri'
ThuDec3113:35:182009
End:StandbyRedoLogfilearchival
ResettingstandbyactivationID4025856474(0xeff5b1da)
Completed:ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEFINISHFORCE
[oracle@CXCBDB3]$
5,Convertthephysicalstandbydatabasetotheprimaryrole.
SQL>ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY;
执行这个命令后,onlineredolog就自动生成了。
Alter.log中有如下的提示:
ThuDec3113:39:292009
ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY
ThuDec3113:39:292009
ALTERDATABASESWITCHOVERTOPRIMARY(ora10g)
ThuDec3113:39:292009
Ifmediarecoveryactive,switchoverwillwait900seconds
StandbyterminalrecoverystartSCN:221935
RESETLOGSaftercompleterecoverythroughchange221936
ThuDec3113:39:292009
Errorsinfile/u01/oracle/admin/ora10g/udump/ora10g_ora_3397022.trc:
ORA-00313:openfailedformembersofloggroup1ofthread1
ORA-00312:onlinelog1thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
ThuDec3113:39:292009
Errorsinfile/u01/oracle/admin/ora10g/udump/ora10g_ora_3397022.trc:
ORA-00313:openfailedformembersofloggroup2ofthread1
ORA-00312:onlinelog2thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo02.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
ThuDec3113:39:292009
Errorsinfile/u01/oracle/admin/ora10g/udump/ora10g_ora_3397022.trc:
ORA-00313:openfailedformembersofloggroup3ofthread1
ORA-00312:onlinelog3thread1:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo03.log'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
StandbybecameprimarySCN:221934
ThuDec3113:39:302009
Settingrecoverytargetincarnationto2
ThuDec3113:39:302009
WARNING:STANDBY_FILE_MANAGEMENTinitializationparameteris
notsettothevalue"AUTO".
Thismaycauserecoveryofthestandbydatabasetoterminate
priortoapplyingallavailableredodata.
ItmaybenecessarytousetheALTERDATABASECREATEDATAFILE
commandtoadddatafilescreatedontheprimarydatabase.
Convertingstandbymounttoprimarymount.
ThuDec3113:39:302009
Switchover:Complete-Databasemountedasprimary(ora10g)
Completed:ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY
ThuDec3113:39:302009
ARC1:STARTINGARCHPROCESSES
ARC2:Archivalstarted
ARC1:STARTINGARCHPROCESSESCOMPLETE
ARC2startedwithpid=36,OSid=2196346
ThuDec3113:39:452009
ARC0:Becomingthe'noSRL'ARCH
6,Finishthetransitionofthestandbydatabasetotheprimarydatabaserole
SQL.>alterdatabaseopen;
Alter.log中报如下的提示:
ThuDec3113:44:092009
alterdatabaseopen
ThuDec3113:44:092009
AssigningactivationID4025827071(0xeff53eff)
Thread1openedatlogsequence1
Currentlog#1seq#1mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo01.log
Successfulopenofredothread1
ThuDec3113:44:092009
MTTRadvisoryisdisabledbecauseFAST_START_MTTR_TARGETisnotset
ThuDec3113:44:092009
SMON:enablingcacherecovery
ThuDec3113:44:092009
SuccessfullyonlinedUndoTablespace1.
Dictionarycheckbeginning
ThuDec3113:44:092009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_dbw0_3491214.trc:
ORA-01157:cannotidentify/lockdatafile201-seeDBWRtracefile
ORA-01110:datafile201:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/temp01.dbf'
ORA-27037:unabletoobtainfilestatus
IBMAIXRISCSystem/6000Error:2:Nosuchfileordirectory
Additionalinformation:3
ThuDec3113:44:092009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_dbw0_3491214.trc:
ORA-01186:file201failedverificationtests
ORA-01157:cannotidentify/lockdatafile201-seeDBWRtracefile
ORA-01110:datafile201:'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/temp01.dbf'
ThuDec3113:44:092009
File201notverifiedduetoerrorORA-01157
ThuDec3113:44:092009
Dictionarycheckcomplete
ThuDec3113:44:092009
SMON:enablingtxrecovery
ThuDec3113:44:092009
Re-creatingtempfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/temp01.dbf
DatabaseCharactersetisAL32UTF8
OpeningwithinternalResourceManagerplan
whereNUMAPG=1,CPUs=32
replication_dependency_trackingturnedoff(noasyncmultimasterreplicationfound)
StartingbackgroundprocessQMNC
QMNCstartedwithpid=20,OSid=2179986
ThuDec3113:44:112009
LOGSTDBY:Validatingcontrolfilewithlogicalmetadata
ThuDec3113:44:112009
LOGSTDBY:Validationcomplete
Completed:alterdatabaseopen
7,
(三)、继续测试原来的主库是否可以正常打开
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
Databasemounted.
ORA-03113:end-of-fileoncommunicationchannel
ALTERDATABASEOPEN
ThuDec3113:48:562009
Beginningcrashrecoveryof1threads
parallelrecoverystartedwith16processes
ArchivelogdestinationLOG_ARCHIVE_DEST_2validatedforno-data-lossrecovery
ThuDec3113:48:572009
Errorsinfile/u01/oracle/admin/ora10g/udump/ora10g_ora_307776.trc:
ORA-16009:remotearchivelogdestinationmustbeaSTANDBYdatabase
SMON:Error16009creatingarchivelogfile'ORA10G_SEC'
ThuDec3113:48:572009
Startedredoscan
ThuDec3113:48:572009
Completedredoscan
1401redoblocksread,383datablocksneedrecovery
ThuDec3113:48:572009
Startedredoapplicationat
Thread1:logseq26,block439
ThuDec3113:48:572009
RecoveryofOnlineRedoLog:Thread1Group2Seq26Readingmem0
Mem#0:/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/ora10g/redo02.log
ThuDec3113:48:572009
Completedredoapplication
ThuDec3113:48:572009
Completedcrashrecoveryat
Thread1:logseq26,block1840,scn241936
383datablocksread,383datablockswritten,1401redoblocksread
ThuDec3113:48:572009
SMON:Completedarchivinglog2thread1sequence26(ora10g)
ThuDec3113:48:572009
LGWR:STARTINGARCHPROCESSES
ARC0startedwithpid=32,OSid=430994
ThuDec3113:48:572009
ARC0:Archivalstarted
ARC1:Archivalstarted
LGWR:STARTINGARCHPROCESSESCOMPLETE
ARC1startedwithpid=33,OSid=361912
ThuDec3113:48:572009
LGWR:PrimarydatabaseisinMAXIMUMPROTECTIONmode
ThuDec3113:48:572009
DestinationLOG_ARCHIVE_DEST_2isUNSYNCHRONIZED
LGWR:DestinationLOG_ARCHIVE_DEST_1isnotservicedbyLGWR
LNSbstartedwithpid=34,OSid=455892
ThuDec3113:49:002009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307334.trc:
ORA-16009:remotearchivelogdestinationmustbeaSTANDBYdatabase
ThuDec3113:49:002009
LGWR:Error16009verifyingarchivelogdestinationLOG_ARCHIVE_DEST_2
LGWR:Error16009disconnectingfromdestinationLOG_ARCHIVE_DEST_2standbyhost'ORA10G_SEC'
LGWR:Continuing...
LGWR:Minimumof1applicablestandbydatabaserequired
ThuDec3113:49:042009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307334.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
ThuDec3113:49:042009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307334.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
LGWR:terminatinginstanceduetoerror16072
Terminationissuedtoinstanceprocesses.Waitingfortheprocessestoexit
ThuDec3113:49:122009
InstanceterminatedbyLGWR,pid=307334
修改参数后,数据库仍然无法打开
SQL>altersystemsetlog_archive_dest_state_2=defer;
Systemaltered.
SQL>alterdatabasemount;
Databasealtered.
SQL>alterdatabaseopen;
alterdatabaseopen
*
ERRORatline1:
ORA-03113:end-of-fileoncommunicationchannel
把SQL>altersystemsetlog_archive_dest_2='';
Systemaltered.
SQL>shutdownimmediate
ORA-01507:databasenotmounted
ORACLEinstanceshutdown.
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
Databasemounted.
ORA-03113:end-of-fileoncommunicationchannel
ARC1startedwithpid=17,OSid=197406
ThuDec3113:55:362009
LGWR:PrimarydatabaseisinMAXIMUMPROTECTIONmode
LGWR:DestinationLOG_ARCHIVE_DEST_1isnotservicedbyLGWR
LGWR:Minimumof1LGWRstandbydatabaserequired
ThuDec3113:55:362009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307864.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
ThuDec3113:55:362009
Errorsinfile/u01/oracle/admin/ora10g/bdump/ora10g_lgwr_307864.trc:
ORA-16072:aminimumofonestandbydatabasedestinationisrequired
LGWR:terminatinginstanceduetoerror16072
InstanceterminatedbyLGWR,pid=307864
通过如下的途径打开数据库
SQL>conn/assysdba
Connectedtoanidleinstance.
SQL>startupmount
ORACLEinstancestarted.
TotalSystemGlobalArea1694498816bytes
FixedSize2084560bytes
VariableSize603980080bytes
DatabaseBuffers1073741824bytes
RedoBuffers14692352bytes
Databasemounted.
SQL>ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPERFORMANCE;
Databasealtered.
SQL>alterdatabaseopen;
Databasealtered.
附录:如何验证PhysicalStandbyDatabase在正常运行
Onceyoucreatethephysicalstandbydatabaseandsetupredotransportservices,youmaywanttoverifydatabasemodificationsarebeingsuccessfullytransmittedfromtheprimarydatabasetothestandbydatabase.
Toseethatredodataisbeingreceivedonthestandbydatabase,youshouldfirstidentifytheexistingarchivedredologfilesonthestandbydatabase,forcealogswitchandarchiveafewonlineredologfilesontheprimarydatabase,andthencheckthestandbydatabaseagain.Thefollowingstepsshowhowtoperformthesetasks.
Step1Identifytheexistingarchivedredologfiles.
Onthestandbydatabase,querythe
V$ARCHIVED_LOGviewtoidentifyexistingfilesinthearchivedredolog.Forexample:
SQL>SELECTSEQUENCE#,FIRST_TIME,NEXT_TIMEFROMV$ARCHIVED_LOGORDERBYSEQUENCE#;
SEQUENCE#FIRST_TIMENEXT_TIME
----------------------------------------------
811-JUL-0217:50:4511-JUL-0217:50:53
911-JUL-0217:50:5311-JUL-0217:50:58
1011-JUL-0217:50:5811-JUL-0217:51:03
3rowsselected.
Step2Forcealogswitchtoarchivethecurrentonlineredologfile.
Ontheprimarydatabase,issuethe
ALTERSYSTEMSWITCHLOGFILEstatementtoforcealogswitchandarchivethecurrentonlineredologfilegroup:
SQL>ALTERSYSTEMSWITCHLOGFILE;
Step3Verifythenewredodatawasarchivedonthestandbydatabase.
Onthestandbydatabase,querythe
V$ARCHIVED_LOGviewtoverifytheredodatawasreceivedandarchivedonthestandbydatabase:
SQL>SELECTSEQUENCE#,FIRST_TIME,NEXT_TIME
FROMV$ARCHIVED_LOGORDERBYSEQUENCE#;
SEQUENCE#FIRST_TIMENEXT_TIME
----------------------------------------------
811-JUL-0217:50:4511-JUL-0217:50:53
911-JUL-0217:50:5311-JUL-0217:50:58
1011-JUL-0217:50:5811-JUL-0217:51:03
1111-JUL-0217:51:0311-JUL-0218:34:11
4rowsselected.
Thearchivedredologfilesarenowavailabletobeappliedtothephysicalstandbydatabase.
Step4Verifynewarchivedredologfileswereapplied.
Onthestandbydatabase,querythe
V$ARCHIVED_LOGviewtoverifythearchivedredologfileswereapplied.
SQL>SELECTSEQUENCE#,APPLIEDFROMV$ARCHIVED_LOG
2ORDERBYSEQUENCE#;
SEQUENCE#APP
------------
8YES
9YES
10YES
11YES
4rowsselected.
See
第十部分:DataGuard下跟踪到的等待事件
当主数据库上的生成的redo量非常大时,在主数据库上会出现如下的等待事件LNSwaitonSENDREQ1
LGWR-LNSwaitonchannel1
SQL*Netmessagetoclient1
smontimer1
pmontimer1
rdbmsipcmessage12
StreamsAQ:qmnslaveidlewait1
logfileswitch(checkpointincomplete)1
StreamsAQ:qmncoordinatoridlewait1
StreamsAQ:waitingfortimemanagementorcleanuptasks1
第十一部分:DataGuard各种异常情况分析汇总
(一),DataGuard备机还没有执行alterdatabaserecovermanagedstandbydatabase已经做了restore和部分recover操作,listener进程也启动了,主机的已经通过arc进程自动把新的archivedlog传到备机)在上述情况下,会遇到如下的情况:说明了两个问题
(备机启动到mount状态后,listener启动后,就可以自动接收主机传来的日志)
从v$archived_log中看,已经接收到新的arclog,
SQL>selectnamefromv$archived_log;
NAME
--------------------------------------------------------------------------------
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_24_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_log/ora10g_1_25_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_26_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_27_707169363.arc
/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_28_707169363.arc
采用rman继续recover就会报告如下:
RMAN>recoverdatabase;
Startingrecoverat2010-01-1306:49:18
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
allocatedchannel:ORA_DISK_1
channelORA_DISK_1:sid=145devtype=DISK
startingmediarecovery
archivelogthread1sequence26isalreadyondiskasfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_26_707169363.arc
archivelogthread1sequence27isalreadyondiskasfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_27_707169363.arc
archivelogthread1sequence28isalreadyondiskasfile/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_28_707169363.arc
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_26_707169363.arcthread=1sequence=26
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_27_707169363.arcthread=1sequence=27
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_28_707169363.arcthread=1sequence=28
archivelogfilename=/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_29_707169363.arcthread=1sequence=29
RMAN-00571:===========================================================
RMAN-00569:===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:===========================================================
RMAN-03002:failureofrecovercommandat01/13/201006:49:19
RMAN-11003:failureduringparse/executionofSQLstatement:alterdatabaserecoverlogfile'/cxdhxs/cxdhxs_u05/cxdhxs/ora10g/arc_recv/ora10g_1_29_707169363.arc'
ORA-16145:archivalforthread#1sequence#29inprogress
(二)、测试PHY备机在正常状态下是否可以进行alterdatabaseopenresetlogs
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
Databasealtered.
SQL>alterdata
SQL>alterdatabaseopenresetlogs;
alterdatabaseopenresetlogs
*
ERRORatline1:
ORA-01154:databasebusy.Open,close,mount,anddismountnotallowednow
-----------------------------------------------------------------------------------------------------
如果不应用日志,直接把数据库启动到mount状态。也没有办法直接open
SQL>alterdatabaseopenresetlogs;
alterdatabaseopenresetlogs
*
ERRORatline1:
ORA-01666:controlfileisforastandbydatabase
(二),DataGuard物理备机在运行过程中报告如下的错误信息
FriJan811:19:242010
RFS[1]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_105935_659623339.arc'
FriJan811:19:342010
RFS[2]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc'
RFS[2]:PhysicalStandbyinthefutureofBranch(resetlogs_id)707742451
RFS[2]:StandbydatabaseSCN:17:-1170684592PrimarybranchSCN:17:-1213531574
RFS[2]:NewArchivalREDOBranch(resetlogs_id):707742451Prior:659623339
RFS[2]:ArchivalActivationID:0x57d50c9fCurrent:0x54f80ae9
RFS[2]:EffectofprimarydatabaseOPENRESETLOGS
NewincarnationbranchdetectedinArchiveLog,filename/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc
Inspectionoffilechangedrdifrom2to3
Settingrecoverytargetincarnationto3
分析,在物理备库上有这个日志,而且是RFS注册进去的,但是主库上没有这个日志
SQL>selectREGISTRAR,APPLIED,status,RESETLOGS_TIME,namefromv$archived_logwherename='/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc';
REGISTRAPPSRESETLOGS_TIME
------------------------------
NAME
--------------------------------------------------------------------------------
RFSNOA2010-01-0811:07:31
/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc
主库上执行
SQL>selectnamefromv$archived_logwherename='/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_1_707742451.arc'
2;
norowsselected
主库上
SQL>selectdistinct(FIRST_NONLOGGED_TIME)fromv$datafile;
FIRST_NONLOGGED_TIM
-------------------
SQL>selectdistinct(FIRST_NONLOGGED_SCN)fromv$datafile;
FIRST_NONLOGGED_SCN
-------------------
0
SQL>selectdistinct(UNRECOVERABLE_TIME)fromv$datafile;
UNRECOVERABLE_TIME
-------------------
2008-09-1915:02:09
2008-09-1915:02:13
2008-09-1915:02:19
2008-09-1915:02:21
2009-03-1313:48:35
2009-03-1313:48:47
SQL>selectcount(*)fromV$BACKUP_CORRUPTION;
COUNT(*)
----------
0
RFS[2]:AssignedtoRFSprocess1724506
RFS[2]:Identifieddatabasetypeas'physicalstandby'
RFS[2]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_107354_659623339.arc'
TueJan1222:34:432010
RFS[2]:ArchivedLog:'/p09auto/Archivelog/p09auto/p09auto_recv/p09auto_1_107355_659623339.arc'
RFS[2]:PhysicalStandbyinthefutureofBranch(resetlogs_id)659623339
RFS[2]:StandbydatabaseSCN:17:-1170684592PrimarybranchSCN:0:538113
RFS[2]:NewArchivalREDOBranch(resetlogs_id):659623339Prior:707742451
RFS[2]:ArchivalActivationID:0x54f80ae9Current:0x54f80ae9
RFS[2]:EffectofprimarydatabaseOPENRESETLOGS
后来经过反复查找原因,结果如下:
(在1.8在10.190.57.96上恢复了一个p09auto的测试数据库
InCXTESTDBserver(10.190.57.96上,而且57.96上的spfile和tnsnames.ora配置与主库(57.56)完全相同.)
[oracle@CXTESTDB]$rmantarget/
RMAN>listincarnationofdatabase;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
ListofDatabaseIncarnations
DBKeyIncKeyDBNameDBIDSTATUSResetSCNResetTime
-------------------------------------------------------------
11P09AUTO1425540585PARENT12008-05-1021:24:43
22P09AUTO1425540585PARENT5381132008-07-0912:42:19
33P09AUTO1425540585CURRENT760958797542010-01-0811:07:31
在10.190.57.57上
[oracle@CXCBDB3]$rmantarget/
RecoveryManager:Release10.2.0.4.0-ProductiononWedJan2011:35:152010
Copyright(c)1982,2007,Oracle.Allrightsreserved.
connectedtotargetdatabase:P09AUTO(DBID=1425540585)
RMAN>listincarnationofdatabase;
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
ListofDatabaseIncarnations
DBKeyIncKeyDBNameDBIDSTATUSResetSCNResetTime
-------------------------------------------------------------
11P09AUTO1425540585PARENT12008-05-1021:24:43
22P09AUTO1425540585CURRENT5381132008-07-0912:42:19
33P09AUTO1425540585ORPHAN760958797542010-01-0811:07:31
---------------------
在10.190.57.57上查看RFS进程的信息
SQL>selectPROCESS,CLIENT_PID,CLIENT_DBIDfromV$MANAGED_STANDBY;
PROCESSCLIENT_PIDCLIENT_DBID
----------------------------------
ARCH17449401425540585
ARCH23638361425540585
RFS3695801425540585
RFS19102561425540585
SQL>hostps-ef|grep2363836
oracle23638361008:51:03-0:00ora_arc1_p09auto
oracle23761422310456011:26:54pts/10:00grep2363836
SQL>hostps-ef|grep1744940
oracle17449401008:51:03-0:00ora_arc0_p09auto
oracle23761462310456011:27:03pts/10:00grep1744940
SQL>hostps-ef|grep369580
oracle23964762310456011:15:28pts/10:00grep369580
SQL>hostps-ef|grep1910256
oracle23964802310456011:15:37pts/10:00grep1910256
然后在到主数据库上查找
在10.190.57.56上
[jtduanjs@CXCBDB1]$ps-ef|grep369580
jtduanjs2560276861296011:15:59pts/10:00grep369580
oracle369580153Dec14-302:57ora_arc1_p09auto
[jtduanjs@CXCBDB1]$ps-ef|grep1910256
jtduanjs3130170861296011:16:10pts/10:00grep1910256
[jtduanjs@CXCBDB1]$
在10.190.57.96上找
[oracle@CXTESTDB]$ps-ef|grep1910256
oracle4060243658172011:16:26pts/20:00grep1910256
oracle191025610Jan08-3:48ora_arc0_p09auto
(三),DataGuard配置后,主机数据库在RMAN备份过程中报告如下的错误信息
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
archivelogfilename=/cxdhxs/Archivelog/cxdhxs/1_3887_701298441.arcthread=1sequence=3887
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
archivelogfilename=/cxdhxs/Archivelog/cxdhxs/1_3888_701298441.arcthread=1sequence=3888
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
archivelogfilename=/cxdhxs/Archivelog/cxdhxs/1_3889_701298441.arcthread=1sequence=3888
查看
RMAN-08137:WARNING:archivelognotdeletedasitisstillneeded
Cause:AnarchivelogthatshouldhavebeendeletedwasnotasitwasrequiredbyStreamsorDataGuard.Thenextmessageidentifiesthearchivelog.
Action:Thisisaninformationalmessage.Thearchivelogcanbedeletedafteritisnolongerneeded.SeethedocumentationforDataGuardtoalterthesetofactiveDataGuarddestinations.SeethedocumentationforStreamstoalterthesetofactivestreams.
(查看metalink上的文档:
IsItPossibleToDeleteArchiveLogsFromTheDownstreamCaptureInDownstreamDatabaseUsingRMAN[ID563928.1]
RMANlooksatcolumnAPPLIEDfromV$ARCHIVED_LOGtabletodecidewhetherremoveornotthearchivedlogs.
WhenrunningRMANtodeletearchivesfromtheSOURCEDatabase,itwilldeletethoseonesdeterminednotneededforthedownstreamcapture.
相关文章推荐
- Oracle 10g 数据库DataGuard配置规范
- oracle 11G client 连接 oracle 10G 数据库时 C#中配置的连接字符串
- Oracle Database 10g数据库安装及配置教程
- oracle 10g基本配置(dos下进入数据库,plsql连接数据库)
- Oracle 10g DataGuard手记之基础配置
- Oracle 10g dataguard维护,配置自动fast_start switchover
- redhat 5配置xmanager(XDM)与oracle 10G for redhat5 创建数据库(dbca)
- Windows下 Oracle 10g 数据库安装后的配置方法步骤
- oracle 10G配置dataguard
- 在Oracle Linux 4.7上安装配置Oracle 10g ASM数据库
- Oracle 10g 数据库安装及配置
- Linux下Oracle 10g DataGuard配置(主从同步及切换)
- Oracle 10g R2 之DataGuard物理standby 配置
- linux下配置oracle 10G DATAGUARD(笔记一)
- oracle 10g dataguard物理standby配置 (数据文件以文件系统存储)
- Oracle 10g 单实例数据库 Data Guard 之 Physical Standby 配置详解(根据官方文档总结)
- oracle 10g数据库闪回配置与使用
- oracle 10g基本配置(doc下进入数据库)
- Oracle HA 之 基于活动数据库复制配置oracle 11.2 dataguard
- Oracle Database 10g数据库安装及配置教程