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

原创 2007年09月27日 19:30:00
昨天碰到一个问题,在启用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

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

基础知识补漏-控制文件和引导

控制文件和引导 SCN是唯一的,并随时间增加,但是可能并不连贯。 scn超过合理值意外增长后,将会出现ora-00600[2552]错误。 获取数据库的当前scn号: ...
  • qq_21127313
  • qq_21127313
  • 2016年09月08日 15:00
  • 72

在shell中判断用户进程是否死掉

在shell中,有时要判断进程是否死掉,这个其实很好办,注意GREP的时候 过滤掉GREP本身的这个进程就可以了; #!/bin/sh SERVICE='httpd' if p...
  • jackyrongvip
  • jackyrongvip
  • 2013年07月01日 16:26
  • 527

rman恢复进度的脚本

select inst_id,sid,serial#,opname,COMPLETE, trunc(((to_char(last_update_time,'dd')-to_char(start_tim...
  • u012422541
  • u012422541
  • 2014年11月25日 14:54
  • 484

使用检查点函数判断事务是否成功

有时候开发写的程序中,响应中无任何内容。但是录制完脚本不判断总觉得不是一个合格的测试脚本。所以可以使用检查点函数去判断,看事务是否成功! eg:          lr_start_transact...
  • Abby312
  • Abby312
  • 2017年08月29日 10:44
  • 282

判断事务结束方法

结束事务,也就是lr_end_transaction()。 事务状态可分为LR_PASS、LR_FAIL、LR_STOP、LR_AUTO等四种状态,默认事务状态是LR_AUTO。事务状态如果按照Lo...
  • yiqin3399
  • yiqin3399
  • 2016年02月29日 18:51
  • 859

检查Oracle 中死事务的语句

检查Oracle 中死事务的语句
  • msdnchina
  • msdnchina
  • 2014年07月29日 23:11
  • 1353

查看死事务的回滚情况

在有些情况下,有些死事务在后台回滚,v$transaction
  • wavelet123
  • wavelet123
  • 2014年06月08日 17:27
  • 360

DB2监控备份、恢复进度

session1中执行备份: [db2inst1@db ~]$ db2 backup db test to /db2data/ session2中使用如下命令监控备份进度: [db2inst1@db...
  • lk_db
  • lk_db
  • 2017年10月19日 14:46
  • 403

监控数据备份恢复完成进度(EXPDP/IMPDP/RMAN)

查看EXPDP/IMPDP/RMAN任务进度。 中途停止crontab后台执行的导入导出任务。
  • laven54
  • laven54
  • 2013年07月25日 19:37
  • 3301

《一个都不能死》游戏设计及实现

《一个都不能死》游戏设计及实现基本功能
  • mjj123mjj123
  • mjj123mjj123
  • 2014年09月14日 19:58
  • 2252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:判断一个死事务的恢复进度
举报原因:
原因补充:

(最多只允许输入30个字)