透過trace檔案重新建立控制檔案

dbhelper發表於2014-12-04

前言:

       控制檔案順壞一般有2個方法進行還原,第一如果只損壞一個控制檔案的話,可以透過複製其他冗餘的控制檔案過來(一般控制檔案至少儲存在兩個位置;

       透過語句可以查詢控制檔案存放的資訊:

SQL> select name from v$controlfile;

NAME

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

/oracle/PIP/origlogA/cntrl/cntrlPIP.dbf

/oracle/PIP/origlogB/cntrl/cntrlPIP.dbf

/oracle/PIP/sapdata1/cntrl/cntrlPIP.dbf

     如果控制檔案都順壞的話,但是系統有備份,可以還原相應的控制檔案,然後進行不完全恢復,具體資料庫的恢復已經有發帖介紹過去,請各位自行查詢了;

 

但是如果是第三中情況了,所有的控制檔案都損壞了,而且沒有進行備份,那該怎麼辦?

本文介紹在這種極端情況下的極端方法,前提你對資料庫的資訊很熟悉了;

 

操作步驟:

1、在一臺執行良好的資料庫上面執行以下語句:

SQL> alter database backup controlfile to trace resetlogs; 

然後在相應的alert log下面查詢trace產生的語句

2、匯出相應的trace檔案

       1)查詢STARTUP NOMOUNT語句,將這一行上面的所有行都刪除

       2)查詢所有以--開始的行,把這些行刪除

       3)修改所有的db_name跟原來的一致

       4)找到CREATE CONTROLFILE REUSE DATABASE...語句,將其中的REUSE修改為SET

       5)找到RECOVER DATABASE USING BACKUP CONTROLFILE語句,將其用雙橫線(--)註釋掉

    6)修改所有的檔案路徑跟實際環境的路徑一致

    7)把修改後的檔案以*.sql方式命名,然後上傳到伺服器

3、啟動資料庫

     1) 透過指令碼啟動資料庫   sqlplu:@/oracle/ccf.sql(例如:放在oracle目錄下,並以ccf.sql方式命名)

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

相關文章