这篇文章主要介绍“Oracle Data Guard部署分析”,在日常操作中,相信很多人在Oracle Data Guard部署分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle Data Guard部署分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

序言

DATAGUARD是通过建立一个PRIMARY和STANDBY组来确立其参照关系。
STANDBY一旦创建,DATAGUARD就会通过将主数据库(PRIMARY)的REDO传递给STANDBY数据库,然后在STANDBY中应用REDO实现数据库的同步。
有两种类型的STANDBY:物理STANDBY和逻辑STANDBY。

物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。逻辑STANDBY则不是这样,在逻辑STANDBY中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表。

安装环境

在主库--primary上搭建数据库软件,建立监听,采用dbca搭建实例;

在备库--standby上搭建数据库软件,建立监听,但是不需要建立实例。

在linux上搭建oracle数据库,过程略。

步骤概述:

1.主库开启归档并设置快速恢复区;

2.主库创建归档同步目录;

3.主库添加STANDBY日志文件;

4.主备皆配置网络---监听配置文件;

5.将主库的密码文件传输到备库;

6.修改主库的参数文件传输到备库,需修改部分信息;

7.以动态参数文件的形式启动备库数据库;

8.主库登录RMAN,【duplicate】复制数据库;

一、主备库配置1.创建归档同步目录

[oracle@test1~]$mkdir-p/home/oracle/flash[oracle@test2~]$mkdir-p/home/oracle/flash2.开启归档并设置快速恢复区

SYS@PROD1>altersystemsetdb_recovery_file_dest='/home/oracle/flash';altersystemsetdb_recovery_file_dest_size=4G;alterdatabasearchivelog;3.主库添加STANDBY日志文件

alterdatabaseaddstandbylogfilegroup4'/home/oracle/s1.log'size50M;alterdatabaseaddstandbylogfilegroup5'/home/oracle/s2.log'size50M;alterdatabaseaddstandbylogfilegroup6'/home/oracle/s3.log'size50M;alterdatabaseaddstandbylogfilegroup7'/home/oracle/s4.log'size50M;4.主备库修改监听配置文件

[oracle@test1~]$cd/u01/app/oracle/product/11.2.0/db_1/network/admin/

[oracle@test1admin]$catlistener.ora#listener.oraNetworkConfigurationFile:/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora#GeneratedbyOracleconfigurationtools.LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test1.us.oracle.com)(PORT=1521))(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))))ADR_BASE_LISTENER=/u01/app/oracleSID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=PROD1)(ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1)(SID_NAME=PROD1)))

[oracle@test1admin]$cattnsnames.ora#tnsnames.oraNetworkConfigurationFile:/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora#GeneratedbyOracleconfigurationtools.PROD1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=test1.us.oracle.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROD1)))PROD1_S=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=test2.us.oracle.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROD1)))

启动监听,并测试服务名网络的通畅。两台主机均需测试两个服务名(此省略主库的测试):

[oracle@test1admin]$lsnrctlstart[oracle@test2admin]$lsnrctlstart

[oracle@test2admin]$tnspingprod1TNSPingUtilityforLinux:Version11.2.0.4.0-Productionon25-FEB-201911:46:06Copyright(c)1997,2013,Oracle.Allrightsreserved.Usedparameterfiles:UsedTNSNAMESadaptertoresolvethealiasAttemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=test1.us.oracle.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROD1)))OK(0msec)[oracle@test2admin]$tnspingprod1_sTNSPingUtilityforLinux:Version11.2.0.4.0-Productionon25-FEB-201911:47:04Copyright(c)1997,2013,Oracle.Allrightsreserved.Usedparameterfiles:UsedTNSNAMESadaptertoresolvethealiasAttemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=test2.us.oracle.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PROD1)))OK(0msec)5.传输密码文件:

[oracle@test1dbs]$cd$ORACLE_HOME/dbs[oracle@test1dbs]$lshc_PROD1.datinit.oralkPROD1orapwPROD1spfilePROD1.ora[oracle@test1dbs]$scporapwPROD1test2:/u01/app/oracle/product/11.2.0/dbhome_1/dbsoracle@test2'spassword:orapwPROD1100%15361.5KB/s00:006.修改参数文件配置:

