日期:2014-05-16 浏览次数:20796 次
前段时间一朋友遇到的案例,根据他的描述,我小整理了一下。
数据库环境:AIX + ORACLE 10.2.0.5, 单机。
朋友说一个大事务不能完成回滚操作,系统异常。 查看等待事件,如下图:
这里的row cache lock 较为严重。 row cache lock 对应的cache#=11,对应的child latch是dc_object_ids。
如何获取这个child latch可以参考如下blog:
latch row cache objects 等待事件及 child latch对象 说明
http://blog.csdn.net/tianlesoftware/article/details/6537227
Trace 文件出现大量的: waitfor stopper event to be increased。
这个wait forstopper event to be increased的等待事件是SMON进程的event,也就是说我们的SMON 进程在这个时候出现了异常。
SMON 进程有一个非常重要的功能,就是Recover Dead transaction。
使用如下SQL 查看了一下Recover的进度:
SELECT usn,
state,
undoblockstotal "Total",
undoblocksdone "Done",
undoblockstotal -undoblocksdone "ToDo",
DECODE(
cputime,
0, 'unknown',
SYSDATE
+( ( (undoblockstotal-undoblocksdone)
/ (undoblocksdone/cputime))
/86400))
"Estimatedtime to complete"
FROMv$fast_start_transactions;
返回结果如下:
粗略的看一下,需要5个月的时间。 开了一个国际玩笑。
刚拿到数据,以为是如下文档里说的现象:
Database Appearsto Hang Waits for "Wait for a undo record" and "Wait for stopperevent to be increased" Due to Parallel Transaction Recover [ID 464246.1]
MOS的现象有3种:
1) Database appears to hang
2) Undo tablespace is growing.
3) Systemstate dump shows the