Welcome 微信登录

首页 / 数据库 / MySQL / 查询Oracle 中死事务的语句

查询Oracle 中死事务的语句SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */ 
  2  KTUXESTA Status,    KTUXECFL Flags ,KTUXESIZ
  3  FROM x$ktuxe
  4  WHERE ktuxesta!="INACTIVE";
  KTUXEUSN KTUXESLT KTUXESQN STATUS         FLAGS                      KTUXESIZ
---------- ---------- ---------- ---------------- ------------------------ ----------
        13          5      47447 ACTIVE         DEAD                        2819919
        39          0        502 ACTIVE         NONE                              1
        43       45        480 ACTIVE         NONE                              0 SQL> /
  KTUXEUSN KTUXESLT KTUXESQN STATUS         FLAGS                      KTUXESIZ
---------- ---------- ---------- ---------------- ------------------------ ----------
        13          5      47447 ACTIVE         DEAD                        2819919<----该值没减小。
        39          0        502 ACTIVE         NONE                              1
        43       45        480 ACTIVE         NONE                              0 查询v$px_session和v$fast_start_servers,显示很多并行进程在rollback,根据以往的工程经验:于是改为SQL>alter system set fast_start_parallel_rollback=false scope=both;之后,再次运行SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN,/* Transaction ID */ 
 2  KTUXESTA Status,    KTUXECFL Flags ,KTUXESIZ
 3  FROM x$ktuxe
 4  WHERE ktuxesta!="INACTIVE";
 KTUXEUSN KTUXESLT KTUXESQN STATUS         FLAGS                      KTUXESIZ
---------- ---------- -------------------------- ------------------------ ----------
     13          5      47447 ACTIVE         DEAD                        2033516
     35       29        502 ACTIVE         NONE                              1
 
SQL> /
 
 KTUXEUSN KTUXESLT KTUXESQN STATUS         FLAGS                      KTUXESIZ
---------- ---------- -------------------------- ------------------------ ----------
     13          5      47447 ACTIVE         DEAD                        2033433<---该值不断变小。
     35       29        502 ACTIVE         NONE                              1使用如下脚本查看回滚完毕的预计时间(以天为单位):SQL> set serveroutput on
SQL> declare
 2 l_start number;
 3 l_end number;
 4 begin
 5 select ktuxesiz into l_startfrom x$ktuxe where KTUXEUSN=13 and KTUXESLT=5;
 6 dbms_lock.sleep(60);
 7 select ktuxesiz into l_endfrom x$ktuxe where KTUXEUSN=13 and KTUXESLT=5;
 8 dbms_output.put_line("time estDay:"|| round(l_end/(l_start -l_end)/60/24,2));
  9 end;
 10 /
time est Day:.2124*0.21=5.04小时。即:预计5.04小时后回滚完毕。
 
另外注意:在其他环境使用时,请注意替换KTUXEUSN=13和KTUXESLT=5--------------------------------------------------------------------------------Linux-6-64下安装Oracle 12C笔记 http://www.linuxidc.com/Linux/2013-07/86805.htm在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm--------------------------------------------------------------------------------更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址