ITPub博客

首页 > Linux操作系统 > Linux操作系统 > _corrupted_rollback_segments参数解决UNDO表空间损坏无法启动数据库的故障

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

原创 Linux操作系统 作者:stpwy 时间:2013-04-18 20:20:22 0 删除 编辑
当我们的数据库报错,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博客 ” ,链接:https://blog.itpub.net/469356/viewspace-758814/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-31

  • 博文量
    9
  • 访问量
    40029