背景:客户生产系统数据库因为断电导致数据库启来后台ALERT中出现大量undo needs recovery报错
操作系统版本:AIX 5.3
数据库版本: 10.0.2.3 RAC+ASM
问题:
后台ALERT中出现大量undo needs recovery报错,但是数据还能正常启动
处理步骤:
1. 首先我想到的就是查询数据字典:
SQL> select file#,name,status from v$datafile;
结果: undotbs1 表空间的状态是recover.
2.建立了新的回滚表空间undotbs2,删除原来undo表空间
SQL> drop tablespace undotbs1;
drop tablespace undotbs1
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU10$' found, terminate dropping tablespace
4. 查看系统回滚段的情况
SELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;
结果:_SYSSMU10 的状态是 "NEED RECOVERY"
5. 使用隐含参数_CORRUPTED_ROLLBACK_SEGMENTS.
1) 创建pfile文件,create pfile='initliferpt.ora' from spfile;
2) 修改init.ora 文件,加上:
*.SPFILE='+DGROUP1/liferpt/spfileliferpt.ora'
_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU10$)
undo_management=manual
undo_retention=10800
undo_tablespace=UNDOTBS
6. 关闭数据库
7. 重新打开数据库
startup pfile='initliferpt.ora';
8. 删除已经不用的undotbs1
drop tablespace undotbs1 including contents and datafiles
9. 关闭instance,重新启动实例
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21605631/viewspace-715560/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21605631/viewspace-715560/