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

  • 相关阅读:
    [背包问题][二进制优化] Jzoj P4224 食物
    [并查集][排序] Jzoj P4223 旅游
    [哈夫曼树][优先队列] Bzoj P4198 荷马史诗
    [hash][差分][虚树] Jzoj P6011 天天爱跑步
    [dp] Jzoj P6012 荷马史诗
    [dp][递归] Jzoj P4211 送你一棵圣诞树
    [数学] Jzoj P3912 超氧化钾
    堆学习笔记(未完待续)(洛谷p1090合并果子)
    [AC自动机]luogu P2444 病毒
    [概率期望][DP]luogu P3830 随机树
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3893217.html
Copyright © 2011-2022 走看看