【備份與恢復】控制檔案的恢復(不完全恢復)

ljm0211發表於2012-06-25
出現情況:
       控制檔案受損,例項會立即終止。嘗試啟動,只能啟動到nomount模式中。
解決方法:
建立新的控制檔案:

       日常維護中,只要修改了資料庫的物理結構,那麼就使用如下命令生成一個CREATE CONTROLFILE跟蹤,同時將跟蹤檔案放在安全的位置。隨後,我們可以建立一個能夠與任何還原版本的資料庫一起使用的控制檔案。
SQL> alter database backup controlfile to trace;

使用使用者託管的備份還原控制檔案:
       使用使用者託管的備份來備份控制檔案時,要麼必須關閉資料庫,要麼必須使用如下所示的命令:
SQL> alter database backup controlfile to '';
       為了還原控制檔案的一個備份,就需要將這個備份複製至例項引數CONTROL_FILES所指定的位置,並且使用STARTUP MOUNT命令在載入模式中啟動資料庫,隨後還需要執行下面的命令:
SQL> recover database until cancel using backup controlfile;
       此時會提示輸入某些歸檔日誌,並且在恢復失敗之前會應用這些歸檔日誌。恢復失敗的原因是由於被提示輸入一個並不存在的歸檔日誌:這是當前聯機日誌的序列號,並且尚未被歸檔。此時,我們必須輸入當前聯機日誌組某個成員的名稱。如果不知道當前的聯機日誌組,那麼可以依次嘗試每個組的成員,最終就可以得到一個正確的名稱,同時恢復也將完成。隨後,我們能夠在不丟失任何資料的情況下使用RESETLOGS命令開啟資料庫。雖然仍就必須建立一個新的資料庫場景,但是丟失控制檔案的不完全恢復語法實際上會導致一個完全恢復。
       如果被還原的資料庫的結構與當前結構不同,那麼進行不完全恢復時也可以使用RECOVER DATABASE UNTIL …… BACKUP CONTROLFILE語法。此時,我們必須還原控制檔案以及所有資料檔案。應用重做直至指定的時間點,隨後可以繼續正常地進行各種操作。

使用RMAN還原控制檔案:
RMAN可以透過以下幾種方式備份控制檔案:
RMAN> backup as copy current controlfile;
RMAN> backup as backupset current controlfile;
RMAN> backup tablespace system include current controlfile;
RMAN> configure controlfile autobackup on;

       控制檔案的還原問題是一個遞迴的問題。解決這個問題的2中方法是:首先,如果使用一個獨立的恢復目錄資料庫,那麼這個資料庫具有儲存倉庫的一個副本。此時,RMAN能夠輕易地定位控制檔案備份並進行還原與備份。其次,如果沒有使用回覆目錄資料庫,那麼配置的控制檔案的自動備份功能就至關重要。
       即使在nomount模式中,也可以使用如下命令從控制檔案自動備份中還原控制檔案:
RMAN> resotre controlfile from autobackup;
       如果多個資料庫共享同一個自動備份目的地(類似於多個資料庫具有一個公共的閃回恢復區的情況),那麼就必須提供DBID,從而使RMAN能夠還原正確的控制檔案。
       使用下面的命令能夠找出DBID:
SQL> select dbid from v$database;
            DBID
----------------
3385973595
       隨後,使用如下所示的程式碼塊還原與恢復控制檔案:
RMAN> run {
startup nomount;
set dbid 3385973595;
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733743/,如需轉載,請註明出處,否則將追究法律責任。

相關文章