非归档模式,没有备份,直接拔电导致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='';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章