12.25.06
DSI 301 Advanced Server Support Skills之heap corruption diagnostics
概论:
本章的学习,将达到如下目的:
解释堆崩溃;
识别堆崩溃的发生;
使用初始化参数和诊断事件处理堆崩溃;
概论:
本章的学习,将达到如下目的:
解释堆崩溃;
识别堆崩溃的发生;
使用初始化参数和诊断事件处理堆崩溃;
今天上班,接到HN地区项目部的电话,说是数据库在进行应用升级后,无法正常启动.现象就是启动了windows中的oracle服务后,数据库无法连接,具体原因不明;
系统环境为,windows 2000+oracle 9iR2 9.2.0.7.0
远程登陆上去,打开数据库,报错,具体为ora-01122,ora-01110,ora-01200,提示为undotbs1的数据文件大小不匹配;
我们的数据库是非归档模式,只能想办法把数据库打开了;
首先,俺启动数据库到mount状态,然后offline drop掉这个数据文件,成功了.
然后打开数据库,再次成功,既然这样,就有办法了.
创建一个新的undo tablespace,然后将系统的undo tablespace切换到新的undo tablespace上,再成功;
在os上删除掉出问题的数据文件,这个时候,系统开始报错了.具体如下:
SMON: about to recover undo segment 6
SMON: mark undo segment 6 as needs recovery
SMON: about to recover undo segment 7
SMON: mark undo segment 7 as needs recovery
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as needs recovery
SMON: about to recover undo segment 9
SMON: mark undo segment 9 as needs recovery
SMON: about to recover undo segment 10
SMON: mark undo segment 10 as needs recovery
SMON: about to recover undo segment 6
SMON: mark undo segment 6 as needs recovery
SMON: about to recover undo segment 7
SMON: mark undo segment 7 as needs recovery
SMON: about to recover undo segment 8
SMON: mark undo segment 8 as needs recovery
SMON: about to recover undo segment 9
SMON: mark undo segment 9 as needs recovery
SMON: about to recover undo segment 10
SMON: mark undo segment 10 as needs recovery
还有和这个相关的就是:
Mon Dec 25 15:04:26 2006
Errors in file d:oracleadminorclbdumporcl_cjq0_2752.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: ‘D:ORACLEORADATAORCLUNDOTBS01.DBF’
这个时候,在系统中drop undotbs1,报错ora-01548,无法drop该表空间,因为有活动的回滚在上面.
郁闷哟,9i是自动管理回滚段的,在数据库中查,确实有10个回滚段状态为需要恢复,而且这些回滚段的表空间都是undotbs1,没办法了,只能用隐含参数了,在init.ora中增加隐含参数_corrupted_rollback_segments,然后再用pfile启动数据库,再次drop掉表空间undotbs1,成功,然后再用spfile重启数据库,搞定,终于没有错误了.