oracle
中的鎖:
鎖是資料庫用來控制共享資源併發訪問的機制。
鎖用於保護正在被修改的資料
直到提交或回滾了事務之後,其他使用者才可以更新資料
鎖的特性:
一致性
一次只允許乙個使用者修改資料
完整性
為所有使用者提供正確的資料。如果乙個使用者進行了修改並儲存,所做的修改將反映給所有使用者
並行性
允許多個使用者訪問同一資料
當oracle 執行dml語句時,系統自動在所要操作的表上申請tm型別的鎖。當tm鎖獲得後,系統再自動申請tx型別的鎖,並將實際鎖定的資料行的鎖標誌位進行置位。這樣在事務加鎖前檢查tx鎖相容性時就不用再逐行檢查鎖標誌,而只需檢查tm鎖模式的相容性即可,大大提高了系統的效率。tm鎖包括了ss、sx、s、x 等多種模式,在資料庫中用0-6來表示。不同的sql操作產生不同型別的tm鎖。
在資料行上只有x鎖(排他鎖)。在 oracle資料庫中,當乙個事務首次發起乙個dml語句時就獲得乙個tx鎖,該鎖保持到事務被提交或回滾。當兩個或多個會話在表的同一條記錄上執行 dml語句時,第乙個會話在該條記錄上加鎖,其他的會話處於等待狀態。當第乙個會話提交後,tx鎖被釋放,其他會話才可以加鎖。
行級鎖
對正在被修改的行進行鎖定,其他使用者可以訪問除被鎖定的行以外的行
在使用insert
, delete
, update
, select…for
upadte
語句時,
oracle
會自動應用行級鎖
select…for update
語句允許使用者一次鎖定多條記錄進行更新,可以限制使用者等待的時間及防止無限期等待
使用者必須通過
commit
或 rollback
語句釋放鎖
表級鎖將整個表鎖定
lock table
表名 in share mode;
資料庫鎖的型別
資料庫鎖的型別 鎖的型別 tyep 列值,rid 和 key 的話,表示鎖在行上 有如下幾種 rid 表中單個行的鎖,由行識別符號 rid 標識。key 索引內保護可序列事務中一系列鍵的鎖。pag 資料頁或索引頁的鎖。ext 對某區的鎖。tab 整個表 包括所有資料和索引 的鎖。db 資料庫的鎖。f...
檢視oracle資料庫鎖
方法一 檢視產生鎖的程序id 在資料庫伺服器上 主機 如應用伺服器 等等 select s.machine sourse host,p.spid pid,l.session id sid,s.serial l.locked mode,l.oracle username,s.user l.os use...
oracle資料庫鎖的概念
為了確保併發使用者在訪問同一資料庫物件時的正確性 即無丟失修改 可重複讀 不讀 髒 資料 資料庫中引入了鎖機制。基本的鎖型別有兩種 排它鎖 exclusive locks 記 為x 鎖 和共享鎖 share locks記為 s鎖 排它鎖 若事務t對資料d加x鎖,則其它任何事務都不能再對d加任何型別的...