一次ORA-01548錯誤的處理

eymit發表於2012-02-03

背景:客戶生產系統資料庫因為斷電導致資料庫啟來後臺ALERT中出現大量undo needs recovery報錯


 作業系統版本:AIX 5.3

資料庫版本:  10.0.2.3 RAC+ASM


問題:
後臺ALERT中出現大量undo needs recovery報錯,但是資料還能正常啟動

處理步驟:

1. 首先我想到的就是查詢資料字典:
SQL> select file#,name,status from v$datafile;

結果: undotbs1 表空間的狀態是recover.

2.建立了新的回滾表空間undotbs2,刪除原來undo表空間

SQL> drop tablespace undotbs1;
drop tablespace undotbs1
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU10$' found, terminate dropping tablespace

4. 檢視系統回滾段的情況

SELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;

結果:_SYSSMU10 的狀態是 "NEED RECOVERY"

5. 使用隱含引數_CORRUPTED_ROLLBACK_SEGMENTS.

1) 建立pfile檔案,create pfile='initliferpt.ora' from spfile;

2) 修改init.ora 檔案,加上:

*.SPFILE='+DGROUP1/liferpt/spfileliferpt.ora'
_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU10$)
undo_management=manual
undo_retention=10800
undo_tablespace=UNDOTBS

6. 關閉資料庫

7. 重新開啟資料庫

startup pfile='initliferpt.ora';

8. 刪除已經不用的undotbs1

drop tablespace undotbs1 including contents and datafiles

9. 關閉instance,重新啟動例項

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

相關文章