MMMNL absent错误 ,数据库无法连接
2011-8-24
Kevin Zou
大运结束后回公司上班,美国同事告诉我,一个DB 异常无法连接上,只好shutdown abort,重启数据库。 需要去找下root cause.
我登录到系统,检查日志查看原因。
这个系统一般每个小时都会有归档日志的产生,但是在当地时间14-16之间是没有日志的。
|
2011-08-23 14 4
2011-08-23 16 2
之间是没有2011-08-23 15 的记录。说明在这段时间内数据库处于HUNG 状态,用户无法登陆,系统也不能做任何事情。
|
可能的原因:
|
我觉的这个数据库应该是第二种原因,数据库由于HANG住了,MMNL进程无法在后台运行;当这种HANG的状态一直到系统完全被停止前有好几个小时,Oracle会在alert.log的尾端加上MMNL ABSENT 的一句话。 虽然这句话包括了MMNL进程,实际上是ORACLE进程HANG住的证明,而不仅仅是MMNL进程。
MMNL的这段话只证明了ORACLE 进程确实是被HANG啦,但到底是啥原因导致的呢?
我找到了一个BUG 的描述:
Bug 5470031: INCORRECT MAXSIZE ON UNDO DATAFILE LEADS TO "MMNL ABSENT FOR XX SECS; FOREGROUND。 这个BUG还是处于开发/解决状态。
就是当设置了AUTOEXTEND 为 ON,MAXSIZE小于真实的SIZE大小时,系统就会报这个错误。
An incorrect MAXSIZE for the undo-datafile(s) leads to MMNL messages in the
alert.log
I think there are 2 issues :
1. Why are you able to set a ALTER DATABASE DATAFILE ...AUTOEXTEND MAXSIZE
smaller than the actual filesize.
2. MMNL is reporting messages in the alert.log which do not have a clear
root-cause. At least there is no direct link to the message and the
strange MAXSIZE (MAXBLOCKS) value.
解决方案为关闭AUOEXNTEND,或者MAXSIZE值大于SIZE的值。
我的环境:
|
一个文件没有打开AUTOEXEND,另外一个文件是AUTOEXEND 为ON,难道 MAXSIZE等于SIZE的大小也会出错?
取消自动增长选项,观察是否再次出现类似情况
-END-