在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呢?