學(xué)習(xí)并測試了一下Oracle數(shù)據(jù)庫在開啟Archive Log模式下的恢復(fù).系統(tǒng)是Win2K Server+Oracle 8.1.7.參考了Chinaunix.net和ITPub.com網(wǎng)站相關(guān)資料.在此感謝給我的幫助. 注重,養(yǎng)成一個好的習(xí)慣非常重要.在開始恢復(fù)之前,以及恢復(fù)完成后,都要做一個系統(tǒng)全備份.首先,要開啟Archive Log歸檔日志模式1. 關(guān)閉數(shù)據(jù)庫2. 修改initSID.ora文件.這個文件通常在$ORACLE_HOME/admin/$ORACLE_SID目錄下或是在$ORACLE_HOME/database目錄下.log_archive_start = true
log_archive_dest_1 = "location=F:/oracle/archive"
log_archive_format = "ORA_%S.arc"注重通常Windows版和Unix/linux版的一些參數(shù)寫法有差異,請參照各自版本的技術(shù)文檔.3. 啟動數(shù)據(jù)庫到mount狀態(tài)startup mount這樣加載了數(shù)據(jù)庫文件,但是不打開數(shù)據(jù)庫.4. 檢查當(dāng)前的Archive Log歸檔日志模式archive log list顯示的信息是:Database log mode No Archive Mode
Automatic archival Disabled
這時用下面的命令開啟數(shù)據(jù)庫的Archive Log模式alter database archivelog再次用"archive log list"顯示信息,應(yīng)該是:Database log mode Archive Mode
Automatic archival Enabled再用命令alter database open來打開數(shù)據(jù)庫.上面的工作完了以后,然后,我們可以來進行測試了. 在測試之前,我們來熟悉一下這個歸檔日志Archive Log是什么樣的.通過Sqlplus或Svrmgrl以sysdba身份連接到數(shù)據(jù)庫,執(zhí)行"alter system switch logfile;"在我們指定的F:/oracle/archive目錄下就可以看到歸檔日志了.文件名是我們指定的形同"ORA_0379.arc",其中0379是Oracle自動取的序號.在我們做 最后,我們要來測試歸檔模式下的備份恢復(fù)有什么不一樣.在非歸檔模式下,我們一般天天做一次數(shù)據(jù)庫備份(冷備份和熱備份的差別僅在于備份時數(shù)據(jù)庫是關(guān)閉的還是開啟的).這樣,我們就擁有了天天一個的備份點,換句話說,我們可以在數(shù)據(jù)庫崩潰的情況下,通過備份介質(zhì),將數(shù)據(jù)庫恢復(fù)到某一個備份點上.但是顯而易見,這樣的備份和恢復(fù)是不完全的,我們對于兩個備份點之間的數(shù)據(jù)是無法恢復(fù)的.而在開啟了歸檔模式的情況下,情況不一樣了.所有系統(tǒng)的REDO_log重做日志中提交的操作,均會在重做日志重復(fù)利用前被保存為歸檔日志保存下來,也就是說,所有用戶對于數(shù)據(jù)庫的每一個操作都被記錄在案.這樣.在維持我們原先的數(shù)據(jù)庫備份計劃的情況下,除了天天一個備份點之外,我們還擁有了沒兩個備份點之間的所有歷史操作記錄.這樣,結(jié)合天天的數(shù)據(jù)庫備份和歸檔日志以及在線重做日志,我們可以將數(shù)據(jù)庫精確恢復(fù)到數(shù)據(jù)庫崩潰前的那一時刻, 不會有數(shù)據(jù)丟失的情況發(fā)生.當(dāng)然,這樣的前提是,數(shù)據(jù)庫備份和歸檔日志不能同時損壞或丟失.我們假設(shè)的環(huán)境是 >> 假設(shè)有3個硬盤, C, D, E,系統(tǒng)在C盤, 數(shù)據(jù)文件在D盤,歸檔日志在E盤.控制文件,在線重做日志都有3組并復(fù)用,放在C盤,D盤和E盤. >> 現(xiàn)在的情況是我們保留有所有的歸檔日志,保留有5天前的備份磁帶(很不巧,由于種種原因,近5天的備份都沒有成功,不過幸運的是,在此期間系統(tǒng)及軟件配置都沒有更改). >> 硬盤D忽然損壞了,數(shù)據(jù)庫崩潰了,所有人都無法連接到數(shù)據(jù)庫.
>> 在本例中,我們只考慮了數(shù)據(jù)文件損壞, 假設(shè)所有的控制文件,重做日志都正常.我們現(xiàn)在要開始恢復(fù)工作了. >> 在聯(lián)系了硬件供給商后,我們的新硬盤到了,安裝上后,通過5天前的備份磁帶,恢復(fù)D盤上所有的文件. >> 通過Svrmgrl或Sqlplus以system用戶登錄到Oracle, >> 打開數(shù)據(jù)庫到mount狀態(tài),"startup mount",這時,Oracle會提示數(shù)據(jù)庫文件損壞,需要修復(fù) >> 根據(jù)提示的文件,輸入命令"recover datafile 'D:/Oracle/Data01.dbf'; >> Oracle將自動尋找所需要的歸檔日志和當(dāng)前的Redo_log來恢復(fù)數(shù)據(jù)文件,我們只需要在每一個提示信息后按回車鍵確定應(yīng)用所顯示的歸檔日志文件.恢復(fù)完成后,Oracle將有提示信息. >> 恢復(fù)完成后,可以嘗試用命令"alter database open"來打開數(shù)據(jù)庫,假如還是有數(shù)據(jù)文件損壞,Oracle將再次提示需要修復(fù).只需要重復(fù)上面兩步操作. >> 重復(fù)操作,直至所有的數(shù)據(jù)文件都恢復(fù).用命令"alter database open"來打開數(shù)據(jù)庫.這樣,我們就基本完成了歸檔模式開啟的情況下的數(shù)據(jù)庫恢復(fù)工作,在這種模式下,數(shù)據(jù)庫可以恢復(fù)到任一時刻(可以在應(yīng)用歸檔日志文件恢復(fù)時取消以中斷恢復(fù)過程).而且,即便因意外而導(dǎo)致我們的每日數(shù)據(jù)庫備份沒有成功執(zhí)行時,仍然可以通過幾天前的冷/熱備份+連續(xù)的歸檔日志文件來完成我們的數(shù)據(jù)庫恢復(fù)工作.另注, 可以直接通過命令"recover database" 來完成整個恢復(fù)過程,不過這樣感覺缺乏成就感.除非對備份或是自己的水平很有信心,否則不建議使用.以上測試通過.