回滾段完蛋了的處理

rainbowbridg發表於2007-05-15
背景: 使用者修改一些配置,shutdown immediate,但是系統很久也沒有關閉。等不及的使用者 shutdown abort 資料庫,然後startup。重新啟動之後的資料庫,在alert.log中不段出現類似的錯誤資訊:
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as needs recovery
或者出現:
smon: undo segment 46 is avaliable
smon: need to recover undo segment 46
這些錯誤資訊,由SMON 程式喚醒,所以一般是5分鐘出現一次。
檢查 dba_rollback_segs 發現這些回滾段的狀態為:NEEDS RECOVERY 或者 PARTLY AVAILABLE。 A rollback segment in the PARTLY AVAILABLE state contains data for an in-doubt or recovered distributed transaction, or for yet to be recovered transactions.

原因: 使用者關閉系統的時候,還存在大量的活動事務,在shutdown abort 後,重新啟動的時候,系統要回滾這些事務,並且將這些回滾段置為不可用

解決:
1.
建立一個新的undo tablespace,並將系統切換到該UNDO tablespace 上。對系統進行耐心的等待,不斷檢視
dba_rollback_segs。等所有的回滾段的狀態為online 或者 offline 後,在drop 該UNDO tablespace,操作步驟如下:
create undo tablespace Undo2 datafile '' size 500M segment space management AUTO;
alter syste set undo_tablespace=Undo2;
drop tablespace Undo1;
在alert.log 中將會出現:
SMON: mark undo segment 8 as available,
SMON: Parallel transaction recovery tried
2. sql> alter session set "_smu_debug_mode"=4; 將回滾段設定為手工的debug模式
sql> alter rollback segment "_SYSSMU8$" online;
3.
在引數檔案中設定:._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$' 先開啟資料
庫,然後進行步驟1中的全部操作
4. 新增 _offline_rollback_segments ='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$' ,在重新啟動資料庫,刪除有問題
的回滾段
ref: http://carson.yculblog.com/post.1391582.html
[@more@]

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

相關文章