探索ORACLE之RMAN_07 控制檔案丟失恢復

wuweilong發表於2012-06-22

探索ORACLERMAN_07 控制檔案丟失恢復

作者:吳偉龍   NameProdence Woo

QQ286507175  msn:hapy-wuweilong@hotmail.com

1、     控制檔案(control file)丟失恢復

基於控制檔案的複合多路徑性,它的丟失分為兩種,一種是其中某個控制檔案的損壞或丟失,另外一種是所有控制檔案均丟失。基於第一種情況,只需把好的控制檔案複製一份在損壞或丟失的那個控制檔案路徑下即可。第二種情況下則需要透過備份資訊來對控制檔案進行恢復或手工重建控制檔案。

丟失單一控制檔案的判斷及恢復。

資料庫無法正常關閉,因為在關閉的時候必須向控制檔案中更新scn

SQL> shutdown immediate

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/DBData/oradata/WWL/control02.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

 

必須強制關閉資料庫

SQL> shutdown abort;

ORACLE instance shut down.

 

啟動資料庫報控制檔案驗證失敗,檢查告警日誌檔案

SQL> startup

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218968 bytes

Variable Size             104859240 bytes

Database Buffers          171966464 bytes

Redo Buffers                7168000 bytes

ORA-00205: error in identifying control file, check alert log for more info

 

檢視告警日誌,報提示找不到controlfile2

Fri Jun 22 11:54:26 2012

Errors in file /DBSoft/admin/WWL/udump/wwl_ora_4816.trc:

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/DBData/oradata/WWL/control02.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

 

從上面的資訊我們可以得出是由於控制檔案丟失導致了資料庫無法正常的啟動和關閉,下面我們要做的就是對控制檔案進行做恢復,因為我們知道控制檔案具有重複多路徑屬性,預設會有三個控制檔案。現在日誌中看到的是控制檔案2丟失,找不到,我們可以透過控制檔案13來恢復2

4.1 基於正常控制檔案恢復損壞的控制檔案

   1、檢視控制檔案存在路徑

SQL> show parameter control_files

 

NAME          TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_files     string      /DBSoft/oradata/WWL/control01.ctl, /DBData/oradata/WWL/control02.ctl, /DBData/oradata/WWL/control03.ctl

SQL>

    我們可以從如上看到,該套資料庫存在三個控制檔案其中一個控制檔案存放在/DBSoft目中中的oradata/wwl/目錄下,另外兩個控制檔案存在/DBData目錄中的/oradata/wwl/的目錄下,從上面剛才的資訊中我們可以得之是control02.ctl控制檔案丟失導致資料庫故障。

   2、檢查下控制檔案是不存在還是損壞了

[oracle@wwldb WWL]$ cd /DBData/oradata/WWL/

[oracle@wwldb WWL]$ ll

total 0

[oracle@wwldb WWL]$

 

怪了,這個目錄怎麼一個控制檔案都沒有了呀,看看控制檔案一是否存在。

[oracle@wwldb WWL]$ cd /DBSoft/oradata/WWL/

[oracle@wwldb WWL]$ ls

control01.ctl

 

非常萬幸,controlfile1還是存在的,這樣我們就可以透過controlfile1來恢復controlfile23了。

   3、關閉資料庫

SQL> shutdown abort

ORACLE instance shut down.

SQL>

 

4、恢復損壞丟失的控制檔案

[oracle@wwldb WWL]$ ls

control01.ctl

[oracle@wwldb WWL]$ pwd

/DBSoft/oradata/WWL

[oracle@wwldb WWL]$ ls

control01.ctl

[oracle@wwldb WWL]$ cp control01.ctl /DBData/oradata/WWL/control02.ctl

[oracle@wwldb WWL]$ cp control01.ctl /DBData/oradata/WWL/control03.ctl

[oracle@wwldb WWL]$ ll /DBData/oradata/WWL/

total 13792

-rw-r----- 1 oracle oinstall 7061504 Jun 22 12:51 control02.ctl

-rw-r----- 1 oracle oinstall 7061504 Jun 22 12:51 control03.ctl

[oracle@wwldb WWL]$

2、 啟動資料庫

SQL> startup

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218968 bytes

Variable Size             104859240 bytes

Database Buffers          171966464 bytes

Redo Buffers                7168000 bytes

Database mounted.

Database opened.

SQL>

 

 

  4.2 所有控制檔案全部丟失。

      丟失單一控制檔案的判斷及恢復。

 資料庫無法正常關閉,因為在關閉的時候必須向控制檔案中更新scn

SQL> shutdown immediate

ORA-00210: cannot open the specified control file

ORA-00202: control file: ' /DBSoft/oradata/WWL/control01.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

 

必須強制關閉資料庫

SQL> shutdown abort;

ORACLE instance shut down.

 

啟動資料庫報控制檔案驗證失敗,檢查告警日誌檔案

SQL> startup

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218968 bytes

Variable Size             104859240 bytes

Database Buffers          171966464 bytes

Redo Buffers                7168000 bytes

ORA-00205: error in identifying control file, check alert log for more info

 

檢視告警日誌,報提示找不到controlfile1

Fri Jun 22 13:16:07 2012

Errors in file /DBSoft/admin/WWL/udump/wwl_ora_5104.trc:

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/DBSoft/oradata/WWL/control01.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

 

透過RMAN來進行控制檔案的恢復:

1、 強制啟動資料庫到nomount狀態

SQL> startup force nomount;

ORACLE instance started.

 

Total System Global Area  285212672 bytes

Fixed Size                  1218968 bytes

Variable Size             109053544 bytes

Database Buffers          167772160 bytes

Redo Buffers                7168000 bytes

SQL> exit

2、 執行restore控制檔案恢復

RMAN>restore controlfile;

 

3、 開啟資料庫

SQL>alter database mount;

Database altered.

 

SQL>alter database open;

Database altered.

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

相關文章