DML操作Oracle在內部實現

來源:互聯網
上載者:User

對與DML操作Oracle在內部按如下順序執行:
1,相應事務分配復原段(undo segment).
2,分配復原段後,在復原段頭上建立事務表slot(transaction table slot).
3.建立事務表後會生出TXID(TransactionID),再將TXID分配給當前事務。這個值指向分給事務的復原段頭上存在的事務表的準確位置。
4.事務對象的資料區塊載入到高速緩衝區,在塊頭的ITL(Intersted transaction list)上登記事務條目。
如果itl上沒有所需空間,就會發生等待enq:TX-allocate ITL entry。
5.將需要修改的塊的修改資訊儲存到PGA,儲存的方式是change vector,之後進程將PGA中的change vector以redo record複製到重做緩衝區。
6.將之前映像資訊記錄到撤銷塊,繼而修改資料區塊,被修改的資料區塊變為髒狀態。而且在高速緩衝區中建立以修改的資料區塊的CR塊。
7.執行commit後給事務分配SCN,提交資訊儲存在重做緩衝區。
8.復原段頭的事務表中儲存已成功提交的資訊,結束包括TX鎖在內的所有資源佔有。
9.重做緩衝區的內容記錄在重做記錄檔上。
下面通過轉儲來探究一下這個過程:

  1. 會話1  
  2. SQL> update emp set sal=sal+100 where rownum=1;  
  3.   
  4.  1 rows updated.  
  5. 獲得已執行update行位置  
  6. SQL> select rowid,dbms_rowid.rowid_relative_fno(rowid) as fno,  
  7.   2  dbms_rowid.rowid_block_number(rowid) as blkno  
  8.   3  from emp where rownum=1;  
  9.   
  10. ROWID                     FNO      BLKNO  
  11. ------------------ ---------- ----------  
  12. AAAQ+LAAEAAAAAfAAA          4         31  
  13.   
  14. file number是4,block number是31,dump 這個block。  
  15.   
  16. SQL> alter system dump datafile 4 block 31;  
  17.   
  18. System altered.  
  19. SQL> l     
  20.   1  SELECT    a.VALUE  
  21.   2         || b.symbol  
  22.   3         || c.instance_name  
  23.   4         || '_ora_'  
  24.   5         || d.spid  
  25.   6         || '.trc' trace_file  
  26.   7    FROM (SELECT VALUE  
  27.   8            FROM v$parameter  
  28.   9           WHERE NAME = 'user_dump_dest') a,  
  29.  10         (SELECT SUBSTR (VALUE, -6, 1) symbol  
  30.  11            FROM v$parameter  
  31.  12           WHERE NAME = 'user_dump_dest') b,  
  32.  13         (SELECT instance_name  
  33.  14            FROM v$instance) c,  
  34.  15         (SELECT spid  
  35.  16            FROM v$session s, v$process p, v$mystat m  
  36.  17*          WHERE s.paddr = p.addr AND s.SID = m.SID AND m.statistic# = 0) d  
  37. SQL> /  
  38.   
  39. TRACE_FILE  
  40. --------------------------------------------------------------------  
  41. /opt/app/oracle/diag/rdbms/liqian/liqian/trace/liqian_ora_4118.trc  
  • 1
  • 2
  • 3
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.