1、摘要
數據庫
Oracle的手冊上關於鎖的分類說明以下:
oracle
1. DML鎖:Date lock。執行DML時保護數據的鎖。Row Lock(TX)保護特定行,Table Lock(TM)保護整個表,能夠經過dba_kml_locks觀察。spa
2. DDL鎖:Data dictionary lock。保護User/Table/View/Procedure等定義,能夠經過dba_ddl_locks觀察。
實際上,DML鎖和DDL鎖只是爲了合理分配鎖而賦予的名稱,請注意這點。
orm
DML鎖實際上與TM鎖一致,DML鎖能夠經過dba_dml_locks視圖觀察,這個視圖的做用是從V$lock視圖上篩選出鎖類型爲TM的。blog
數據庫上容許的TM鎖數量,能夠利用DML_LOCKS參數指定。若將DML_LOCKS參數設置爲0,則對錶沒法得到TM鎖。資源
這時,oracle爲了保障表定義被保護,對於表根本上不容許DDL操做。rem
因此,即使不得到TM鎖,也容許修改該表的特定行。get
如OPS環境下,爲了減小在全局範圍內得到TM鎖過程當中發生的附加資源消耗,有時也將DML_LOCKS值修改成0。
DDL鎖實際上與library cache lock 一致。
DDL鎖能夠經過DBA_DDL_LOCKS視圖觀察,這個視圖世界上起到加工X$KGLLK視圖後顯示的做用。
DDL鎖除了DBA_DDL_LOCKS視圖以外,還能夠經過X$KGLLK,DBA_KGLLOCK等視圖觀察。
對於表,普通DML語句以Sub-Exclusive(SX)模式得到TM鎖。Sub-exclusive模式之間存在共享性,因此多個會話能夠對形同的表執行DML。
已執行DML的會話對於表,以Sub-Exclusive莫侯斯得到TM鎖,對於已修改的數據Exclusive模式得到TX鎖。
2、監控DDL和DML鎖
1. DBA_DML_LOCKS視圖在v$locks視圖上只選出TM鎖並加工獲得的;
2. DBA_DDL_LOCKS視圖是加工X$KGLLK視圖獲得的;
Thanks and Regards
2016-03-25 Created By BaoXinjian