[oracle@test1dbs]$lshc_PROD1.datinit.orainitPROD1.oralkPROD1orapwPROD1spfilePROD1.ora[oracle@test1dbs]$catinitPROD1.oraPROD1.__db_cache_size=260046848PROD1.__java_pool_size=4194304PROD1.__large_pool_size=8388608PROD1.__oracle_base='/u01/app/oracle'#ORACLE_BASEsetfromenvironmentPROD1.__pga_aggregate_target=398458880PROD1.__sga_target=390070272PROD1.__shared_io_pool_size=0PROD1.__shared_pool_size=104857600PROD1.__streams_pool_size=0*.audit_file_dest='/u01/app/oracle/admin/PROD1/adump'*.audit_trail='db'*.compatible='11.2.0.4.0'*.control_files='/u01/app/oracle/oradata/PROD1/control01.ctl','/u01/app/oracle/fast_recovery_area/PROD1/control02.ctl'*.db_block_size=8192*.db_domain=''*.db_name='PROD1'*.db_recovery_file_dest='/home/oracle/flash'*.db_recovery_file_dest_size=4294967296*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP)(SERVICE=PROD1XDB)'*.memory_target=786432000*.open_cursors=300*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.undo_tablespace='UNDOTBS1'DB_UNIQUE_NAME=PROD1LOG_ARCHIVE_CONFIG='DG_CONFIG=(PROD1,LEILEI)'LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/flashVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=PROD1'LOG_ARCHIVE_DEST_2='SERVICE=PROD1_SASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=LEILEI'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLEREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arcLOG_ARCHIVE_MAX_PROCESSES=30FAL_SERVER=PROD1STANDBY_FILE_MANAGEMENT=AUTO

传输静态参数文件到备库:

[oracle@test1dbs]$scpinitPROD1.oratest2:/u01/app/oracle/product/11.2.0/dbhome_1/dbsoracle@test2'spassword:initPROD1.ora100%13991.4KB/s00:00

在备库上修改静态参数文件:

[oracle@test2dbs]$catinitPROD1.ora*.control_files='/u01/app/oracle/oradata/PROD1/control01.ctl','/u01/app/oracle/fast_recovery_area/PROD1/control02.ctl'*.db_block_size=8192*.db_domain=''*.db_name='PROD1'*.db_recovery_file_dest='/home/oracle/flash'*.db_recovery_file_dest_size=4294967296*.diagnostic_dest='/u01/app/oracle'*.dispatchers='(PROTOCOL=TCP)(SERVICE=PROD1XDB)'*.memory_target=786432000*.open_cursors=300*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.undo_tablespace='UNDOTBS1'DB_UNIQUE_NAME=LEILEILOG_ARCHIVE_CONFIG='DG_CONFIG=(LEILEI,PROD1)'LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/flashVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=LEILEI'LOG_ARCHIVE_DEST_2='SERVICE=PROD1ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=PROD1'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLEREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arcLOG_ARCHIVE_MAX_PROCESSES=30FAL_SERVER=PROD1STANDBY_FILE_MANAGEMENT=AUTO7.在备库上,创建静态参数文件中对应的目录文件夹

[oracle@test2dbs]$mkdir-p/home/oracle/flashmkdir-p/u01/app/oracle/admin/PROD1/adumpmkdir-p/u01/app/oracle/oradata/PROD1mkdir-p/u01/app/oracle/fast_recovery_area/PROD18.启动备库到【nomount】阶段;

[oracle@test2~]$exportORACLE_SID=PROD1[oracle@test2~]$sqlplus/assysdbaSQL*Plus:Release11.2.0.4.0ProductiononMonFeb2513:59:232019Copyright(c)1982,2013,Oracle.Allrightsreserved.Connectedtoanidleinstance.SYS@PROD1>startupnomount;ORACLEinstancestarted.TotalSystemGlobalArea1219260416bytesFixedSize2252744bytesVariableSize788529208bytesDatabaseBuffers419430400bytesRedoBuffers9048064bytes9.主库登录RMAN,复制数据库;

