1. 程式人生 > >事務原理及流程,儲存點的使用

事務原理及流程,儲存點的使用

一、事務概述 :
1.事務由一系列的相關的sql語句組成的最小邏輯工作單元 
2.oracle以事務為單位來處理資料,保證資料的一致性 
3.如果對事務進行提交,該事物的所有sql語句操作都會提交,成為資料庫的永久組成部分 
4.如果事務遇到錯誤而被取消或者回滾,事務的所有sql語句操作都會被清除,資料庫恢復到事務執行前的狀態。 
5.一個事務的所有sql語句要麼全部被執行,要麼全部沒有執行

二、事務特性acid 
一組sql語句要成為事務,必須滿足以下特性 
1.原子性a 
事務是不可分割的原子工作單元;對資料的資料修改,要麼全部執行,要不全部都不執行。 
2.一致性c 
事務完成時,必須使所有的資料保持一致。在相關資料庫中,所有的規則都必須應用於事務的修改,以保持資料的完整性。事務結束時候,所有的內部資料結構(B樹索引或者雙向連結串列)都必須正確 
3.隔離性i 
由併發事務所做的修改必須與其他併發事務所做的修改隔離 
4.永續性d 
事務完成後,對系統的影響是永久性的

三、提交事務 
提交事務表示該事務中對資料庫所做的全部操作都將永久記錄在資料庫中。

提交事務commit語句,標誌一個成功的隱性事務或者顯性事務的結束.

執行commit語句資料庫會做的動作 
1.在回退段內的事務表中記錄這個事務已經提交,並生成一個唯一的系統改變號scn,並將該scn值儲存到事務表中,用於唯一標識這個事務 
2.啟動lgwr後臺程序,將sga區中快取的重做記錄寫到聯機重做日誌檔案,並且將該事物scn值也儲存到日誌檔案中 
3.oracle伺服器程序釋放事務處理所使用的資源 
4.通知使用者事務已經提交

四、回滾事務

rollback 【to savepoint savepointName】   (已提交的事物不能回滾)  **********
回滾事務表示該事務對資料庫的所有操作都將取消 
語句 
rollback 表示將事務回滾到事務的起點或者事務的某個儲存點

回滾事務,oracle會做的動作 
1.oracle通過回退段中的資料撤銷事務中所有的sql語句對資料庫所做的任何操作 
2.oracle伺服器程序事務使用的所有資源 
3.通知使用者事務回滾成功

五、儲存點 
在事務的處理過程中,如果發生錯誤並且使用rollback進行回滾 ,那麼整個事務對資料庫的操作都將被撤銷,在一個龐大的事務中,這是很浪費資源的,比如事務前半部分是正確的,事務的後半部分是錯誤的,那麼我想回滾到前半部分結束位置,這時就可以使用儲存點

一個事實可以建立多個儲存點,將事務分割成一系列的部分.事務回滾就可以回滾到其中的某個儲存點上

語法 
savepoint 【savepointName】 
savepointName:儲存點的名字