在 一个测试库上,同事进行了一些操作之后,UNDO表空间撑爆了,之后Shutdown immediate时HANG住了。shutdown abort,重启后做了很多操作,例如切换UNDO表空间、DROP原UNDO表空间、将UNDO表空间改为手工管理并将需要恢复的回滚段 offline、drop等,这些操作不是失败就是无效,shutdown时依然Hang住。
其实按理来说,这是一个正常的现象,因为Dead Transaction需要由smon进程进行恢复,因而在恢复没有结束前,数据库也就无法shutdown下来了。有时还可以看到另一种现象,那就是在 Dead Transaction恢复的过程中,smon进程占用了100%的CPU。
可以使用以下命令来查看Dead Transaction恢复的进度:
SQL> select usn, |
或者查询内部视图x$ktuxe,通过KTUXESIZ字段来判断:
SQL> select ktuxeusn, ktuxesiz, ktuxesta, |
因而在shutdown时,最好是先查查数据库中有什么大事物、Dead事物需要回滚。另外,如果恢复中smon进程占用了100%的CPU,可以通过设置10513事件,来disable smon进程的恢复,待到数据库空闲时再时行恢复(该事件的使用待测试)。
— The End —
![dead_transaction_cause_shutdown_hang.html](https://i-blog.csdnimg.cn/blog_migrate/16b4a9abbfff19cd05bf50768de7192a.png)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-1027468/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/82387/viewspace-1027468/