控制檔案維護(四)

pingley發表於2012-03-04
控制檔案維護(四)
恢復控制檔案:
當你發現其中一個控制檔案已經損壞的時候。可以使用備份的或者其他副本控制檔案來恢復那個損壞的控制檔案。
1、先關閉資料庫。
2、從備份的或者其他控制檔案副本恢復損壞的控制檔案。
3、重啟資料庫。
SQL> select name from V$controlfile;
NAME
--------------------
/opt/oracle11g/orada
ta/oracl/control.ctl
/opt/oracle11g/orada
ta/oracl/control02.c
tl
/home/oracle/backup/
control03.ctl
假如控制檔案/opt/oracle11g/oradata/oracl/control02.ctl已經損壞了。
先關閉資料庫。
SQL> shutdown abort
在作業系統上進行下面的操作:
先找到備份的控制檔案。
[oracle@zeng backup]$ ll control.bk
-rw-r-----. 1 oracle oinstall 9748480 Mar  3 22:36 control.bk
使用備份的控制檔案覆蓋損壞的控制檔案,並確定新的控制檔案的狀態。
[oracle@zeng backup]$ cp control.bk /opt/oracle11g/oradata/oracl/control02.ctl
[oracle@zeng backup]$ ll /opt/oracle11g/oradata/oracl/control02.ctl 
-rw-r-----. 1 oracle oinstall 9748480 Mar  4 15:17 /opt/oracle11g/oradata/oracl/control02.ctl
現在可以重啟資料庫了。
SQL> startup
ORACLE instance started.
Total System Global Area  418484224 bytes
Fixed Size                  1336932 bytes
Variable Size             222300572 bytes
Database Buffers          188743680 bytes
Redo Buffers                6103040 bytes
ORA-00214: control file '/opt/oracle11g/oradata/oracl/control.ctl' version 2370
inconsistent with file '/opt/oracle11g/oradata/oracl/control02.ctl' version
2298
哎,原來我備份的控制檔案沒有與時俱進,裡面的內容舊了。那我們就用其他沒有損壞的控制檔案副本來恢復吧。先關閉例項。
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
用其他控制檔案副本來恢復損壞的控制檔案。
[oracle@zeng ~]$ cd /opt/oracle11g/oradata/oracl
[oracle@zeng oracl]$ cp -i control.ctl control02.ctl
cp: overwrite `control02.ctl'? y
重啟資料庫,一切ok了。
SQL> startup
ORACLE instance started.
Total System Global Area  418484224 bytes
Fixed Size                  1336932 bytes
Variable Size             222300572 bytes
Database Buffers          188743680 bytes
Redo Buffers                6103040 bytes
Database mounted.
Database opened.
SQL> select name from V$controlfile;     
NAME
------------------------------------------
/opt/oracle11g/oradata/oracl/control.ctl
/opt/oracle11g/oradata/oracl/control02.ctl
/home/oracle/backup/control03.ctl
還有一種更糟糕的情況就是,如果某個控制檔案所在的磁碟徹底over了。可以採用兩種方法來解決。
第一種:在那個壞掉的磁碟中的控制檔案我不要了。這意味著資料庫維護的控制檔案就少了一份。
1、先關閉資料庫。
2、重啟到nomount狀態。
3、從spfile建立pfile,關閉資料庫。
4、在作業系統上編輯剛才生成的pfile,把在壞掉的磁碟中的那條控制檔案專案從control_files刪除掉。
5、用剛才編輯過的pfile啟動資料庫到nomount狀態,從pfile建立spfile。關閉資料庫。
6、用剛才建立的spfile重啟資料庫。
第二種:資料庫維護的控制檔案份數不能減少。
1、先關閉資料庫。
2、用其他控制檔案副本或者備份,在其他位置恢復一個控制檔案。
2、重啟到nomount狀態。
3、從spfile建立pfile,關閉資料庫。
4、在作業系統上編輯剛才生成的pfile,把在壞掉的磁碟中的那條控制檔案專案用第二步中恢復的控制
檔案專案代替,這樣就可以保證資料庫維護的控制檔案份數沒有減少。
5、用剛才編輯過的pfile啟動資料庫到nomount狀態,從pfile建立spfile。關閉資料庫。
6、用剛才建立的spfile重啟資料庫。

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

相關文章