在启用SMON的串行恢复后对于一个死事务如何观察其恢复进度 由于死事务已经无法通过v$transaction来观察所以必须通过内部表来进行判断 这个内部表是x$ktuxe该表会记录Dead事务的恢复进度 :: SQL> select distinct KTUXECFLcount(*) from x$ktuxe group by KTUXECFL;KTUXECFL COUNT(*) DEAD NONE SCO|COL 可以通过观察KTUXESIZ字段来评估恢复进度 :: SQL> select ADDRKTUXEUSNKTUXESLTKTUXESQNKTUXESIZ from x$ktuxe where KTUXEUSN= and KTUXESLT=;ADDR KTUXEUSN KTUXESLT KTUXESQN KTUXESIZ FFFFFFFFDBC :: SQL> select ADDRKTUXEUSNKTUXESLTKTUXESQNKTUXESIZ from x$ktuxe where KTUXEUSN= and KTUXESLT=;ADDR KTUXEUSN KTUXESLT KTUXESQN KTUXESIZ FFFFFFFFDBC 根据评估这个事务回滚需要大约天我Ft :: SQL> declare:: l_start number;:: l_end number;:: begin:: select ktuxesiz into l_start from x$ktuxe where KTUXEUSN= and KTUXESLT=;:: dbms_locksleep();:: select ktuxesiz into l_end from x$ktuxe where KTUXEUSN= and KTUXESLT=;:: dbms_outputput_line(time est Day:|| round(l_end/(l_start l_end)//));:: end;:: /time est Day: 这是非常有用的一个内部表大家可以参考一下 |