一种特殊的Library Cache Lock情况

    在Oracle 10g中的我用两个会话, 搞出了下面这个等待情况, 很是有趣, 也很危险.

SQL> SELECT SID, EVENT FROM V$SESSION
  2  WHERE USERNAME='ANYSQL';

       SID EVENT
---------- -------------------------------------
        29 library cache lock
        32 SQL*Net message from client

    这个情况是如何出来的呢, 在32会话中, 我执行了语句:

SQL> exec dbms_mview.begin_table_reorganization('ANYSQL','T_IOT');

PL/SQL procedure successfully completed.

    在29这个会话中, 我发出如下命令, 但一直处于等待情况:

SQL> delete t_iot;

    看来Oracle的新功能, 有时是比较危险的, 当在第32会话中再发一个Commit之后, 就好了, 29这个会话就可以往下执行了, Oracle为什么不是那个过程最后默认加个Commit呢?

发表留言: