Oracle 事務處理

  事務是又一系列語句構成的邏輯工做單元,一般是爲了完成必定業務邏輯而將一條或者多條語句 「封裝」 起來,使它們與其餘語句之間出現一個邏輯上的便捷,並造成相對獨立的一個工做單元。數據庫

  1、事務概述

    當使用事務修改多個數據表時,若是在處理的過程當中出現了某種錯誤,例如系統死機或者出現其餘等狀況,則返回結果是所有數據均沒有被保存。安全

    對事務處理的結果只有兩種:服務器

      一種是在事務處理的過程當中,若是發生了某種錯誤則整個事務所有回滾,使全部對數據的修改所有撤銷,事務對數據庫的操做是單步執行的,當遇到錯誤時能夠隨時地回滾;併發

      另外一種是若是沒有發生任何錯誤且每一步的執行都成功,則整個事務所有被提交。spa

    從而能夠看出,有效地使用事務不但能夠提升數據的安全性,並且還能夠加強數據的處理效率。日誌

    事務包含 4 種重要的屬性,被統稱爲 ACID (原子性、一致性、隔離性和持久性),一個事務必須經過 ACID。進程

    (1)原子性(Atomic):  事務是一個總體的工做單元,事務對數據庫所作的操做要麼所有執行,要麼所有取消。假如某條語句執行失敗,則全部語句所有回滾。事務

    (2)一致性(ConDemoltent):  事務在完成時,必須使全部的數據都保持一致狀態。在相關的數據庫中,全部規則都必須應用於事務的修改,以保持全部數據的完整性。若是事務成功,則全部數                                                                   據將變成一個新的狀態;若是事務失敗,則全部數據將處於開始以前的狀態
資源

    (3)隔離性(Isolated):   由事務所做的修改必須與其餘事務所做的修改隔離。事務查看數據時數據所處的狀態,要麼是另外一併發事務修改它以前的狀態,要麼是另外一事務修改它以後的狀態,事務                                                          不會查看中間狀態的數據。it

    (4)持久性(Durability):  當事務提交後,對數據庫所作的修改就會永久保存下來。

 

 

  2、操做事務

    Oracle 11g 中的事務是隱式自動開始的,它不須要用戶顯示地執行開始事務語句。但對於事務的結束處理,則須要用戶進行指定的操做,一般在如下狀況時, Oracle 認爲一個事務結束了。

    (1) 執行 commit 語句提交事務。

    (2) 執行 rollback  語句撤銷事務。

    (3) 執行一條數據定義語句,若是 create、drop 和 alter 等語句。若是該語句執行成功,那麼 Oracle 系統會自動執行 commit 命令;不然, Oracle 系統會自動執行 rollback 命令。

    (4) 執行一個數據控制語句,好比 grant、revoke 等控制命令,這種操做執行完畢, Oracle 系統會自動執行 commit 命令。

    (5) 正常地斷開數據庫的鏈接、正常地退出 SQL*Plus 環境,則 Oracle 系統會自動執行 commit 命令;不然, Oracle 系統會自動執行 rollback 命令。

    總結: Oracle 結束一個是事務歸根結底是那麼執行 commit 命令,要麼執行 rollback 命令。

    一、提交事務(commit語句)

     提交事務是指把堆數據庫進行的所有操做持久性地保存到數據庫中,這種操做使用 commit 語句來完成。在使用該語句提交事務時,Oracle 系統內部會安裝以下順序進行處理。

    (1)在回滾段內記錄當前事務以提交,而且聲稱一個惟一的系統編號(SCN),而且聲稱一個惟一的系統編號(SCN),以惟一表示這個事務。

    (2)啓動後臺的日誌文件寫入程序(LGWR),將 SGA 區的重作日誌緩衝區中的數據和當前事務的 SCN寫入重作日誌文件中。

    (3) Oracle 服務器開始釋放事務處理所使用的系統資源。

    (4) 顯示通知,告訴用戶事務以及成功提交。

    二、回滾事務(Rollback語句)

      回滾事務是指撤銷對數據庫進行的所有操做,Oracle 利用回滾段來存儲修改前的數據,經過重作日誌來記錄對數據所作的修改。若是要回滾整個事務,Oracle 系統內部將會執行以下操做:

    (1)使用回滾段中的數據撤銷對數據庫所作的修改。

    (2)Oracle 後臺服務進程釋放掉事務所使用的系統資源。

    (3)顯示通知,告訴用戶事務成功回滾。

     Oracle 不只容許回滾整個未提交的事務,還容許回滾事務的一部分,能夠經過設置「保存點」 來完成。在事務的執行過程當中,用戶能夠經過創建保存點講一個較長的失誤分隔爲幾部分。這樣用戶就能夠有選擇地回滾到某個保                 存點,而且該保存點以後的操做都將被取消。

相關文章
相關標籤/搜索