本文參考自:ORACLE鎖機制
1、oracle是一個多用戶使用的共享資源,當多個用戶並發的操作同一數據行時,那么在oracle數據庫中就會存在多個事務操作統一數據行的操作,如果不對並發操作進行控制,那么這些事務可能會操作不正確的數據,破壞數據庫的一致性.
2、加鎖是是實現數據庫並發控制的一個非常重要的技術,當事務對某個數據對象進行操作時,大致的過程如下:
a、先向系統發出請求
b、在對數據對象進行加鎖
c、最后進行數據操作,這個過程中當前數據對象只有當前事務(當前會話)可以使用,其他事務都不可以使用,直到當前事務釋放鎖,其他事務才可以操作當前數據對象
3、Oracle基本的鎖類型:
a、排它鎖(Exclusive locks)即X鎖
當數據對象被加上排它鎖之后,其他的事務不能對數據對象進行訪問和修改。
b、共享鎖(Share Locks)即S鎖
當數據對象被加上共享鎖之后,其他的事務可以對數據對象進行訪問,但是不能修改。
數據庫通過這兩種基本的鎖類型對數據庫的事務進行並發控制
4、Oracle鎖類型
根據鎖保護的對象不同,oralce鎖可以分為以下幾種:
a、DML鎖(data locks)數據鎖
b、DDL鎖dictionary locks,字典鎖 用於保護數據庫對象的結構,如表的結構、索引等
c、內部鎖和閂(internal locks and latches),保護 數據庫的內部結構。
5、DML鎖(data locks)數據鎖 介紹
在Oracle數據庫中DML鎖主要是保證並發情況下的數據完整性,DML鎖主要包括TM鎖(表級鎖)和TX鎖(行級鎖或者事務鎖),下面是在Oracle中執行DML語句的加鎖過程
a、系統自動在(DML要操作的表)上申請TM類型的鎖,具體是什么鎖根據操作語句確定