[oracle@test1~]$rmantargetsys/oracle@prod1auxiliarysys/oracle@prod1_sRecoveryManager:Release11.2.0.4.0-ProductiononMonFeb2513:43:232019Copyright(c)1982,2011,Oracleand/oritsaffiliates.Allrightsreserved.connectedtotargetdatabase:PROD1(DBID=2222506242)connectedtoauxiliarydatabase:PROD1(notmounted)RMAN>duplicatetargetdatabaseforstandbyfromactivedatabasenofilenamecheck;StartingDuplicateDbat2019-02-2513:43:31usingtargetdatabasecontrolfileinsteadofrecoverycatalogallocatedchannel:ORA_AUX_DISK_1channelORA_AUX_DISK_1:SID=10devicetype=DISKcontentsofMemoryScript:{backupascopyreusetargetfile'/u01/app/oracle/product/11.2.0/db_1/dbs/orapwPROD1'auxiliaryformat'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwPROD1';}executingMemoryScriptStartingbackupat2019-02-2513:43:32allocatedchannel:ORA_DISK_1channelORA_DISK_1:SID=17devicetype=DISKFinishedbackupat2019-02-2513:43:33contentsofMemoryScript:{backupascopycurrentcontrolfileforstandbyauxiliaryformat'/u01/app/oracle/oradata/PROD1/control01.ctl';restoreclonecontrolfileto'/u01/app/oracle/fast_recovery_area/PROD1/control02.ctl'from'/u01/app/oracle/oradata/PROD1/control01.ctl';}executingMemoryScriptStartingbackupat2019-02-2513:43:33usingchannelORA_DISK_1channelORA_DISK_1:startingdatafilecopycopyingstandbycontrolfileoutputfilename=/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_PROD1.ftag=TAG20190225T134333RECID=2STAMP=1001166214channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:03Finishedbackupat2019-02-2513:43:36Startingrestoreat2019-02-2513:43:36usingchannelORA_AUX_DISK_1channelORA_AUX_DISK_1:copiedcontrolfilecopyFinishedrestoreat2019-02-2513:43:37contentsofMemoryScript:{sqlclone'alterdatabasemountstandbydatabase';}executingMemoryScriptsqlstatement:alterdatabasemountstandbydatabasecontentsofMemoryScript:{setnewnamefortempfile1to"/u01/app/oracle/oradata/PROD1/temp01.dbf";switchclonetempfileall;setnewnamefordatafile1to"/u01/app/oracle/oradata/PROD1/system01.dbf";setnewnamefordatafile2to"/u01/app/oracle/oradata/PROD1/sysaux01.dbf";setnewnamefordatafile3to"/u01/app/oracle/oradata/PROD1/undotbs01.dbf";setnewnamefordatafile4to"/u01/app/oracle/oradata/PROD1/users01.dbf";setnewnamefordatafile5to"/u01/app/oracle/oradata/PROD1/example01.dbf";backupascopyreusedatafile1auxiliaryformat"/u01/app/oracle/oradata/PROD1/system01.dbf"datafile2auxiliaryformat"/u01/app/oracle/oradata/PROD1/sysaux01.dbf"datafile3auxiliaryformat"/u01/app/oracle/oradata/PROD1/undotbs01.dbf"datafile4auxiliaryformat"/u01/app/oracle/oradata/PROD1/users01.dbf"datafile5auxiliaryformat"/u01/app/oracle/oradata/PROD1/example01.dbf";sql'altersystemarchivelogcurrent';}executingMemoryScriptexecutingcommand:SETNEWNAMErenamedtempfile1to/u01/app/oracle/oradata/PROD1/temp01.dbfincontrolfileexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEStartingbackupat2019-02-2513:43:43usingchannelORA_DISK_1channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00001name=/u01/app/oracle/oradata/PROD1/system01.dbfoutputfilename=/u01/app/oracle/oradata/PROD1/system01.dbftag=TAG20190225T134343channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:45channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00002name=/u01/app/oracle/oradata/PROD1/sysaux01.dbfoutputfilename=/u01/app/oracle/oradata/PROD1/sysaux01.dbftag=TAG20190225T134343channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:25channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00005name=/u01/app/oracle/oradata/PROD1/example01.dbfoutputfilename=/u01/app/oracle/oradata/PROD1/example01.dbftag=TAG20190225T134343channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:15channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00003name=/u01/app/oracle/oradata/PROD1/undotbs01.dbfoutputfilename=/u01/app/oracle/oradata/PROD1/undotbs01.dbftag=TAG20190225T134343channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:07channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00004name=/u01/app/oracle/oradata/PROD1/users01.dbfoutputfilename=/u01/app/oracle/oradata/PROD1/users01.dbftag=TAG20190225T134343channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:01Finishedbackupat2019-02-2513:45:16sqlstatement:altersystemarchivelogcurrentcontentsofMemoryScript:{switchclonedatafileall;}executingMemoryScriptdatafile1switchedtodatafilecopyinputdatafilecopyRECID=2STAMP=1001167339filename=/u01/app/oracle/oradata/PROD1/system01.dbfdatafile2switchedtodatafilecopyinputdatafilecopyRECID=3STAMP=1001167339filename=/u01/app/oracle/oradata/PROD1/sysaux01.dbfdatafile3switchedtodatafilecopyinputdatafilecopyRECID=4STAMP=1001167339filename=/u01/app/oracle/oradata/PROD1/undotbs01.dbfdatafile4switchedtodatafilecopyinputdatafilecopyRECID=5STAMP=1001167339filename=/u01/app/oracle/oradata/PROD1/users01.dbfdatafile5switchedtodatafilecopyinputdatafilecopyRECID=6STAMP=1001167339filename=/u01/app/oracle/oradata/PROD1/example01.dbfFinishedDuplicateDbat2019-02-2513:45:32二、 检查主备搭建情况1.主库

