在啟用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:
這是非常有用的一個內部表大家可以參考一下
From:http://tw.wingwit.com/Article/program/Oracle/201311/16834.html