zoukankan      html  css  js  c++  java
  • 检查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,依据以往的project经验:

    于是改为

    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:.21

     24*0.21=5.04小时。即:估计5.04小时后回滚完成。

    另外注意:在其它环境使用时,请注意替换KTUXEUSN=13和KTUXESLT=5

  • 相关阅读:
    WinForm简单的打包和部署
    C#实现获取枚举的描述
    C#实现序列化对象到XML文档与反序列化
    cookie与session的区别与联系
    windows环境下创建多个Redis实例
    struts2中的constant配置详解
    PowerDesigner使用教程
    配置JAVA环境变量
    CAS实现SSO单点登录原理
    OVER(PARTITION BY)函数用法
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3893217.html
Copyright © 2011-2022 走看看