Oracle的Archive Log模式下的恢複工作

來源:互聯網
上載者:User

學習並測試了一下Oracle資料庫在開啟Archive Log模式下的恢複。

系統是Win2K Server+Oracle 8.1.7。參考了Chinaunix.net和ITPub.com網站相關資料.在此感謝給我的協助。注意,養成一個好的習慣非常重要.在開始恢複之前,以及恢複完成後,都要做一個系統全備份。

首先,要開啟Archive Log歸檔記錄模式。

1. 關閉資料庫

2. 修改initSID.ora檔案.這個檔案通常在$ORACLE_HOME/admin/$ORACLE_SID目錄下或是在$ORACLE_HOME/database目錄下。

 


               log_archive_start = true              log_archive_dest_1 = "location=F:oraclearchive"              log_archive_format = "ORA_%S.arc"

  

注意通常Windows版和Unix/Linux版的一些參數寫法有差異,請參照各自版本的技術文檔。

3. 啟動資料庫到mount狀態

startup mount

這樣載入了資料庫檔案,但是不開啟資料庫。

4. 檢查當前的Archive Log歸檔記錄模式

archive log list

顯示的資訊是:

 


               Database log mode       No Archive Mode              Automatic archival       Disabled

  

這時用下面的命令開啟資料庫的Archive Log模式

 


               alter database archivelog

  

再次用"archive log list"顯示資訊,應該是:

 


               Database log mode       Archive Mode              Automatic archival       Enabled

  

再用命令alter database open來開啟資料庫。上面的工作完了以後,然後,我們可以來進行測試了。在測試之前,我們來熟悉一下這個歸檔日誌Archive Log是什麼樣的。通過Sqlplus或Svrmgrl以sysdba身份串連到資料庫,執行"alter system switch logfile;"在我們指定的F:oraclearchive目錄下就可以看到歸檔日誌了。檔案名稱是我們指定的形同"ORA_0379.arc",其中0379是Oracle自動取的序號.在我們做。最後,我們要來測試歸檔模式下的備份恢複有什麼不一樣。

在非歸檔模式下,我們一般每天做一次Database Backup(冷備份和熱備份的差別僅在於備份時資料庫是關閉的還是開啟的).這樣,我們就擁有了每天一個的備份點,換句話說,我們可以在資料庫崩潰的情況下,通過備份介質,將資料庫恢複到某一個備份點上。但是顯而易見,這樣的備份和恢複是不完全的,我們對於兩個備份點之間的資料是無法恢複的。

而在開啟了歸檔模式的情況下,情況不一樣了.所有系統的REDO_log重做日誌中提交的操作,均會在重做日誌重複利用前被儲存為歸檔日誌儲存下來,也就是說,所有使用者對於資料庫的每一個操作都被記錄在案.這樣.在維持我們原先的Database Backup計劃的情況下,除了每天一個備份點之外,我們還擁有了沒兩個備份點之間的所有曆史操作記錄。

這樣,結合每天的Database Backup和歸檔日誌以及線上重做日誌,我們可以將資料庫精確恢複到資料庫崩潰前的那一時刻, 不會有資料丟失的情況發生。當然,這樣的前提是,Database Backup和歸檔日誌不能同時損壞或丟失。

我們假設的環境是:

假設有3個硬碟, C, D, E,系統在C盤, 資料檔案在D盤,歸檔日誌在E盤.控制檔案,線上重做日誌都有3組並複用,放在C盤,D盤和E盤.

現在的情況是我們保留有所有的歸檔日誌,保留有5天前的備份磁帶(很不巧,由於種種原因,近5天的備份都沒有成功,不過幸運的是,在此期間系統及軟體配置都沒有更改).

硬碟D突然損壞了,資料庫崩潰了,所有人都無法串連到資料庫.

在本例中,我們只考慮了資料檔案損壞, 假設所有的控制檔案,重做日誌都正常。我們現在要開始恢複工作了。在聯絡了硬體供應商後,我們的新硬碟到了,安裝上後,通過5天前的備份磁帶,恢複D盤上所有的檔案。通過Svrmgrl或Sqlplus以system使用者登入到Oracle。開啟資料庫到mount狀態,"startup mount",這時,Oracle會提示資料庫檔案損壞,需要修複。根據提示的檔案,輸入命令"recover datafile 'D:OracleData01.dbf';Oracle將自動尋找所需要的歸檔日誌和當前的Redo_log來恢複資料檔案,我們只需要在每一個提示資訊後按斷行符號鍵確定應用所顯示的歸檔記錄檔.恢複完成後,Oracle將有提示資訊。恢複完成後,可以嘗試用命令"alter database open"來開啟資料庫,如果還是有資料檔案損壞,Oracle將再次提示需要修複.只需要重複上面兩步操作.

重複操作,直至所有的資料檔案都恢複.用命令"alter database open"來開啟資料庫。這樣,我們就基本完成了歸檔模式開啟的情況下的資料庫恢複工作,在這種模式下,資料庫可以恢複到任一時刻(可以在應用歸檔記錄檔恢複時取消以中斷恢複過程).而且,即便因意外而導致我們的每日Database Backup沒有成功執行時,仍然可以通過幾天前的冷/熱備份+連續的歸檔記錄檔來完成我們的資料庫恢複工作。另注, 可以直接通過命令"recover database" 來完成整個恢複過程,不過這樣感覺缺乏成就感.除非對備份或是自己的水平很有信心,否則不建議使用。以上測試通過。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.