小议Oracle 11g的自治事务(一) 小议Oracle 11g的自治事务(四)
小议Oracle 11g的自治事务(二) 小议Oracle 11g的自治事务(五)
小议Oracle 11g的自治事务(三) 小议Oracle 11g的自治事务(六)
上一篇文章提到了,自治事务更像是在单独的会话中执行,它的事务状态不会影响当前的事务,它也不会看到当前事务没有提交的修改。
那么自治事务是否和推测的一样,是由另一个会话执行的操作呢,下面通过几个例子来验证这一点:
| SQL> TRUNCATE TABLE T_AUTO_TRANS; |
表被截断。
| SQL> CREATE OR REPLACE PROCEDURE P_AUTO AS 2 PRAGMA AUTONOMOUS_TRANSACTION; 3 BEGIN 4 INSERT INTO T_AUTO_TRANS VALUES (2, 'TEST'); 5 DBMS_LOCK.SLEEP(10); 6 COMMIT; 7 END; 8 / |
过程已创建。
| SQL> SELECT SID FROM V$MYSTAT WHERE ROWNUM = 1; SID ---------- 143 |
在另外一个会话登陆,检查当前系统中会话数量:
| SQL> CONN / AS SYSDBA已连接。 SQL> SET SQLP 'SQL2> ' SQL2> SELECT SID, USERNAME, STATUS FROM V$SESSION; SID USERNAME STATUS ---------- ------------------------------ -------- 137 ACTIVE 143 YANGTK INACTIVE 145 ACTIVE 147 ACTIVE 149 ACTIVE 154 SYS ACTIVE 156 ACTIVE 157 ACTIVE 160 ACTIVE 161 ACTIVE 162 ACTIVE 163 ACTIVE 164 ACTIVE 165 ACTIVE 166 ACTIVE 167 ACTIVE 168 ACTIVE 169 ACTIVE 170 ACTIVE |
已选择19行。

