事務及事務操作

1、 什麼是事務

事務是用於保證數據的一致性,它由一組相關的DML語句組成,該組的DML語句要麼全部成功,要麼全部失敗。如:網上轉賬……

2、 事務和鎖

當執行事務操作(dml語句)時,oracle會在被作用的表上加鎖,防止其他用戶改變表的結構,這點對我們用戶來講是很重要的。

3、 保存點和回退事務

保存點是事務中的一點,用於取消部分事務,當結束事務時,會自動的刪除該事務定義的所有保存點,當執行rollback時,通過指定保存點可以回退到指定的點。

4、 提交事務

使用commit語句可以提交事務,當執行了commit語句後,會確認事務的變化、結束事務、刪除保存點、釋放鎖、當使用commit語句結束事務後,其它會話將可以查看到事務變化後的新數據。

5、 如何在Java中操作事務呢

其實很簡單,oracle是默認自動提交事務的,那麼我們只要在執行事務語句之前取消自動提交,執行事務的語句過後再手動提交就可以了

假設我這有一個Connection對象的實例conn,調用這個函數:

conn.setAutoCommit(false);就可以取消自動提交了,然後我們執行一系列的中間不能打斷的DML語句,完了再在最後加上這麼一句:conn.commit();就可以了,如果一旦發生異常,在catch語句塊中加上conn.rollback();就OK了。

6、 只讀事務

只讀事務是指只允許執行查詢的操作,而不允許執行任何其它DML操作的事務,使用只讀事務可以確保用戶只能取得某時間點的數據。假定機票代售點每天18點統計今天的銷售情況,這時可以使用只讀事務,在設置了只讀事務後,儘管其它會話可能會提交新的事務,但是隻讀事務將不會取得最新數據的變化,從而可以保證取得特定時間點的數據信息。

7、 設置只讀事務

Set transaction read only

 

Oracle的一個事務是以第一個可執行的SQL語句開始,當下列事件之一發生時結束。

用戶執行了commit語句(提交)

用戶執行了rollback語句(回滾)

用戶執行了DDL語句(該類型的語句是自動提交)

用戶執行了DCL語句(該類型的語句是自動提交)

用戶正常退出SQL*PLUS(自動提交)

用戶非正常退出SQL*PLUS(自動回滾)

系統崩潰,包括硬件或軟件故障(自動回滾)

其中,直接單擊SQL*PLUS窗口的關閉按鈕屬於非正常退出。

     單獨或結合使用disconn 或exit 命令屬於正常退出。

 

 

Set autocommit on/off   開啓或關閉自動提交功能

 

注:

在進行事務處理中,oracle數據庫系統採取了這樣一種方式:即有人對數據庫進行讀寫操作(即DML操作)時,Oracle系統是允許其他人進行對數據庫進行讀操作的。這是因爲Oracle有一個或多個稱爲回滾段的磁盤區,當有人對數據庫中的數據進行任何寫操作(DML操作)時,Oracle數據庫首先將原始的數據複製到回滾段中,之後才做相應的操作,在事務處理結束之前其他的用戶可以讀這些數據,但讀的是回滾段上的數據。

 

所以對於要刪除大量的數據行的操作時,儘量用truncate語句而不要用delete語句,因爲truncate語句屬於DDL 語句,不需要使用回滾段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章