控制文件相關操作
?
??? 接著來介紹一下關于Controlfile的操作問題,這部分內容需要好好記住,因為控制文件損壞之后的影響是比較嚴重的,如果沒有備份,最后只能手動修復,這樣出錯的可能性就會大大增加。好了,看一下相關操作。
?
?
一、CREATE CONTROLFILE錯誤
?
??? 1、檢查文件差異
?
??? 創(chuàng)建新的控制文件之后會檢查數據字典和控制文件之間的矛盾,以檢查丟失或多余的文件。
?
??? 丟失:
??????? 若數據字典中存在某數據文件,而控制文件中沒有,則Oracle在控制文件中創(chuàng)建一個名為MISSINGnnn的占位符入口,表示作為脫機并需要介質恢復的標志??梢酝ㄟ^重命名MISSINGnnn來訪問MISSINGnnn對應的真正數據文件,但該文件必須是只讀或正常脫機的。
??????? 又因為數據文件需要介質恢復,而RESETLOGS的結果排除了介質恢復的可能,所以當使用了RESETLOGS子句時,必須撤銷包含數據文件的表空間。
?
??? 多余:
??????? 當控制文件記錄的數據文件不在數據字典中時,Oracle會從新的控制文件中刪除對數據文件的引用。
?
??? 注:無論是丟失還是多余,都會在相應實例的alert.log文件中包含一條解釋性消息。
?
??? 2、創(chuàng)建過程中的錯誤
?
??? 一般在創(chuàng)建新的控制文件后打開數據庫,可能會返回一下錯誤類型:
??? ORA-01173、ORA-01176、ORA-01177、ORA-01215、ORA-01216
?
??? 最大的可能是在在創(chuàng)建時有文件丟失或多余文件。
??? 此時應該找到備份的數據文件和聯(lián)機重做日志文件,覆蓋當前文件,并使用正確的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對控制文件進行備份
?
?
三、恢復控制文件
?
??? 1、控制文件損壞
?
??? ①關閉實例 ②將未損壞的控制文件副本覆蓋已損壞文件 ③打開數據庫
?
??? 2、磁盤損壞
?
??? ①關閉實例 ②經未損壞控制文件副本復制到新磁盤空間 ③修改CONTROL_FILES參數 ④打開數據庫
?
??? 也可以先修改CONTROL_FILES參數,然后恢復控制文件,再把
?
?
四、刪除控制文件
?
??? ① 關閉數據庫
??? ② 修改CONTROL_FILES參數
??? ③啟動數據庫
??? ④ 在磁盤上刪除相應CONTROLFILE文件
?
?
五、控制文件信息
?
??? 通過一下視圖來查看控制文件信息:
?
??? V$CONTROLFILE:控制文件名稱
??? V$CONTROLFILE_RECORD_SECTION:控制文件記錄段信息
??? V$PARAMETER:初始化參數CONTROL_FILES的值
?
?
?