oracle事務

tianya_2011發表於2012-07-16
一,事務的定義:
    事務用於保證資料的一致性,它由一組相關的dml語句組成,該組的dml語句要麼全部成功,要麼全部失敗。
    經典案例:銀行轉賬。
 
二,事務的特性(ACID): 
    1、原子性 (Atomicity)    
       事務的原子性是指事務中包含的所有操作要麼全做,要麼不做 , 也就是說所有的活動在資料庫中要麼全部反映 ,    要麼全部不反映 , 以保證資料庫的一致性。
    2、一致性 (Consistency)
       事務的一致性是指資料庫在事務操作前和事務處理後 , 其中資料必須滿足業務的規則約束。
     3、隔離性 (Isolation)
       隔離性是指資料庫允許多個併發的事務同時對其中的資料進行讀寫或修改的能力 , 隔離性可以防止多個事務的併發執行時 , 由於它們的操作命令交叉執行而導致資料的不一致性。
     4、永續性 (durability)
       事務的永續性是指在事務處理結束後 , 它對資料的修改應該是永久的。即便是系統在遇到故障的情況下也不會丟失 , 這是資料的重要性決定的。
 
三,事務與鎖:
   當執行事務操作時(DML語句),oracle會在被修改的表上加鎖,防止其他使用者修改表的結構,這對我們使用者來說
 是非常重要的。
 
四,事務的回滾與提交:
      1,顯式提交
      1) commit:用於提交事務,當執行commit語句之後,會確認事務的變化,結束事務,刪除儲存點,釋放鎖。
               當使用commit語句結束事務以後,其他回話可以查詢到事務變化後的新資料。
      2)rollback:取消事務的全部操作,恢復到事務開始前的狀態。
      3)savepoint 儲存點名稱;      //建立一個儲存點
         rollback to 儲存點名稱;   //回滾到儲存點
      2,隱式資料提交:
          下列命令是隱式提交命令:
          Create, Alter, Drop, Connect, Disconnect, Grant, Revoke, Rename, Exit, Quit, Audit, NoAudit
     3.,自動資料提交:
          SQL> set autocommit on //開啟自動資料提交開關
          SQL> set autocommit off //關閉自動資料提交開關(預設)
 
五,事務的隔離級別:
   
    1,只讀事務:只讀事務是指只允許執行查詢的操作,而不允許執行任何其他dml操作的事務,使用只讀事務可以確保使用者只能
              取得某時間點的資料。
    設定只讀事務:
    Set transaction read only
   
    2,可讀寫事務:Read write 是預設設定 , 該選項表示在事務中可以有查詢和修改的操作語句。
    設定可讀寫事務:
    Set transaction read write
   
    3,提交讀事務:這種隔離級別指的是,事務只能讀取已經提交的資料,(但是支援可重複讀與幻想讀)是oracle資料庫預設的隔離模式。
    設定提交讀事務:
    Set transaction isolation level read committed
   
    4,序列事務:設定為序列事務時 , 事務與事務之間完全隔開 , 事務以序列的方式執行 , 這並不是說一個事務必須結束才能啟
              動另外一個事務 , 而是說這些事務的執行的結果與一次執行的事務的結果一致,相當於把多個事務當做一個事務。
    設定序列事務:
    Set transaction isolation level serializable     
    注意:這些語句是互斥的,即不能夠同時設定兩個或者兩個以上的選項。
 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25373498/viewspace-741473/,如需轉載,請註明出處,否則將追究法律責任。

相關文章