小议Oracle 11g的自治事务(三)
2008-08-09 12:42:42 来源:WEB开发网上一篇文章提到了,自治事务更像是在单独的会话中执行,它的事务状态不会影响当前的事务,它也不会看到当前事务没有提交的修改。
那么自治事务是否和推测的一样,是由另一个会话执行的操作呢,下面通过几个例子来验证这一点:
SQL>TRUNCATETABLET_AUTO_TRANS;
表被截断。
SQL>CREATEORREPLACEPROCEDUREP_AUTOAS
2PRAGMAAUTONOMOUS_TRANSACTION;
3BEGIN
4INSERTINTOT_AUTO_TRANSVALUES(2,'TEST');
5DBMS_LOCK.SLEEP(10);
6COMMIT;
7END;
8/
过程已创建。
SQL>SELECTSIDFROMV$MYSTATWHEREROWNUM=1;
SID
----------
143
在另外一个会话登陆,检查当前系统中会话数量:
SQL>CONN/ASSYSDBA已连接。
SQL>SETSQLP'SQL2>'
SQL2>SELECTSID,USERNAME,STATUSFROMV$SESSION;
SIDUSERNAMESTATUS
------------------------------------------------
137ACTIVE
143YANGTKINACTIVE
145ACTIVE
147ACTIVE
149ACTIVE
154SYSACTIVE
156ACTIVE
157ACTIVE
160ACTIVE
161ACTIVE
162ACTIVE
163ACTIVE
164ACTIVE
165ACTIVE
166ACTIVE
167ACTIVE
168ACTIVE
169ACTIVE
170ACTIVE
已选择19行。
下面执行P_AUTO过程,这个过程会等待10秒的时间:
SQL>EXECP_AUTO
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
- ››oracle 中 UPDATE nowait 的使用方法
赞助商链接