1. 程式人生 > >oracle undo損壞修復方法

oracle undo損壞修復方法

對於undo損壞的情況 有兩種情形分別是有活動事務和沒有活動事務的情況
1,沒有活動事務
 在沒有活動事務的情況下個人覺得最快捷的方法就是offline並drop相關的資料檔案然後開啟資料庫 新建undo表空間,將系統預設表空間指定到新建的undo表空間即可。(個人觀點)
2,有活動事務的情況
 誤區 像之前已沒有活動事務的情況一樣解決,資料庫能正常啟動,但是當訪問當時正在操作的表時會發生資料不一致的情況
解決方法:
1,涉及的資料字典檢視
v$rollstat v$rollname dba_rollback_segs v$transaction v$session
2,將丟失的檔案offline掉
alter databae datafile ‘。。。。。.dbf' offline drop;
3,查看回滾段狀態
select status ,count(*) from dba_rollback_segs group by status;
4,嘗試新建undo表空間 (不出意外會報錯)
5.建立pfile引數檔案,在引數檔案中修改引數
增加 undo_meanagement='menual'
     undo_tablespace='undo2'
     _offline_rollback_segments=('_syssmu*$.....’)
6,用pfile啟動資料庫
檢視當前需要need recover的回滾段
刪除這些回滾段
drop rollback segment“$1";
知道就剩下一個系統回滾段
然後drop undo表空間
新建undo表空間
7,關閉資料庫 用spfile啟動,這時候修改的所有操作都記錄在pfile裡面
還需要重新指定表空間,修改管理方式。
8,重啟 查詢正在修改的表,測試資料
該方式是將沒有提交的事務預設提交。