直接刪除undo及temp表空間檔案後的資料庫恢復一例

sqysl發表於2016-06-08

前幾天,某使用者研發找到我,說他們的研發庫壞了,問我能恢復不?我問他們做了什麼操作,一個小男孩兒說,看到空間滿了,清除了點兒資料,我說是不是連資料庫的檔案也清除了,他說沒有,他清除的是ORACLE_HOME外的一個目錄,和資料庫沒關係,見他這麼說,我就沒什麼說的了,因為再說下去也是扯皮。登入系統檢視,發現資料庫可以mount,但在開啟階段會報錯:

ORA-00603:ORACLE server session terminated by fatal error.

一時還真搞不清到底咋了,由spfile匯出pfile,經檢視undo表空間被刪除了,只能採取了下面的步驟:

修改initsid.ora如下:

_corruption_rollback_segments=true;

undo_management='MANUAL'

undo_tablespace='SYSTEM'

用pfile啟動,系統可以正常啟動、開啟,但很短時間內就會自動宕掉,因此,我必須儘快建立一個undo,為了儘快,我開始建立了一個只有50m的undo表空間undotbs2,然後,修改initsid.ora:

undo_management='AUTO'

undo_tablespace='UNDOTBS2'

再用pfile啟動,系統可以正常啟動、開啟,但也是過了一段時間,就自動宕掉,後來,忽然看到一個報錯,似乎說是和parallel servers有關,於是,修改initsid.ora:

parallel_max_servers=0

再用pfile啟動、開啟資料庫後,這次資料庫不自動宕掉了,接著,建立了一個大的undo表空間undotbs3,將系統undo表空間切換到這個大的新建的undo表空間undotbs3上,修改initsid.ora:

undo_tablespace='UNDOTBS3'

再以pfile啟動、開啟資料庫,並drop掉那個小的undo表空間undotbs2,後來發現系統的temp表空間檔案也被刪除了,於是新建了temp表空間temp1,並把使用者temp表空間切到新的temp表空間temp1上,然後,建立了spfile,並用spfile重啟資料庫,驗證幾天,一切正常。

供大家參考,如需轉載,請註明出處。

 

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

相關文章