[oracle@test1~]$exportORACLE_SID=PROD1[oracle@test1~]$sqlplus/assysdbaSQL*Plus:Release11.2.0.4.0ProductiononMonFeb2513:46:562019Copyright(c)1982,2013,Oracle.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.2.0.4.0-64bitProductionWiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptionsSYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS----------------------------------------------------------------------------------------------------------------READWRITEPRIMARYSESSIONSACTIVESYS@PROD1>select*fromv$log;GROUP#THREAD#SEQUENCE#BYTESBLOCKSIZEMEMBERSARCHIVSTATUSFIRST_CHANGE#FIRST_TIMENEXT_CHANGE#NEXT_TIME-----------------------------------------------------------------------------------------------------------------------------------------------------------------1116524288005121NOCURRENT9964782019-02-2514:19:032.8147E+142114524288005121YESINACTIVE9960732019-02-2514:12:339961612019-02-2514:13:553115524288005121YESACTIVE9961612019-02-2514:13:559964782019-02-2514:19:032.备库

[oracle@test2~]$sqlplus/assysdbaSQL*Plus:Release11.2.0.4.0ProductiononMonFeb2514:04:362019Copyright(c)1982,2013,Oracle.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.2.0.4.0-64bitProductionWiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptionsSYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS----------------------------------------------------------------------------------------------------------------MOUNTEDPHYSICALSTANDBYRECOVERYNEEDED备库处于MOUNTED模式下,只能开启实时应用在线日志或者归档日志。SYS@PROD1>selectPROCESS,STATUS,SEQUENCE#fromv$managed_standby;PROCESSSTATUSSEQUENCE#---------------------------------------------------------ARCHCLOSING15ARCHCONNECTED0......ARCHCONNECTED0ARCHCONNECTED0ARCHCONNECTED0RFSIDLE0RFSIDLE0RFSIDLE1633rowsselected.SYS@PROD1>alterdatabaseopen;Databasealtered.SYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS-------------------------------------------------READONLYPHYSICALSTANDBYNOTALLOWED三、 测试主备功能及切换应用Ø测试1

Ø测试1Test1:SYS@PROD1>createtablet1(idnumber);Tablecreated.Test2:SYS@PROD1>desct1ERROR:ORA-04043:objectt1doesnotexistSYS@PROD1>recovermanagedstandbydatabasedisconnect;Mediarecoverycomplete.SYS@PROD1>desct1ERROR:ORA-04043:objectt1doesnotexistTest1:SYS@PROD1>altersystemswitchlogfile;Systemaltered.Test2:SYS@PROD1>desct1NameNull?Type----------------------------------------IDNUMBERØ测试2

11G新特性:ADG

Test2:SYS@PROD1>recovermanagedstandbydatabasecancel;Mediarecoverycomplete.SYS@PROD1>recovermanagedstandbydatabaseusingcurrentlogfiledisconnectfromsession;Mediarecoverycomplete.Test1:SYS@PROD1>createtablet2(idnumber);Tablecreated.Test2:SYS@PROD1>desct2NameNull?Type-----------------------------------IDNUMBERØ测试3

以下为Data Guard最为重要的两个功能:

参考博客:http://www.cnblogs.com/hllnj2008/p/4995099.html

角色切换

TEST1:SYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS----------------------------------------------------------------------------------------------------------------READWRITEPRIMARYTOSTANDBYSYS@PROD1>alterdatabasecommittoswitchovertophysicalstandby;Databasealtered.SYS@PROD1>conn/assysdba;Connectedtoanidleinstance.SYS@PROD1>startupORACLEinstancestarted.TotalSystemGlobalArea1219260416bytesFixedSize2252744bytesVariableSize788529208bytesDatabaseBuffers419430400bytesRedoBuffers9048064bytesDatabasemounted.Databaseopened.SYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS----------------------------------------------------------------------------------------------------------------READONLYPHYSICALSTANDBYTOPRIMARYTEST2:SYS@PROD1>recovermanagedstandbydatabasecancel;Mediarecoverycomplete.SYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS----------------------------------------------------------------------------------------------------------------READONLYPHYSICALSTANDBYTOPRIMARYSYS@PROD1>alterdatabasecommittoswitchovertoprimary;Databasealtered.SYS@PROD1>selectopen_mode,database_role,switchover_statusfromv$database;OPEN_MODEDATABASE_ROLESWITCHOVER_STATUS----------------------------------------------------------------------------------------------------------------MOUNTEDPRIMARYNOTALLOWEDSYS@PROD1>alterdatabaseopen;Databasealtered.SYS@PROD1>insertintot1values(1);1rowcreated.SYS@PROD1>commit;Commitcomplete.SYS@PROD1>select*fromt1;ID----------1TEST1:SYS@PROD1>select*fromt1;norowsselectedSYS@PROD1>recovermanagedstandbydatabaseusingcurrentlogfiledisconnectfromsession;Mediarecoverycomplete.SYS@PROD1>select*fromt1;ID----------1

到此,关于“Oracle Data Guard部署分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!