WEB开发网
开发学院数据库Oracle 小议Oracle 11g的自治事务(三) 阅读

小议Oracle 11g的自治事务(三)

 2008-08-09 12:42:42 来源:WEB开发网   
核心提示: 在第二个会话仍然执行上面的查询:SQL2>SELECTSID,USERNAME,STATUSFROMV$SESSION;SIDUSERNAMESTATUS143YANGTKACTIVE145ACTIVE147ACTIVE149ACTIVE154SYSACTIVE156ACTIVE15

在第二个会话仍然执行上面的查询: 

SQL2>SELECTSID,USERNAME,STATUSFROMV$SESSION;
  SIDUSERNAMESTATUS
  ------------------------------------------------
  143YANGTKACTIVE
  145ACTIVE
  147ACTIVE
  149ACTIVE
  154SYSACTIVE
  156ACTIVE
  157ACTIVE
  160ACTIVE
  161ACTIVE
  162ACTIVE
  163ACTIVE
  164ACTIVE
  165ACTIVE
  166ACTIVE
  167ACTIVE
  168ACTIVE
  169ACTIVE
  170ACTIVE

已选择18行。

查询完成后,会话1的过程才执行完成:

PL/SQL 过程已成功完成。

从这一点上看,没有看到自治事务产生额外的会话。下面再次执行P_AUTO过程,并在过程的执行过程中查询V$LOCK视图,检查产生锁的会话: 

SQL2>SELECTSID,TYPE,ID1,ID2,LMODE,REQUEST,CTIME
  2FROMV$LOCK;
  SIDTYID1ID2LMODEREQUESTCTIME
  --------------------------------------------------------------
  165XR40100
  165CF002010333
  167PW103010320
  165RS2512010330
  166RT106010330
  167MR104010324
  167MR204010324
  167MR304010324
  167MR504010324
  167MR604010324
  167MR704010324
  167MR804010324
  167MR20104010324
  164TS313010309
  143TM574480303
  143TX1966215748603

已选择16行。

SQL2>COLOBJECT_NAMEFORMATA30
  SQL2>SELECTOWNER,OBJECT_NAME,OBJECT_TYPE
  2FROMDBA_OBJECTS
  3WHEREOBJECT_ID=57448;
  OWNEROBJECT_NAMEOBJECT_TYPE
  -----------------------------------------------------------------------
  YANGTKT_AUTO_TRANSTABLE

根据上面两个查询可以看到,自治事务仍然和主事务处于同一个事务之中,为了更好的说明问题,在执行P_AUTO过程先,对T_AUTO_TRANS插入一条数据:

SQL>INSERTINTOT_AUTO_TRANSVALUES(1,'TEST');

已创建 1 行。

SQL>EXECP_AUTO

PL/SQL 过程已成功完成。

在P_AUTO的执行过程中,再次查询V$LOCK:

SQL2>SELECTSID,TYPE,ID1,ID2,LMODE,REQUEST,CTIME
  2FROMV$LOCK;
  SIDTYID1ID2LMODEREQUESTCTIME
  --------------------------------------------------------------
  165XR40100
  165CF002010643
  167PW103010630
  165RS2512010640
  166RT106010640
  167MR104010634
  167MR204010634
  167MR304010634
  167MR504010634
  167MR604010634
  167MR704010634
  167MR804010634
  167MR20104010634
  164TS313010619
  143TM5744803010
  143TM574480307
  143TX26214645286010
  143TX5898585879607

已选择18行。

这里可以清楚的看到,SID为143的会话同时对应两个事务。因此上文所说的自治事务更像是在单独的会话中执行只是一个比喻,实际上自治事务仍然和主事务处于同一个会话中。

上一页  1 2 

Tags:小议 Oracle 自治

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接