oracle如何保證事務的ACID原則--oracle核心技術讀書筆記二,acid--oracle

來源:互聯網
上載者:User

oracle如何保證事務的ACID原則--oracle核心技術讀書筆記二,acid--oracle

          在事務中有四個通用的原則是所有資料庫都必須遵守的,簡稱ACID原則,下面簡單概述一下oracle是怎樣實現這四個原則的。


         一. 原子性(Atomicity):一個事務要麼全部執行,要麼全部都不執行

         在oracle中,當我們做一次變更的時候,系統會自動建立一條undo記錄來描述怎樣撤銷這次變更。也就是說,當執行到一個事務的中間時,如果有其他使用者想訪問我們更改過的資料,他必須使用undo記錄來查看變更前的舊資料,即只有當我們提交這個事務後,所做的更改才能被他人看到。這樣就可以確保,其他使用者要麼能看到我們所做的更改,要麼什麼更改都看不到。另外一種情況,如果我們這個事務失敗,我們也可以根據undo裡面的資訊將我們所做的修改回退。保證要麼全部成功,要麼全部失敗。


         二.  一致性(Consistency):一個事務的運行並不改變資料庫中資料的一致性

          假設一個事務需要進行3種更新操作,某一時刻執行成功了2種更新操作。這個時候資料庫中的資料不是一致性的狀態,因為還有第三種更新操作沒有執行。假如這個時候,別人看到了我們執行成功的2種更新操作後的結果,那就破壞了資料的一致性。oracle中由於undo的存在,其他使用者無法看到事務的增量應用(也就是執行成功的2種更新操作),也就是無法看到這個不合法的臨時狀態。他們要麼看到老狀態,要麼看到新狀態,沒有中間態。


         三.  獨立性(Isolation): 一個事務不能看到另一個沒有提交的事務的執行結果

         從第一點就可以看出,oracle通過undo能保證其他使用者看不到我們事務所做的修改,在我們提交之前。其他事務只能從undo裡面去尋找以前舊版本的資料,而非我們事務改變了的新資料。


         四.  持久性(Durability): 一旦事務成功,資料的修改是永久的 

          該原則突出了oracle重做日誌的優勢。在oracle中,事務一旦提交,oracle就會將重做日誌順序地寫入到重做記錄檔。而不是去磁碟持久化我們這個事務所做的修改。比如,一個事務修改了100條資料,假設這100條資料是隨機在磁碟的不同地方,那一旦事務提交,我們就得花費大量時間去磁碟尋找我們需要修改的資料,並將其修改。oracle沒有這樣做。oracle只是自己產生一系列重做日誌(描述資料的修改),然後順序寫入磁碟的重做記錄檔,寫入成功即代表著這個事務提交成功,即使修改還沒有真正持久化到磁碟。假設這個時候突然斷電,磁碟的資料還沒有修改為正確的資料,但是事務已經成功了,怎麼辦呢。oracle在下次啟動的時候會自動讀取重做記錄檔,將沒有持久化到磁碟的修改,再做一遍,將修改持久化到資料庫,從而保證提交的事務,資料的修改是永遠的。



怎在oracle中開啟一個事務有這樣的命令?當你進入一個會話時你怎知道當前所處的是否在一個事務中?

BeginTrans用於開始一個事物;RollbackTrans用於復原事務;CommitTrans用於提交所有的交易處理結果,即確認事務的處理

BeginTrans和CommitTrans 用於標記事務的開始和結束,在這兩個之間的語句,就是作為交易處理的語句
 
Oracle 9i中怎查看事物,怎查看會話,如果回答的話按順序,先回答事物在回答會話,

select * from v$session;
是查看會話
 

相關文章

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.