_corrupted_rollback_segments参数解决UNDO表空间损坏无法启动数据库的故障

当我们的数据库报错,UNDO表空间数据文件损坏而导致数据库无法启动的时候,我们可以使用下面的方法进行处理:
首先,在对应的Pfile中指定下面参数:
*._allow_resetlogs_corruption=true
(注:允许在数据库文件SCN不一致的情况下启动数据库)
*._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
(注:允许在rollback segments损坏的情况下启动数据库)
如果不知道数据库的回滚段可以通过下面方法获得:
$ strings SYSTEM.BDF |grep "_SYSSMU"
使用strings命令查看system表空间数据文件,并且查找字符串"_SYSSMU"就可以得到当前数据库的回滚段列表,然后加入到参数_corrupted_rollback_segments中,再通过指定pfile的方式启动数据库:

SQL>startup pfile='/home/oracle/pfile.ora'

数据库启动起来以后,新建一个新的UNDO表空间,并且关闭数据库

SQL>create undo tablespace UNDO02 datafile '/oradata/undo02_001' size 10G autoextend off;
SQL>shutdown immediate;

将新的UNDO表空间指定到实例,并且启动数据库,然后删除原来的UNDO表空间,再次关闭数据库
*.undo=UNDO02

SQL>startup pfile='/home/oracle/pfile.ora'
SQL> alter tablespace undotbs1 offline normal;
SQL> drop tablespace UNDOTBS1 including contents and datafiles; 
SQL>shutdown immediate

注释掉前面的两个隐含参数,重新启动数据库
SQL>startup pfile='/home/oracle/pfile.ora'

生成新的Spfile
SQL>create  spfile from pfile;

到处位置,数据库恢复正常.


备注:_corrupted_rollback_segments参数可以使数据库在启动的时候,忽略损坏的回滚段,使数据库正常启动.
另外:  _offline_rollback_segments参数可以让指定的回滚段处于OFFLINE状态,从而达到和上面一样的效果,两个参数可以配合使用.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/469356/viewspace-758814/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/469356/viewspace-758814/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值