Dead Transaction引起的Shutdown Hang

[@more@]

在 一个测试库上,同事进行了一些操作之后,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,
2 state,
3 undoblockstotal "Total",
4 undoblocksdone "Done",
5 undoblockstotal - undoblocksdone "ToDo",
6 pid
7 from v$fast_start_transactions;

USN STATE Total Done ToDo PID 
------ ---------------- ---------- ---------- ---------- --------
18 RECOVERING 323065 187999 135066 10

SQL> select spid,pid,program from v$process where pid=10;

SPID PID PROGRAM
------------ ---------- ---------------------------
9048 10 oracle@crmpst01 (P000)

或者查询内部视图x$ktuxe,通过KTUXESIZ字段来判断:

SQL> select ktuxeusn, ktuxesiz, ktuxesta, 
2 KTUXEUSN, KTUXESLT, KTUXESQN
3 from x$ktuxe
4 where ktuxecfl = 'DEAD';

KTUXEUSN KTUXESIZ KTUXESTA KTUXEUSN KTUXESLT KTUXESQN
---------- ---------- ---------------- ---------- ---------- ----------
18 133116 ACTIVE 18 1 2

因而在shutdown时,最好是先查查数据库中有什么大事物、Dead事物需要回滚。另外,如果恢复中smon进程占用了100%的CPU,可以通过设置10513事件,来disable smon进程的恢复,待到数据库空闲时再时行恢复(该事件的使用待测试)。

— The End —

dead_transaction_cause_shutdown_hang.html

art01.gif

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-1027468/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/82387/viewspace-1027468/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值