天天看點

Oracle控制檔案的移動、添加、損壞故障模拟修複

oracle資料庫中的控制檔案是二進制檔案,其記錄了資料庫名、資料庫辨別符、資料庫建立時間、表空間資訊、重做日志檔案曆史、歸檔日志檔案位置和狀态資訊、日志序列号、檢查點、備份狀态資訊和位置。

oracle初始安裝預設會生成3個控制檔案(windows下oracle會生成3個,linux下好像是1個);

查找控制檔案實體位置

show parameter control_files

Oracle控制檔案的移動、添加、損壞故障模拟修複

sql語句:

select from v$parameter where name='control_files';

那麼控制檔案是什麼時候開始加載呢?

Oracle控制檔案的移動、添加、損壞故障模拟修複

控制檔案比較重要,建議将控制檔案存放在不同的分區,并建立3個以上的控制檔案;接下來示範移動控制檔案到不同的分區。

oracle 11g預設使用spfile啟動資料庫,oracle 9i以前都是用pfile啟動資料庫;這裡所說的pfile和spfile就是指參數檔案。

查詢目前庫使用的參數檔案啟動的資料庫

select decode(count(),1,'spfile','pfile') from v$spparameter where rownum=1 and isspecified = 'TRUE';

移動控制檔案之前,先查找目前庫的控制檔案所在的位置

Oracle控制檔案的移動、添加、損壞故障模拟修複

使用以下指令修改spfile檔案資訊,因為spfile檔案無法直接通過作業系統指令修改,但是pfile可以直接修改。

alter system set control_files='/u01/app/oracle/oradata/control01.ctl' scope=spfile;

Oracle控制檔案的移動、添加、損壞故障模拟修複

執行完畢後關閉資料庫

shutdown immediate;——此步驟很重要,一定要停庫再拷貝控制檔案

将控制檔案通過作業系統指令移動到要修改的目錄下,

Oracle控制檔案的移動、添加、損壞故障模拟修複

再啟動資料庫sqlplus / as sysdba

startup

控制檔案移動成功

Oracle控制檔案的移動、添加、損壞故障模拟修複

接下來示範下如何添加控制檔案

alter system set control_files='/u01/app/oracle/oradata/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl' scope=spfile;

Oracle控制檔案的移動、添加、損壞故障模拟修複

關閉資料庫——此步驟很重要,一定要停庫再拷貝控制檔案

複制原有的一個控制檔案到制定的目錄

Oracle控制檔案的移動、添加、損壞故障模拟修複

startup 啟動資料庫

Oracle控制檔案的移動、添加、損壞故障模拟修複

檢視資料庫是否正常

Oracle控制檔案的移動、添加、損壞故障模拟修複

接下來模拟一個控制檔案損壞如何修複;

删除一個控制檔案

Oracle控制檔案的移動、添加、損壞故障模拟修複

删除控制檔案後,無法shutdown了

Oracle控制檔案的移動、添加、損壞故障模拟修複

強制關閉資料庫

shutdown abort

複制一個可以使用的控制檔案到損壞的控制檔案目錄

Oracle控制檔案的移動、添加、損壞故障模拟修複

啟動資料庫

Oracle控制檔案的移動、添加、損壞故障模拟修複

如果控制檔案全部都損壞了。需要進行控制檔案備份,但是控制檔案會時刻發生變化。後期菜雞哥哥再持續研究如何持續保證控制檔案的完整性,當然如果你的控制檔案分别放在不同的分區,也全部挂掉,那麼你可以去買彩票了!!!

本文轉自 rm_rf_d 51CTO部落格,原文連結:http://blog.51cto.com/12185273/2054123,如需轉載請自行聯系原作者