執行語句:表示操作數據庫過程出錯現象:表示操作數據庫過程出現錯誤現象出錯原因:表示出現錯誤的原因解決方法:表示解決錯誤的方法相關知識:表示與這個主題相關的知識=============================================================執行語句:刪除表空間報錯誤,drop tablespace 表空間名出錯現象:“ORA-01548: active rollback segment '_SYSSMU11_4270384673$ ' found, terminate dropping tablespace”錯誤原因:刪除undo表空間中的segment需要回復解決方法:刪除回滾段信息1、關閉相應undo表空間的數據文件
alter database datafile '/home/oracle/undofile.dbf' offline drop
2、查詢需要segment狀態
SQL> select segment_name,tablespace_name,status from dba_rollback_segs; SEGMENT_NAME TABLESPACE_NAME STATUS ------------------------------ ------------------------------ ---------------- _SYSSMU12_3879543783$ UNDO_SMALL OFFLINE _SYSSMU11_4270384673$ UNDO_SMALL NEEDS RECOVERY _SYSSMU30_2482938352$ UNDO_TPFDA OFFLINE
3、利用pfile參數文件啓動數據庫
關閉數據庫:shutdown immediate
創建pfile文件:create pfile '/home/oracle/pfile.ora' from spfile
修改pfile文件,添加以下參數
*.undo_management='Manual'
_corrupted_rollback_segments('_SYSSMU11_4270384673$')
啓動數據庫:startup pfile='/home/oracle/pfile.ora'
4、刪除狀態爲needs Recovery的segment
drop rollback segment ‘_SYSSMU11_4270384673$’
5、重啓數據庫並刪除undo表空間
drop tablespace UNDO_SMALL
Oracle將需要回滾的數據當作已經提交的數據,爲了避免隨後出現不可預測的問題,在重起數據庫去掉隱藏參數後,應該導出數據,並建立新庫,將源數據導入。
對於沒有啓動的數據庫,可以通過Linux操作系統命令strings從system表空間的數據文件中獲取回滾段信息。對於windows環境下的Oracle,可以將數據文件通過ftp,拷貝到linux系統中,然後執行strings命令:strings system01.dbf | grep _SYSSMU
相關知識:聲明:爲了更好的使讀者能夠明白與主題相關內容,特別引用http://www.askmaclean.com/archives/ora-00600-4000-ora-00704-bootstrap-process-failure.html 內容,在此表示感謝maclean!_CORRUPTED_ROLLBACK_SEGMENTS(corrupted undo segment list)隱藏參數所獨有的功能:
- 在實例啓動startup並open database的階段_CORRUPTED_ROLLBACK_SEGMENTS所列出的undo segments(撤銷段/回滾段)將不會被訪問讀取
- 所有指向這些被_CORRUPTED_ROLLBACK_SEGMENTS列出的undo segments的事務都被認爲已經提交了commit,和這個undo segments已經被drop時類似
- 這將導致嚴重的邏輯訛誤
- 如果數據字典上有活躍事務那麼將更糟糕,數據字典邏輯訛誤會造成數據庫管理問題
- 如果bootstrap自舉核心對象有活躍事務,那麼將無法忽略錯誤ORA-00704: bootstrap process failure錯誤,導致無法強制打開數據庫
- 衷心地建議用_CORRUPTED_ROLLBACK_SEGMENTS這個參數打開數據庫後導出數據並重建數據庫,這個參數使用的後遺症可能很頑固
- Oracle公司內部有叫做TXChecker的工具可以檢查問題事務
_offline_rollback_segments 和 _corrupted_rollback_segments 均會造成的實例行爲變化:
- 以上2個參數所列出的Undo Segments(撤銷段/回滾段)將不會被在線使用online
- 在UNDO$數據字典基表中將體現爲OFFLINE的記錄
- 在實例instance的生命週期中將不會再給新的事務分配使用
- 參數所列出的Undo Segments列表上的活躍事務active transaction將即不被回滾亦不被標記爲dead以便SMON去回滾(瞭解你所不知道的SMON功能(五):Recover Dead transaction)
【Oracle問題集6】ORA-01548: active rollback segment XX found, terminate dropping tablespace
說明:【oracle問題集】是博主平時操作數據庫遇到的問題以及解決方案。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.