星期二, 4月 10, 2007

[oracle]通過Backup Exec實施Oracle災難恢復

原文出處::http://storage.it168.com/g/2006-11-30/200611301754496.shtml



做Recovery需要什麼數據:

1、FULL CLOSED備份



shutdown數據庫(不要用shutdown abort強行關閉),實施一個文件級備份,備份全部的Oracle相關文件,包括Windows系統文件,系統狀態和Oracle程序文件和數據文件等內容。



這個冷備份對於快速恢復Oracle數據庫系統非常關鍵,如果沒有它,系統被破壞後只能重新安裝再恢復,這要比直接恢復冷備份慢得多,也更複雜。



每當數據庫或表單的物理結構或邏輯結構有變化時都應該重新創建這個冷備份。



2. FULL ONLINE備份



這個備份要通過Backup Exec Agent for Oracle Server來完成,要備份全部表空間,歸檔日誌和控制文件,通過這種方式備份,Oracle會將所有緩存內容寫入文件,將online redo log做歸檔,所以數據庫備份中包含的是備份時數據庫的即時點信息,完整而且有效。以後做恢復時,可以恢復到最後一次FULL ONLINE備份的狀態。



恢復過程:



1. 重新安裝Windows系統和Remote Agent for Windows Server,為恢復Oracle服務器準備環境。



2. 恢復最後一次FULL CLOSED備份,重新啟動計算機。



此時Windows系統,Oracle數據庫系統都是完整的,只是Oracle數據庫中可能不是最新的數據。Backup Exec Agent for Oracle Server也不用重新安裝了。



3. 用SQLPlus用SYS以sysdba身份連接到數據庫系統,關閉數據庫。

shutdown immediate +



4. 通過介質服務器恢復最新的FULL ONLINE備份,恢復作業屬性的高級選項中,確保選中了「Restore over Existing files(覆蓋現存文件)」 選項。



要想成功的恢復數據庫,在最後一次FULL CLOSED備份之後的所有redo log必須都已經成功歸檔並備份。少了哪一個,數據庫就無法恢復到最後的FULL ONLI NE備份時的狀態。



通過Oracle的alert log可以看到數據庫的恢復需要哪些歸檔日誌,以及你應該把它們恢復到什麼位置。



5. 恢復完成後,用SYS用戶以sysdba身份連接到數據庫,將數據庫加載到mount階段:

startup mount +



6. 數據庫mount完成後,執行recover過程:

recover database using backup controlfile +



數據庫會提示你需要哪些日誌:



ORA-00279: Change 36579 generated at needed for thread 1

ORA-00289: Suggestion : \Oracle_Home\Oradata\\%SID%T00036579.ARC

ORA-00280: {=Suggested | filename | AUTO | FROM logsource | CANCEL}



最簡單的方法是選自動恢復:

auto +



系統會在init.ora文件中定義的位置上查找所有必需的日誌並依次應用它們,最後一個要應用的日誌是online redo log,實際上它並不包括任何的transaction,只有一個SCN,可以略過,但是自動恢復過程會因為找不到相應的文件而報錯:



ORA-00308: cannot open archived log

'E:\ORACLE\ORADATA\KIMSTAD\ARCHIVE\KIMSTADT00036949.ARC'

ORA-27041: unable to open file

OSD-04002: unable to open file

O/S-Error: (OS 2) The system cannot find the file specified.



為此輸入以下命令(until cancel參數使我們可以在需要的時候中止恢復過程):

recover database until cancel using backup controlfile +



這樣在數據庫恢復的最後階段再次提示前面的錯誤時,我們就可以中止恢復過程:

cancel +



這時除了最後一個online redo log以外,所有的commit transaction都已經提交到數據庫之中了,完成後會顯示:

Media recovery canceled



實際上恢復過程已經正常完成了。



最後是打開數據庫並同步日誌序列號:

alter database open resetlogs +



至此,Oracle數據庫被成功恢復到最後一次Full Online備份。



說明:Oracle 8i可以用internal賬號完成DBA操作。9i取消了internal賬號,SYS賬號代替它了。為了以DBA身份登錄,啟動SQL Plus時應該加nolog參數,進入之後再登錄,connect username/password as sysdba。

沒有留言: