程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 我的第一貼: 小試牛刀, Oracle的Transaction

我的第一貼: 小試牛刀, Oracle的Transaction

編輯:Oracle數據庫基礎
What did oracle do when transaction happens? (from Oracle reference book,翻譯+個人理解)
1.       Transaction 發生在第一個可執行的SQL (DML or DDL).
2.       Transaction 開始後, Oracle:分配可用的undo tablespace rollback segment來記錄回滾的入口 (新的transaction發生).
3.       Transaction何時結束?
a)         Commit or rollback 語句 (注意: 單字的rollback only).
b)         DDL語句結束 (create, alter, drop etc).
c)         用戶斷開連接. Oracle會自動提交( 設置auto commit參數)
d)         用戶進程異常中止. (強制)
4.       Commit transaction,
a)         在修改的數據commit之前, Oracle
                         i.              SGA的存儲rollback segment數據緩沖區中 (block buffer cache)生成了rollback segment.rollback信息包含了transactionSQL所改變的舊數據 (快照).
                       ii.              SGAredo log buffer中生成了redo log entrIEs. Redo log的記錄包含了數據塊和回滾塊的變化.
                      iii.              這些變化會被存儲到SGA的數據緩沖區 (data buffer), 在提交之前可能會寫入磁盤 (DBWn 進程和Buffer cache設置以及LRU算法決定何時去寫).
b)         在數據commit, Oracle
                         i.              相關聯的rollback segment會記錄提交事件, Oracle分配SCN並記錄.
                       ii.              LGWR進程會將redo logentrIEs (SGA redo log buffer)寫入online redo log file, 同時將SCN寫入.
                      iii.              Oracle釋放行級或者表級鎖.
                      iv.              Oracle標記該transaction結束.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved