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