上一個主題: 還原表格區下一個主題: 疑難排解


還原控制檔

如果資料庫控制檔遺失或損毀,您可以執行檔案層級復原加以還原。 檔案層級成功復原後,您必須手動復原控制檔。

請依循下列步驟:

  1. 以根使用者身分登入目標機器。
  2. 關閉 Oracle 執行個體。
    SQL>shutdown abort
    
  3. 以 nomount 狀態啟動資料庫。
    SQL>startup nomount
    
  4. 列出所有控制檔的路徑。
    SQL> show parameter control_files;
    名稱                                 類型        值
    ------------------------------------ ----------- ------------------------------
    control_files                        字串      /opt/oracle/oradata/lynx/control01.ctl, /opt/oracle/flash_recovery_area/lynx/control02.ctl
    
  5. 使用還原精靈還原控制檔。 如需還原程序的詳細資訊,請參閱〈如何在 Linux 節點上執行檔案層級復原〉。
  6. 指定還原精靈的下列資訊,並提交工作:
    1. 您選取檔案和資料夾時,輸入控制檔和搜尋的所需名稱。 重複此步驟,直到選取所有的控制檔為止。

      範例:輸入 "control01.ctl " 並搜尋。

    2. 在 [目標機器] 頁面上,提供下列資訊:
      • 選取 [還原至原始位置]。
      • 輸入目標 Oracle 伺服器的主機名稱或 IP 位址。
      • 輸入目標 Oracle Server 的根使用者名稱及密碼。
      • 選取 [覆寫現有檔案解決衝突] 選項。
  7. 還原所有控制檔後,裝載並開啟資料庫。
    $sqlplus / as sysdba
    SQL>alter database mount;
    
  8. 使用 RECOVER 命令復原資料庫,並新增 USING BACKUP CONTROLFILE 子句。
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
    
  9. 套用提示的封存日誌。

    附註:如果所需的封存日誌遺失,表示必要的重做記錄位在線上重做日誌中。 因為執行個體失敗時,未封存的變更會位於線上日誌中,此狀況便會發生。 您可以指定線上重做日誌檔的完整路徑,然後按下 Enter (您可能必須嘗試幾次,直到找到正確日誌為止)。

    範例:

    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE 
    ORA-00279: change 1035184 generated at 2014/5/27 18:12:49 needed for thread 1
    ORA-00289: suggestion :
    /opt/oracle/flash_recovery_area/LYNX/archivelog/2014_05_27/o1_mf_1_6_%u_.arc
    ORA-00280: change 1035184 for thread 1 is in sequence #6
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    /opt/oracle/oradata/lynx/redo03.log
    Log applied.
    媒體復原完成。
    
  10. 在完成復原程序後,使用 RESETLOGS 子句開啟資料庫。
    SQL>alter database open resetlogs;
    

控制檔成功復原。