一、CREATE CONTROLFILE錯誤
?
??? 1、檢查文件差異
?
??? 創(chuàng)建新的控制文件之后會檢查數(shù)據(jù)字典和控制文件之間的矛盾,以檢查丟失或多余的文件。
?
??? 丟失:
? ????? 若數(shù)據(jù)字典中存在某數(shù)據(jù)文件,而控制文件中沒有,則Oracle在控制文件中創(chuàng)建一個名為MISSINGnnn的占位符入口,表示作為脫機并需要介質(zhì)恢復(fù)的標(biāo)志。可以通過重命名MISSINGnnn來訪問MISSINGnnn對應(yīng)的真正數(shù)據(jù)文件,但該文件必須是只讀或正常脫機的。
??????? 又因為數(shù)據(jù)文件需要介質(zhì)恢復(fù),而RESETLOGS的結(jié)果排除了介質(zhì)恢復(fù)的可能,所以當(dāng)使用了RESETLOGS子句時,必須撤銷包含數(shù)據(jù)文件的表空間。
?
??? 多余:
??????? 當(dāng)控制文件記錄的數(shù)據(jù)文件不在數(shù)據(jù)字典中時,Oracle會從新的控制文件中刪除對數(shù)據(jù)文件的引用。
?
??? 注:無論是丟失還是多余,都會在相應(yīng)實例的alert.log文件中包含一條解釋性消息。
?
??? 2、創(chuàng)建過程中的錯誤
?
??? 一般在創(chuàng)建新的控制文件后打開數(shù)據(jù)庫,可能會返回一下錯誤類型:
??? ORA-01173、ORA-01176、ORA-01177、ORA-01215、ORA-01216
?
??? 最大的可能是在在創(chuàng)建時有文件丟失或多余文件。
??? 此時應(yīng)該找到備份的數(shù)據(jù)文件和聯(lián)機重做日志文件,覆蓋當(dāng)前文件,并使用正確的CREATE CONTROLFILE語句重新創(chuàng)建。
?
?
二、備份控制文件
?
??? 1、備份控制文件為二進制文件
?
??? ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/control.bkp';
?
??? 2、制作以后可以重新創(chuàng)建控制文件的SQL
?
??? ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
?
??? 3、可以使用RMAN對控制文件進行備份
?
?
三、恢復(fù)控制文件
?
??? 1、控制文件損壞
?
??? ①關(guān)閉實例 ②將未損壞的控制文件副本覆蓋已損壞文件 ③打開數(shù)據(jù)庫
?
??? 2、磁盤損壞
?
??? ①關(guān)閉實例 ②經(jīng)未損壞控制文件副本復(fù)制到新磁盤空間 ③修改CONTROL_FILES參數(shù) ④打開數(shù)據(jù)庫
?
??? 也可以先修改CONTROL_FILES參數(shù),然后恢復(fù)控制文件,再把
?
?
四、刪除控制文件
?
??? ① 關(guān)閉數(shù)據(jù)庫
??? ② 修改CONTROL_FILES參數(shù)
??? ③啟動數(shù)據(jù)庫
??? ④ 在磁盤上刪除相應(yīng)CONTROLFILE文件
?
?
五、控制文件信息
?
??? 通過一下視圖來查看控制文件信息:
?
??? V$CONTROLFILE:控制文件名稱
??? V$CONTROLFILE_RECORD_SECTION:控制文件記錄段信息
??? V$PARAMETER:初始化參數(shù)CONTROL_FILES的值
?
?
?
-The End-