Oracle HowTo:判断一个死事务的恢复进度

Oracle HowTo:判断一个死事务的恢复进度

0
正在加载推荐文章
昨天碰到一个问题,在启用SMON的串行恢复后,对于一个死事务,如何观察其恢复进度。

由于死事务已经无法通过v$transaction来观察,所以必须通过内部表来进行判断。
这个内部表是 x$ktuxe,该表会记录Dead事务的恢复进度:

17:30:37 SQL> select distinct KTUXECFL,count(*) from x$ktuxe group by KTUXECFL;

KTUXECFL COUNT(*)
------------------------ ----------
DEAD 1
NONE 2393
SCO|COL 8

可以通过观察KTUXESIZ字段来评估恢复进度:
16:59:47 SQL> select ADDR,KTUXEUSN,KTUXESLT,KTUXESQN,KTUXESIZ
2 from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;

ADDR KTUXEUSN KTUXESLT KTUXESQN KTUXESIZ
---------------- ---------- ---------- ---------- ----------
FFFFFFFF7D07B91C 10 39 2567412 1086075
17:02:12 SQL> select ADDR,KTUXEUSN,KTUXESLT,KTUXESQN,KTUXESIZ
2 from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;

ADDR KTUXEUSN KTUXESLT KTUXESQN KTUXESIZ
---------------- ---------- ---------- ---------- ----------
FFFFFFFF7D07B91C 10 39 2567412 1086067

根据评估,这个事务回滚需要大约2.55天,我Ft:
17:08:28 SQL> declare
17:10:22 2 l_start number;
17:10:22 3 l_end number;
17:10:22 4 begin
17:10:22 5 select ktuxesiz into l_start from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;
17:10:22 6 dbms_lock.sleep(60);
17:10:22 7 select ktuxesiz into l_end from x$ktuxe where KTUXEUSN=10 and KTUXESLT=39;
17:10:22 8 dbms_output.put_line('time est Day:'|| round(l_end/(l_start -l_end)/60/24,2));
17:10:22 9 end;
17:10:22 10 /
time est Day:2.55

这是非常有用的一个内部表,大家可以参考一下。

-The End-

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

转载于:http://blog.itpub.net/17252115/viewspace-735619/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值