Oracle

在沒有可用備份的情況下恢復失去的數據文件

  • December 26, 2016

在以下情況下如何恢復失去的數據文件:

  • 數據庫正在歸檔日誌模式下執行
  • 沒有可用的備份

如果您將數據庫切換到ARCHIVELOG模式,所有以前的備份都將失效,因此無法用於恢復;因此,您必須在將數據庫切換到該ARCHIVELOG模式後立即對其進行完整備份,以使歸檔重做日誌有用。

如果您在故障前對數據庫和所有存檔日誌進行了完整備份,則可以輕鬆地從備份中恢復數據文件和存檔日誌,並將數據庫或數據文件恢復到將恢復的存檔日誌應用到恢復的數據文件的故障點。

但是,如果您在切換後沒有備份數據庫和存檔日誌,那麼通常情況下,您就不走運了。儘管正如@Mat 指出的那樣,有時您可以嘗試使用倖存的數據位(存檔日誌和控製文件)來恢復失去的數據文件。

對您有用的是數據恢復顧問(DRA,請閱讀數據庫概念中的“數據恢復顧問”部分了解更多資訊)。它可以幫助您恢復數據庫,並且專為您不確定如何恢復數據庫或對系統停機時間有時間限制的情況而設計。它可以很好地在恢復過程中為您節省大量時間,減少因故障導致的停機時間。

要確定您是否可以對失去的數據文件執行某些操作,請啟動 RMAN:

$ rman target=/

列出 Oracle 擷取的故障:

RMAN> list failure;

(有關所列故障的資訊被收集並儲存在自動診斷儲存庫 (ADR) 中,即使在數據庫關閉時也可用。有關更多資訊,請閱讀數據庫管理員指南中的“故障診斷基礎架構概述”部分。)

如果返回了一些未解決的故障(由於您失去了一個數據文件,它們實際上會在您的情況下返回),請向 DRA 諮詢建議:

RMAN> advise failure;

徹底閱讀最後一條命令的輸出並實施推薦或要求的手動操作(如果有)。如果沒有列出手動操作,並且 DRA 準備了修復腳本,請讓 DRA 修復故障:

RMAN> repair failure;

DRA 也可從 EM Database Control 的軟體和支持選項卡中獲得。

當您的數據庫處於模式時,可以恢復失去或損壞的數據文件,在“備份不可用時重新創建數據文件”archivelog文件中列出了兩個限制:

  • 創建原始數據文件後寫入的所有歸檔日誌文件均可用
  • 控製文件包含損壞文件的名稱(即控製文件是目前的,或者是損壞的數據文件添加到數據庫後的備份)

請注意,您無法通過SYSTEM這種方式恢復失去或損壞的數據文件。

連結的文件說明瞭如果您滿足這些條件,如何恢復。本質上:

  1. 您重新創建一個數據文件來替換失去的數據文件 - 這需要來自控製文件的資訊,這是上述第二點的原因。
  2. 您從歸檔重做日誌中恢復數據文件。這需要自創建數據文件以來的所有重做日誌,這是第一點的原因(並且非常合乎邏輯:如果您沒有備份,則無法從其他地方恢復數據)。

引用自:https://dba.stackexchange.com/questions/44165