新聞中心
聯系我們
Contact us
Contact us
- 總部電話010-51727811
- 客服熱線400 779 6696
- 更多聯系信息
使用實施Oracle災難恢復技術
時間:2012-10-29 09:21 來源:飛客數據恢復 作者:飛客數據恢復工程師
做Recovery需要什么數據:
一、FULLCLOSED備份
shutdown數據庫(不要用shutdownabort強行關閉),實施一個文件級備份,備份全部的Oracle相關文件,包括Windows系統文件,系統狀態和Oracle程序文件和數據文件等內容。
這個冷備份對于快速恢復Oracle數據庫系統非常關鍵,如果沒有它,系統被破壞后只能重新安裝再恢復,這要比直接恢復冷備份慢得多,也更復雜。
每當數據庫或表單的物理結構或邏輯結構有變化時都應該重新創建這個冷備份。
二、FULLONLINE備份
這個備份要通過BackupExecAgentforOracleServer來完成,要備份全部表空間,歸檔日志和控制文件,通過這種方式備份,Oracle會將所有緩存內容寫入文件,將onlineredolog做歸檔,所以數據庫備份中包含的是備份時數據庫的即時點信息,完整而且有效。以后做恢復時,可以恢復到最后一次FULLONLINE備份的狀態。
恢復過程:
1.重新安裝Windows系統和RemoteAgentforWindowsServer,為恢復Oracle服務器準備環境。
2.恢復最后一次FULLCLOSED備份,重新啟動計算機。
此時Windows系統,Oracle數據庫系統都是完整的,只是Oracle數據庫中可能不是最新的數據。BackupExecAgentforOracleServer也不用重新安裝了。
3.用SQLPlus用SYS以sysdba身份連接到數據庫系統,關閉數據庫。
shutdownimmediate+<enter>
4.通過介質服務器恢復最新的FULLONLINE備份,恢復作業屬性的高級選項中,確保選中了“RestoreoverExistingfiles(覆蓋現存文件)”選項。
要想成功的恢復數據庫,在最后一次FULLCLOSED備份之后的所有redolog必須都已經成功歸檔并備份。少了哪一個,數據庫就無法恢復到最后的FULLONLINE備份時的狀態。
通過Oracle的alertlog可以看到數據庫的恢復需要哪些歸檔日志,以及你應該把它們恢復到什么位置。
5.恢復完成后,用SYS用戶以sysdba身份連接到數據庫,將數據庫加載到mount階段:
startupmount+<enter>
6.數據庫mount完成后,執行recover過程:
recoverdatabaseusingbackupcontrolfile+<enter>
數據庫會提示你需要哪些日志:
ORA-00279:Change36579generatedatneededforthread1
ORA-00289:Suggestion:\Oracle_Home\Oradata\\%SID%T00036579.ARC
ORA-00280:{=Suggested|filename|AUTO|FROMlogsource|CANCEL}
最簡單的方法是選自動恢復:
auto+<enter>
系統會在init.ora文件中定義的位置上查找所有必需的日志并依次應用它們,最后一個要應用的日志是onlineredolog,實際上它并不包括任何的transaction,只有一個SCN,可以略過,但是自動恢復過程會因為找不到相應的文件而報錯:
ORA-00308:cannotopenarchivedlog
'E:\ORACLE\ORADATA\KIMSTAD\ARCHIVE\KIMSTADT00036949.ARC'
ORA-27041:unabletoopenfile
OSD-04002:unabletoopenfile
O/S-Error:(OS2)Thesystemcannotfindthefilespecified.
為此輸入以下命令(untilcancel參數使我們可以在需要的時候中止恢復過程):
recoverdatabaseuntilcancelusingbackupcontrolfile+
這樣在數據庫恢復的最后階段再次提示前面的錯誤時,我們就可以中止恢復過程:
cancel+<enter>
這時除了最后一個onlineredolog以外,所有的committransaction都已經提交到數據庫之中了,完成后會顯示:
Mediarecoverycanceled
實際上恢復過程已經正常完成了。
最后是打開數據庫并同步日志序列號:
alterdatabaseopenresetlogs+<enter>
至此,Oracle數據庫被成功恢復到最后一次FullOnline備份。
說明:Oracle8i可以用internal賬號完成DBA操作。9i取消了internal賬號,SYS賬號代替它了。為了以DBA身份登錄,啟動SQLPlus時應該加nolog參數,進入之后再登錄,connectusername/passwordassysdba。