Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1278902
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-14 14:05:45

在启用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

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

阅读(340) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~