1. 程式人生 > >非歸檔模式,沒有備份,直接拔電導致Undo損壞

非歸檔模式,沒有備份,直接拔電導致Undo損壞

ORACLE undo

非歸檔模式,沒有備份,直接拔電導致Undo損壞
啟動數據庫,檢查故障信息
SQL> conn / as sysdba
SQL> startup pfile=‘ ‘;
報錯,ORA-03113:end-of-file on communucation channel
查看alert log,發現文件2發生錯誤,導致600錯誤
先查看文件2的名字
SQL> conn / as sysdba
SQL> startup mount pfile=‘‘;
SQL> select file#,status,name from v$datafile;
查看可知文件2是undo數據文件,查看資料,undotbs損壞時可采用隱含參數臨時啟動數據庫,然後進行修復
修改init文件,加入
._allow_resetlogs_corruption=true(允許在數據文件SCN不一致的情況下啟動數據庫)
._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,
_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU11$) 允許在rollback segments損壞的情況下啟動數據庫
SQL> shutdown abort;
SQL> startup pfile=‘‘;
啟動成功,查看當前的rollback segments
SQL> select segment_name,status from dba_rollback_segs;

新建一個重做表空間undo
SQL> create undo tablespace undo datafile ‘‘ size 50M reuse autoextend on;
SQL> select segment_name,status from dba_rollback_segs;
修改系統默認的Undo段
SQL> alter system set undo_tablespace=undo;

刪除損壞的undotbs1表空間
SQL> alter tablespace undotbs1 offline normal;

SQL> drop tablespace undotbs1 including contents and datafiles;
SQL> select from v$recover_file;
無數據
SQL> shutdown immediate;
修改參數文件,註釋掉剛才添加的參數
#
._allow_resetlogs_corruption=true(允許在數據文件SCN不一致的情況下啟動數據庫)
#*._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,
_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU11$) 允許在rollback
啟動數據庫:
SQL> startup pfile=‘‘;

非歸檔模式,沒有備份,直接拔電導致Undo損壞