




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Oracle11g利用rman創建物理standby實驗配置指南內部公開TIME\@"yyyy年M月d日星期W"2010年7月29日星期四內部資料,請勿擴散第頁資料編碼QJSHKJB002產品名稱Oracle11gR1dataguard使用對象所有使用ORACLE數據庫軟件的部門產品版本Oracle11g利用rman創建物理standby實驗配置指南(VMserver+centOS4.7+Single-instance)擬制:XXX日期:2010-07-29修訂記錄日期修訂版本作者描述20100/07/29V1.00821初始發行注意:些例僅為測試,生產環境中請根據實際情況利用不同配置目錄第1章實驗環境 4第2章復制前準備工作 52.1調整主數據庫 52.1.1強制記錄所有的交易 52.1.2創建備用重做日志組 52.1.3文件存放路徑轉換 62.1.4修改主站點初始化參數 62.1.5網絡配置修改 92.2準備復制:準備備用站點 112.2.1創建必要的目錄 112.2.2設置密碼文件 112.2.3創建備用初始化參數文件 11第3章通過DUPLICATEDATABASE復制備用數據庫 13第4章復制之后:清除、校驗和轉換 194.1物理standby的Switchover 214.1.1檢查是否支持switchover操作--primary數據庫操作 214.1.2啟動switchover--primary數據庫操作 214.1.3重啟動到mount--原primary數據庫操作 224.1.4檢查是否支持switchover操作--待轉換standby數據庫操作 224.1.5轉換角色到primary--待轉換standby數據庫操作 224.1.6完成轉換,打開新的primary數據庫 244.1.7驗證新的primary數據庫 254.2物理standby的failover 264.2.1檢查歸檔文件是否連續 264.2.2檢查歸檔文件是否完整 274.2.3啟動failover 274.2.4切換物理standby角色為primary 274.2.5啟動新的primary數據庫。 27第5章監控primary/standby數據庫 285.1dataguard監控配置的方式 285.2調整物理standbylog應用頻率 34第6章數據保護模式簡述 35實驗環境筆者的硬件基本情況是:VMWareServer1.0.10、CentOS4.7(2.6.9-78.EL)1CPU、2G通過不斷的實驗和總結我們終于完成了oracle11g物理standby的安裝配置,在本文中VMWare虛擬機安裝配置cetnOS安裝配置oracle11g軟件安裝配置等不作為本文說明重點,我們將集中精力說明通過復制特性創建備用數據庫過程。oracle11g全面改良了物理standby,最突出的特點就是在readonly打開模式下,可以邊接收邊應用(主要是進行select操作)。在oracle11g中創建一個備用數據庫變得非常方便,我們可以使用恢復管理器(RMAN),oracle11G支持直接從主數據庫使用DUPLICATEDATABASE命令集通過網絡復制一個備用數據庫,只要目標數據庫是活動的即可。這意味著再也不用先生→成再傳輸→最后在備用數據庫上通過復雜的手工方式還原和恢復主數據庫的RMAN備份集了,RMAN在主站點內存中自動生成一個轉換腳本在,然后在備用站點上使用此腳本管理復制操作,實際上不用DBA進行任何干預。在主、備站點的/etc/hosts文件中添加合適的條目#thatrequirenetworkfunctionalitywillfail.localhost.localdomainlocalhost91node490node3讓主站點(node3)和備用站點(node4)之間建立起網絡連接,然后在每個節點上都安裝Oracle11g數據庫,最后,在主站點(node3)上創建好標準的11gR1種子數據庫,包括標準的示例方案。此數據庫的ORACLE_SID是primary,接下來就可以開始執行實況復制操作了。復制前準備工作調整主數據庫在復制主數據庫到對應的備用環境中之前,我需要對主數據庫做一些調整,下面的步驟未做特別說明沒有先后順序,只要在發出DUPLICATEDATABASE命令前這些步驟都執行完了即可,在復制操作過程中應該沒有什么讓人意外的事件出現。強制記錄所有的交易大多數組織實施數據衛士配置的主要原因是保證所有交易都不丟失,但遺憾的是,默認情況下,Oracle數據庫是運行在NOFORCELOGGING模式下的,這意味著對對象的改變可能丟失,因為他們的存儲屬性被設為NOLOGGING,為了確保所有的改變都被記錄下來,我們必須執行ALTERDATABASEFORCELOGGING命令,此命令需要在ALTERDATABASEARCHIVELOG命令將數據庫配置為ARCHIVELOG模式前執行將主數據庫切換到ARCHIVELOG模式--為歸檔日志文件設置一個合適的格式(格式有該參數:log_archive_format控制)
ALTERSYSTEMSETlog_archive_format='log_%s_%t_%r.arc'SCOPE=SPFILE;
--設置新的DB_UNIQUE_NAME(標識數據庫的唯一名字)參數,它不能動態修改
ALTERSYSTEMSETdb_unique_name='lijl'SCOPE=SPFILE;
SHUTDOWNIMMEDIATE;
STARTUPMOUNT;
ALTERDATABASEFORCELOGGING;
ALTERDATABASEARCHIVELOG;
ALTERDATABASEOPEN;創建備用重做日志組自Oracle9iR2開始支持備用重做日志(standbyredolog即SRL)組開始,Oracle就建議配置它,SRL對于實時應用(RealTimeApply)特性是需要的,或DBA想要實現重做日志串聯目的時也需要,除此之外,它依然是備用數據庫配置選項。Oracle11g另一個優點是如果SRL在主數據庫上已經配置好,那么DUPLICATEDATABASE命令將會在備用數據庫上自動創建它們。下述過程顯示了在主數據庫上創建SRL,注意我們使用了多個重SRL文件保護整個SRL組,避免數據丟失,這一點和在線重做日志組類似。在主數據庫上創建備用重做日志文件ALTERDATABASEADDSTANDBYLOGFILE'/oracle/app/oradata/lijl/srl01.log'SIZE50MREUSE;ALTERDATABASEADDSTANDBYLOGFILE'/oracle/app/oradata/lijl/srl02.log'SIZE50MREUSE;ALTERDATABASEADDSTANDBYLOGFILE'/oracle/app/oradata/lijl/srl03.log'SIZE50MREUSE;文件存放路徑轉換一般情況下,備用數據庫都是創建在與主數據庫不同的主機上的,否則,在災難中主備數據庫都有可能受到危害,最佳做法是將對應的備用數據庫的目錄和文件名都配成一樣,但如果遇到掛載點(unix系統和windons系統不同,可以將目錄加載到不同的掛載點上)不一樣時,目錄名需要修改。此種轉換通過DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT初始化參數進行控制。修改主站點初始化參數在主數據庫上設置下列初始化參數確保DUPLICATEDATABASE命令能夠同樣配置備用數據庫,下述過程詳細列出了這些初始化參數含義及相應設置:在主數據庫上設置合適的初始化參數值*.audit_trail='db'*.compatible='.0*.control_files='/oracle/app/oradata/lijl/control01.ctl','/oracle/app/oradata/lijl/control02.ctl','/oracle/app/oradata/lijl/control03.ctl'*.db_block_size=8192*.db_domain=''*.db_name='lijl'*.db_recovery_file_dest='/oracle/app/flash_recovery_area'*.db_recovery_file_dest_size=2147483648*.diagnostic_dest='/oracle/app'*.dispatchers='(PROTOCOL=TCP)(SERVICE=primaryXDB)'*.log_archive_dest_1='LOCATION=/oracle/app/archive'*.log_archive_format='%t_%s_%r.arc'*.log_archive_dest='/oracle/app/archive'*.memory_target=314572800*.nls_language='SIMPLIFIEDCHINESE'*.nls_territory='CHINA'*.open_cursors=300*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.undo_tablespace='UNDOTBS1'下面的參數是配置dataguard過程中添加的*.db_unique_name='primary'*.archive_lag_target=1800*.fal_client='standby'*.fal_server='primary'*.log_archive_config='dg_config=(primary,standby)'*.log_archive_dest_1='LOCATION=/oracle/app/archive/DB_UNIQUE_NAME=primaryVALID_FOR=(ALL_LOGFILES,ALL_ROLES)'*.log_archive_dest_2='SERVICE=standbyASYNCDB_UNIQUE_NAME=standbyVALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_archive_format='log_%s_%t_%r.arc'*.db_file_name_convert='/oracle/app/oradata/lijl/','/oracle/app/oradata/lijl/'*.log_file_name_convert='/oracle/app/oradata/lijl/','/oracle/app/oradata/lijl/'*.standby_file_management='AUTO'下列參數為primary角色相關的初始化參數:DB_NAME注意保持同一個DataGuard中所有數據庫DB_NAME相同。例如:DB_NAME=lijlDB_UNIQUE_NAME為每一個數據庫指定一個唯一的名稱,該參數一經指定不會再發生變化,除非你主動修改它。例如:DB_UNIQUE_NAME=primaryLOG_ARCHIVE_CONFIG該參數通過DG_CONFIG屬性羅列同一個DataGuard中所有DB_UNIQUE_NAME(含primarydb及standbydb),以逗號分隔例如:LOG_ARCHIVE_CONFIG='DB_CONFIG=(primary,stdby)'CONTROL_FILES沒啥說的,控制文件所在路徑。LOG_ARCHIVE_DEST_n歸檔文件的生成路徑。該參數非常重要,并且屬性和子參數也特別多(這里不一一列舉,建議直接查詢oracle11g官方文檔。Dataguard白皮書中介紹了該參數各屬性及子參數的功能和設置)。例如:LOG_ARCHIVE_DEST_1='LOCATION=/oracle/app/archive/VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=jssweb'LOG_ARCHIVE_DEST_STATE_n指定參數值為ENABLE,允許redo傳輸服務傳輸redo數據到指定的路徑。該參數共擁有4個屬性值,功能各不相同。REMOTE_LOGIN_PASSWORDFILE推薦設置參數值為EXCLUSIVE或者SHARED,注意保證相同DataGuard配置中所有db服務器sys密碼相同。LOG_ARCHIVE_FORMAT指定歸檔文件格式。LOG_ARCHIVE_MAX_PRODUC指定歸檔進程的數量(1-30),默認值通常是4。注意:上面列舉的這些參數僅只是對于primary/standby兩角色可能會相關的參數,還有一些基礎性參數比如*_dest,*_size等數據庫相關的參數在具體配置時也需要根據實際情況做出適當修改。STANDBY_FILE_MANAGMENT有兩個值auto和manual如果設置為manual的話,對于表空間和數據文件的操作必須有dba手工介入,需要提醒你的是,如果存儲采用文件系統或者ASM,那當然沒有問題,但是如果采用了裸設備,你就必須將該參數設置為manual。5、確保數據庫處于歸檔模式SQL>archiveloglistDatabaselogmodeArchiveModeAutomaticarchivalEnabledArchivedestination/oracle/app/archive/Oldestonlinelogsequence328Nextlogsequencetoarchive330Currentlogsequence330SQL>如果當前primary數據庫并未處于歸檔模式,可通過下列命令將數據庫置為歸檔模式:SQL>STARTUPMOUNT;SQL>ALTERDATABASEARCHIVELOG;SQL>ALTERDATABASEOPEN;網絡配置修改最后,我需要確保主數據庫和備用數據庫之間能夠通過網絡通信,備用數據庫的LISTENER.ORA配置文件也需要一個備用數據庫實例的靜態監聽器。在數據庫本地命名配置文件(TNSNAMES.ORA)中加上備用數據庫的實例,主數據庫實和備用數據庫tnsnames.ora條目都采用相同的配置如下:
PRIMARY=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node3)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary)))STANDBY=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node4)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=standby)))主數據庫實和備用數據庫中listener.ora的內容如下
主數據庫:PRIMARY=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node3)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=primary)))STANDBY=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node4)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=standby)))備數據庫:SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=standby)(ORACLE_HOME=/oracle/app/product)(GLOBAL_DBNAME=standby)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node4)(PORT=1521))(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))))準備復制:準備備用站點現在主站點已經準備好可以復制了,在對應的備用站點上也需要做一些對應的調整:創建必要的目錄需要為數據庫控制文件、數據文件、在線重做日志文件和備用重做日志文件創建必要的目錄,我還為數據庫的審核跟蹤創建了合適的目錄。mkdir-p/oracle/app/admin/lijl/adumpmkdir-p/oracle/app/admin/lijl/dpdumpmkdir-p/oracle/app/admin/lijl/pfilemkdir-p/oracle/app/oradata/lijlmkdir-p/oracle/app/archive設置密碼文件因為主數據庫要和備用數據庫進行通信時需要使用遠程認證,我將會使用orapwd工具創建一個新的密碼文件,確保SYS的密碼和主數據庫匹配(注意我們可以直接從主數據庫拷貝到備用數據庫)。創建備用初始化參數文件最后,我需要創建一個初始化參數文件(PFILE),僅允許我啟動備用數據庫實例,它理論上只需要一個參數:DB_NAME。當DUPLICATEDATABASE命令腳本執行完畢后,它將會創建一個服務端參數文件(SPFILE),它僅包括合適的初始化參數設置。可在做實驗過程中為了保證能成功創建物理standby我們使用的初始化參數配置如下:備用數據庫臨時初始化參數文件
*.db_name=lijl*.compatible='.0*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.undo_tablespace='UNDOTBS1'*.db_unique_name='standby'*.archive_lag_target=18000*.fal_client='primary'*.fal_server='standby'*.control_files='/oracle/app/oradata/lijl/control01.ctl','/oracle/app/oradata/lijl/control02.ctl','/oracle/app/oradata/lijl/control03.ctl'*.log_archive_dest='/oracle/app/archive'*.log_archive_config='dg_config=(primary,standby)'*.log_archive_dest_1='location=/oracle/app/archivevalid_for=(ALL_LOGFILES,ALL_ROLES)db_unique_name=standby'*.log_archive_dest_2='service=primaryASYNCvalid_for=(ONLINE_LOGFILE,PRIMARY_ROLE)db_unique_name=primary'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.log_archive_format='log_%s_%t_%r.arc'*.log_file_name_convert='/oracle/app/oradata/lijl,'/oracle/app/oradata/lijl/'*.db_file_name_convert='/oracle/app/oradata/lijl,'/oracle/app/oradata/lijl/'*.standby_file_management='AUTO'上述參數中添加了下面這樣一些額外的參數,可能和主數據庫的參數稍有不同:(1)DB_UNIQUE_NAME我將此參數的值設為stdby了。(2)CONTROL_FILES我只為備用數據庫創建了3個控制文件。(3)FAL_CLIENT和FAL_SERVER這兩個參數確定哪個數據庫服務分別擔任FAL(fetcharchivelog)客戶端和服務器,例如,無論何時,當主數據庫和備用數據庫之間的網絡斷掉后,或如果備用數據庫已經關閉相當長一段時間,歸檔重做日志可能就不會傳輸到備用服務器上。這種情況叫做歸檔日志空白(archiveloggap),這兩個FAL服務名確定了由哪個服務器(FAL_SERVER)維護所有歸檔重做日志組主列表,由它為FAL_CLIENT提供可能發生的歸檔日志空白解決方案。在我們的數據衛士設置中,將備用服務器配置為FAL_SERVER,將主服務器配置為FAL_CLIENT。(4)LOG_FILE_NAME_CONVERT我已經使用此參數將主數據庫的歸檔重做日志和備用重做日志的目標做了翻譯,確保在復制過程中RMAN能夠自動在備用數據庫上創建恰當的副本。(5)LOG_ARCHIVE_DEST_n和主數據庫一樣,我也設置了兩個歸檔日志目標:一個主目標LOG_ARCHIVE_DEST_1和次要目標LOG_ARCHIVE_DEST_2。將來主備站點角色發生交換后,將由次要目標中的歸檔重做日志傳輸到原始主數據庫中。這些命令和臨時備用數據庫初始化參數,為了開啟DUPLICATEDATABASE復制操作,我將啟動備用站點的監聽器(lsnrctlstart),然后使用前面創建的PFILE初始化參數文件將備用數據庫實例啟動到NOMOUNT狀態。$>exportORACLE_SID=stdby
$>sqlplus/assysdba
SQL>startupnomountpfile='/oracle/app/product/dbs/initstdby.ora';通過DUPLICATEDATABASE復制備用數據庫從主數據庫的RMAN會話環境啟動DUPLICATEDATABASE命令,前面我已經提到過,Oracle11g中DUPLICATEDATABASE命令最引人注目的改變是它可以通過網絡直接將主數據庫復制到備用數據庫站點。最后,讓我們開始復制吧!首先在主數據庫服務器上啟動一個RMAN會話,以target連接到主數據庫,以auxiliary連接到備用數據庫:來自一個成功的備用數據庫復制操作的輸出內容[oracle@node3admin]$rmantarget/auxiliarysys/oracle@standbyRecoveryManager:Release.0-ProductiononFriJul2312:43:162010Copyright(c)1982,2007,Oracle.Allrightsreserved.connectedtotargetdatabase:LIJL(DBID=1374471298)connectedtoauxiliarydatabase:LIJL(notmounted)RMAN>duplicatetargetdatabaseforstandbyfromactivedatabasedorecovernofilenamecheck;StartingDuplicateDbat23-JUL-10usingtargetdatabasecontrolfileinsteadofrecoverycatalogallocatedchannel:ORA_AUX_DISK_1channelORA_AUX_DISK_1:SID=95devicetype=DISKcontentsofMemoryScript:{backupascopyreusefile'/oracle/app/product/dbs/orapwprimary'auxiliaryformat'/oracle/app/product/dbs/orapwstandby';}executingMemoryScriptStartingbackupat23-JUL-10allocatedchannel:ORA_DISK_1channelORA_DISK_1:SID=145devicetype=DISKFinishedbackupat23-JUL-10contentsofMemoryScript:{backupascopycurrentcontrolfileforstandbyauxiliaryformat'/oracle/app/oradata/lijl/control01.ctl';restoreclonecontrolfileto'/oracle/app/oradata/lijl/control02.ctl'from'/oracle/app/oradata/lijl/control01.ctl';restoreclonecontrolfileto'/oracle/app/oradata/lijl/control03.ctl'from'/oracle/app/oradata/lijl/control01.ctl';sqlclone'alterdatabasemountstandbydatabase';}executingMemoryScriptStartingbackupat23-JUL-10usingchannelORA_DISK_1channelORA_DISK_1:startingdatafilecopycopyingstandbycontrolfileoutputfilename=/oracle/app/product/dbs/snapcf_primary.ftag=TAG20100723T124330RECID=6STAMP=725114611channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:01Finishedbackupat23-JUL-10Startingrestoreat23-JUL-10usingchannelORA_AUX_DISK_1channelORA_AUX_DISK_1:skipped,AUTOBACKUPalreadyfoundchannelORA_DISK_1:skipped,AUTOBACKUPalreadyfoundchannelclone_default:copiedcontrolfilecopyFinishedrestoreat23-JUL-10Startingrestoreat23-JUL-10usingchannelORA_AUX_DISK_1channelORA_AUX_DISK_1:skipped,AUTOBACKUPalreadyfoundchannelORA_DISK_1:skipped,AUTOBACKUPalreadyfoundchannelclone_default:copiedcontrolfilecopyFinishedrestoreat23-JUL-10sqlstatement:alterdatabasemountstandbydatabasecontentsofMemoryScript:{setnewnamefortempfile1to"/oracle/app/oradata/lijl/temp01.arc";switchclonetempfileall;setnewnamefordatafile1to"/oracle/app/oradata/lijl/system01.arc";setnewnamefordatafile2to"/oracle/app/oradata/lijl/sysaux01.arc";setnewnamefordatafile3to"/oracle/app/oradata/lijl/undotbs01.arc";setnewnamefordatafile4to"/oracle/app/oradata/lijl/users01.arc";backupascopyreusedatafile1auxiliaryformat"/oracle/app/oradata/lijl/system01.arc"datafile2auxiliaryformat"/oracle/app/oradata/lijl/sysaux01.arc"datafile3auxiliaryformat"/oracle/app/oradata/lijl/undotbs01.arc"datafile4auxiliaryformat"/oracle/app/oradata/lijl/users01.arc";sql'altersystemarchivelogcurrent';}executingMemoryScriptexecutingcommand:SETNEWNAMErenamedtempfile1to/oracle/app/oradata/lijl/temp01.arcincontrolfileexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEexecutingcommand:SETNEWNAMEStartingbackupat23-JUL-10usingchannelORA_DISK_1channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00001name=/oracle/app/oradata/lijl/system01.arcoutputfilename=/oracle/app/oradata/lijl/system01.arctag=TAG20100723T124354RECID=0STAMP=0channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:01:05channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00003name=/oracle/app/oradata/lijl/undotbs01.arcoutputfilename=/oracle/app/oradata/lijl/undotbs01.arctag=TAG20100723T124354RECID=0STAMP=0channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:35channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00002name=/oracle/app/oradata/lijl/sysaux01.arcoutputfilename=/oracle/app/oradata/lijl/sysaux01.arctag=TAG20100723T124354RECID=0STAMP=0channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:25channelORA_DISK_1:startingdatafilecopyinputdatafilefilenumber=00004name=/oracle/app/oradata/lijl/users01.arcoutputfilename=/oracle/app/oradata/lijl/users01.arctag=TAG20100723T124354RECID=0STAMP=0channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:01Finishedbackupat23-JUL-10sqlstatement:altersystemarchivelogcurrentcontentsofMemoryScript:{backupascopyreusearchiveloglike"/oracle/app/archive/log_54_1_725102466.arc"auxiliaryformat"/oracle/app/archive/log_54_1_725102466.arc";catalogclonearchivelog"/oracle/app/archive/log_54_1_725102466.arc";switchclonedatafileall;}executingMemoryScriptStartingbackupat23-JUL-10usingchannelORA_DISK_1channelORA_DISK_1:startingarchivedlogcopyinputarchivedlogthread=1sequence=54RECID=26STAMP=725114760outputfilename=/oracle/app/archive/log_54_1_725102466.arcRECID=0STAMP=0channelORA_DISK_1:archivedlogcopycomplete,elapsedtime:00:00:01Finishedbackupat23-JUL-10catalogedarchivedlogarchivedlogfilename=/oracle/app/archive/log_54_1_725102466.arcRECID=1STAMP=724769476datafile1switchedtodatafilecopyinputdatafilecopyRECID=6STAMP=724769477filename=/oracle/app/oradata/lijl/system01.arcdatafile2switchedtodatafilecopyinputdatafilecopyRECID=7STAMP=724769477filename=/oracle/app/oradata/lijl/sysaux01.arcdatafile3switchedtodatafilecopyinputdatafilecopyRECID=8STAMP=724769477filename=/oracle/app/oradata/lijl/undotbs01.arcdatafile4switchedtodatafilecopyinputdatafilecopyRECID=9STAMP=724769477filename=/oracle/app/oradata/lijl/users01.arccontentsofMemoryScript:{setuntilscn416378;recoverstandbyclonedatabasedeletearchivelog;}executingMemoryScriptexecutingcommand:SETuntilclauseStartingrecoverat23-JUL-10usingchannelORA_AUX_DISK_1startingmediarecoveryarchivedlogforthread1withsequence54isalreadyondiskasfile/oracle/app/archive/log_54_1_725102466.arcarchivedlogfilename=/oracle/app/archive/log_54_1_725102466.arcthread=1sequence=54mediarecoverycomplete,elapsedtime:00:00:00Finishedrecoverat23-JUL-10FinishedDuplicateDbat23-JUL-10RMAN>exitRecoveryManagercomplete.[oracle@node3admin]$clear[oracle@node3admin]$復制之后:清除、校驗和轉換至此復制操作執行結束,我需要確保備用數據庫從主數據庫接收到歸檔重做日志,為了驗證主備數據庫確實是聯通的,我將在主數據庫上執行一次重做日志切換。SQL﹥ALTERSYSTEMARCHIVELOGCURRENT;下面是來自備用數據庫的警告日志,從中可以看出在線重做日志成功傳輸并應用到備用數據庫上了。oracle@node4trace]$tail-falert_stdby.logRecoveryofOnlineRedoLog:Thread1Group4Seq57Readingmem0Mem#0:/oracle/app/oradata/stdby/srl01.logSunJul1802:40:242010MediaRecoveryWaitingforthread1sequence58SunJul1802:40:242010PrimarydatabaseisinMAXIMUMPERFORMANCEmodekcrrvslf:activeRFSarchivalforlog4thread1sequence57RFS[2]:Successfullyopenedstandbylog5:'/oracle/app/oradata/stdby/srl02.log'RecoveryofOnlineRedoLog:Thread1Group5Seq58Readingmem0Mem#0:/oracle/app/oradata/stdby/srl02.logSunJul1802:41:042010PrimarydatabaseisinMAXIMUMPERFORMANCEmodeSunJul1802:41:052010MediaRecoveryWaitingforthread1sequence59(intransit)RFS[2]:Successfullyopenedstandbylog5:'/oracle/app/oradata/stdby/srl02.log'RecoveryofOnlineRedoLog:Thread1Group5Seq59Readingmem0Mem#0:/oracle/app/oradata/stdby/srl02.log啟動redo應用SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;啟動實時應用SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEDISCONNECTFROMSESSION;提示:disconnectfromsession子句并非必須,該子句用于指定啟動完應用后自動退出到命令操作符前,如果不指定的話,當前session就會一直停留處理redo應用,如果想做其它操作,就只能新建一個連接。停止standby正常情況下,我們停止也應該是先停止redo應用,可以通過下列語句:SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASECALCEL;然后再停止standby數據庫SQL>SHUTDOWNIMMEDIATE;當然你非要直接shutdown也沒問題,dataguard本來就是用于容災的,別說你生停standby,就是直接拔電源也不怕。物理standby的Switchover注意操作步驟的先后,很關鍵。檢查是否支持switchover操作--primary數據庫操作登陸primary數據庫,查詢v$database視圖的switchover_status列。SQL>SelectLOG_MODE,CONTROLFILE_TYPE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUSfromv$database;LOG_MODECONTROLOPEN_MODEPROTECTION_MODEDATABASE_ROLESWITCHOVER_STATUSARCHIVELOGCURRENTREADWRITEMAXIMUMPROTECTIONPRIMARYTOSTANDBY如果該列值為"TOSTANDBY"則表示primary數據庫支持轉換為standby角色,否則的話你就需要重新檢查DataGuard配置,如查看LOG_ARCHIVE_DEST_n之類參數值是否正確有效等。啟動switchover--primary數據庫操作首先將primary轉換為standby的角色,通過下列語句:SQL>alterdatabasecommittoswitchovertophysicalstandby;數據庫已更改。語句執行完畢后,primary數據庫將會轉換為standby數據庫,并自動備份控制文件到trace。重啟動到mount--原primary數據庫操作SQL>alterdatabasecommittoswitchovertophysicalstandby;Databasealtered.SQL>shutdownimmediate;ORA-01507:databasenotmountedORACLEinstanceshutdown.檢查是否支持switchover操作--待轉換standby數據庫操作待原primary切換為standby角色之后,檢查待轉換的standby數據庫switchover_status列,看看是否支持角色轉換。SQL>selectLOG_MODE,CONTROLFILE_TYPE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUSfromv$database;LOG_MODECONTROLOPEN_MODEPROTECTION_MODEDATABASE_ROLESWITCHOVER_STATUSARCHIVELOGSTANDBYMOUNTEDMAXIMUMPROTECTIONPHYSICALSTANDBYTOPRIMARY此時待轉換standby數據庫switchover_status列值應該是"TO_PRIMARY",如否則檢查其初始化參數文件中的設置,可以參考原primary數據庫的初始化參數修改。轉換角色到primary--待轉換standby數據庫操作通過下列語句轉換standby到primary角色:注意:待轉換的物理standby不能處于openreadwrite模式。SQL>selectLOG_MODE,CONTROLFILE_TYPE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUSfromv$database;LOG_MODECONTROLOPEN_MODEPROTECTION_MODEDATABASE_ROLESWITCHOVER_STATUSARCHIVELOGSTANDBYMOUNTEDMAXIMUMPROTECTIONPHYSICALSTANDBYSWITCHOVERPENDINGSQL>alterdatabasecommittoswitchovertoprimary;alterdatabasecommittoswitchovertoprimary*ERRORatline1:ORA-16139:mediarecoveryrequiredSQL>![oracle@linux2~]$tail/oracle/oradata/standby/bdump/alert_stand.logEnd-Of-REDOarchivedlogfilehasnotbeenrecoveredArchivedlogfilesdetectedbeyondEnd-Of-REDOIncompleterecoverySCN:0:234931archiveSCN:0:265075DatabasenotavailableforswitchoverEnd-Of-REDOarchivedlogfilehasbeenreceivedEnd-Of-REDOarchivedlogfilehasnotbeenrecoveredArchivedlogfilesdetectedbeyondEnd-Of-REDOIncompleterecoverySCN:0:234931archiveSCN:0:265075Switchover:Mediarecoveryrequired-standbynotinlimboORA-16139signalledduring:alterdatabasecommittoswitchovertoprimary...啟動redo應用SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;Databasealtered.SQL>![oracle@linux2~]$tail/oracle/oradata/standby/bdump/alert_stand.logCompleted:alterdatabaserecovermanagedstandbydatabasedisconnectfromsessionTueApr1509:08:372008MediaRecoveryLog/oracle/oradata/standby/arch/1_29_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_30_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_31_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_32_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_33_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_34_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_35_651601678.arcMediaRecoveryLog/oracle/oradata/standby/arch/1_36_651601678.arcSQL>selectLOG_MODE,CONTROLFILE_TYPE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUSfromv$database;LOG_MODECONTROLOPEN_MODEPROTECTION_MODEDATABASE_ROLESWITCHOVER_STATUSARCHIVELOGSTANDBYMOUNTEDMAXIMUMPROTECTIONPHYSICALSTANDBYTOPRIMARYSQL>alterdatabasecommittoswitchovertoprimary;Databasealtered.完成轉換,打開新的primary數據庫SQL>alterdatabaseopen;Databasealtered.SQL>selectLOG_MODE,CONTROLFILE_TYPE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUSfromv$database;LOG_MODECONTROLOPEN_MODEPROTECTION_MODEDATABASE_ROLESWITCHOVER_STATUSARCHIVELOGCURRENTREADWRITEMAXIMUMPROTECTIONPRIMARYTOSTANDBY驗證新的primary數據庫SQL>showparameterdb_uniqueNAMETYPEVALUEdb_unique_namestringstdbySQL>selectmax(sequence#)fromv$archived_log;MAX(SEQUENCE#)67SQL>altersystemswitchlogfile;Databasealtered.SQL>selectmax(sequence#)fromv$archived_log;MAX(SEQUENCE#)68新的standby數據庫SQL>showparameterdb_uniqueNAMETYPEVALUEdb_unique_namestringprimarySQL>selectmax(sequence#)fromv$archived_log;MAX(SEQUENCE#)68轉換成功。物理standby的failover注意幾點:failover之后,原primary數據庫默認不再是dataguard配置的一部分。多數情況下,其它邏輯/物理standby數據庫不直接參與failover的過程,因此這些數據庫不需要做任何操作。某些情況下,新的primary數據庫配置之后,需要重新創建其它所有的standby數據庫。另外,如果待轉換角色的standby處于maximumprotection或maximumavailability模式的話,歸檔日志應該是連續存在的,這種情況下你可以直接從第3步執行,否則建議你按照操作步驟從第1步開始執行。一般情況下failover都是表示primary數據庫癱瘓,最起碼也是起不來了,因此這種類型的切換基本上不需要primary數據庫做什么操作。所以下列步驟中如果有提到primary和standby執行的,只是建議你如果primary還可以用,那就執行一下,即使它能用你卻不執行,也沒關系,不影響standby數據庫的切換:)檢查歸檔文件是否連續查詢待轉換standby數據庫的V$ARCHIVE_GAP視圖,確認歸檔文件是否連接:SQL>SELECTTHREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE#FROMV$ARCHIVE_GAP;norowsselectedSQL>如果返回的有記錄,按照列出的記錄號復制對應的歸檔文件到待轉換的standby服務器。這一步非常重要,必須確保所有已生成的歸檔文件均已存在于standby服務器,不然可能會數據不一致造成轉換時報錯。文件復制之后,通過下列命令將其加入數據字典:SQL>ALTERDATABASEREGISTERPHYSICALLOGFILE'filespec1';檢查歸檔文件是否完整分別在primary/standby執行下列語句:SQL>selectdistinctthread#,max(sequence#)over(partitionbythread#)afromv$archived_log;該語句取得當前數據庫各線程已歸檔文件最大序號,如果primary與standby最大序號不相同,必須將多出的序號對應的歸檔文件復制到待轉換的standby服務器。不過既然是failover,有可能primary數據庫此時已經無法打開,甚至無法訪問啟動failover執行下列語句:SQL>alterdatabaserecovermanagedstandbydatabasefinishforce;Databasealtered.FORCE關鍵字將會停止當前活動的RFS進程,以便立刻執行failover。剩下的步驟就與前面switchover很相似了切換物理standby角色為primarySQL>alterdatabasecommittoswitchovertoprimary;Databasealtered.啟動新的primary數據庫。如果當前數據庫已mount,直接open即可,如果處于read-only模式,需要首先shutdownimmediate,然后再直接startup。SQL>alterdatabaseopen;Databasealtered.角色轉換工作完成。剩下的是補救措施(針對原primary數據庫),由于此時primary數據庫已經不再是dataguard配置的一部分,我們需要做的就是嘗試看看能否恢復原primary數據庫,將其改造為新的standby服務器。具體操作方式可以分為二類:1.重建2.備份恢復。監控primary/standby數據庫dataguard監控配置的方式先給大家提供一個表格(描述不同事件的不同信息監控途徑):在oracle11g中alert的位置有所變化/oracle/app/diag/rdbms/dbname/sid/trace/alert_sid.logprimary數據庫事件primary監控途徑standby帶有enable|disablethread子句的alterdatabase命令Alert_primary.logV$thredAlert_stdby.log當前數據庫角色,保護模式,保護級別,switchover狀態,failover快速啟動信息等V$databaseV$database重建控制文件AlertlogAlertlog手工執行恢復AlertlogAlertlogRedo切換AlertlogV$logV$logfile的status列Alertlog表空間狀態修改(read-write/read-only,online/offline)Dba_tablespacesAlertlogV$recover_file創建刪除表空間或數據文件Dba_data_filesAlertlogV$datafileAlertlog表空間或數據文件offlineV$RECOVER_FILEAlertlogDBA_TABLESPACESV$RECOVER_FILEDBA_TABLESPACES重命名數據文件V$DATAFILEAlertlogV$DATAFILEAlertlog未被日志記錄或不可恢復的操作V$DATAFILEviewV$DATABASEviewAlertlog恢復的進程V$ARCHIVE_DEST_STATUSAlertlogV$ARCHIVED_LOGV$LOG_HISTORYV$MANAGED_STANDBYAlertlogRedo傳輸的狀態和進度V$ARCHIVE_DEST_STATUSV$ARCHIVED_LOGV$ARCHIVE_DESTAlertlogV$ARCHIVED_LOGAlertlog數據文件自動擴展AlertlogAlertlog執行OPENRESETLOGS或CLEARUNARCHIVEDLOGFILESAlertlogAlertlog修改初始化參數AlertlogAlertlog概括起來主要通過二個方面:1、AlertLog我們一定要養成定期不定期查看alert.log的好習慣,同時特別注意alert中的提示,通常不經意間會發現它的提示能夠讓你的思路豁然開朗。2、動態性能視圖做為oracle自己自覺主動維護的一批虛擬表它的作用非常明顯通過它可以及時獲得當前數據庫狀態及處理進度總之好處多多也需特別關注后面示例也會多處用首先介紹與恢復進度相關的v$視圖應用示例:(1)查看進程的活動狀況v$managed_s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子產品回收市場潛力及競爭格局分析報告
- 聚焦2025:在線教育平臺用戶體驗優化關鍵要素滿意度調研報告
- 2025年農業科技成果轉化與農業科技創新創業人才培養機制報告
- 擁抱科技-上市券商2025年一季報梳理分析
- 師德師風個人工作總結(3篇)
- 中國醫院住院部管理制度
- 南陽加油站油品管理制度
- 公司快遞費報銷管理制度
- 大健康公司財務管理制度
- 日間照料午餐管理制度
- 第18課 現代設計與現代媒體-高中美術魯美版美術鑒賞
- 國際商務畢業論文范文
- 勞動法課件(完整版)
- GB∕T 37456-2019 海洋平臺電驅動齒輪齒條升降裝置
- 營運車輛智能視頻監控系統管理制度范本及動態監控管理制度
- DB34∕T 3587-2020 城鎮排水管道檢測與修復技術規程
- (完整版)入河排污口設置論證基本要求
- 10kV架空線路施工方案
- 2022年人教版小學數學一年級下冊期中測試卷二(含答案)
- 機器學習簡介PPT通用課件
- 《鐵路建設項目施工圖審核管理辦法》2022年299號-最新
評論
0/150
提交評論