天天看點

查詢01_DML鎖和DDL鎖的處理

查詢01_DML鎖和DDL鎖的處理

一、摘要

Oracle的手冊上關于鎖的分類說明如下:

1. DML鎖:Date

lock。執行DML時保護資料的鎖。Row

Lock(TX)保護特定行,Table

Lock(TM)保護整個表,可以通過dba_kml_locks觀察。

2. DDL鎖:Data

dictionary lock。保護User/Table/View/Procedure等定義,可以通過dba_ddl_locks觀察。

實際上,DML鎖和DDL鎖隻是為了合理配置設定鎖而賦予的名稱,請注意這點。

DML鎖實際上與TM鎖一緻,DML鎖可以通過dba_dml_locks視圖觀察,這個視圖的作用是從V$lock視圖上篩選出鎖類型為TM的。

資料庫上允許的TM鎖數量,可以利用DML_LOCKS參數指定。若将DML_LOCKS參數設定為0,則對表無法獲得TM鎖。

這時,oracle為了保障表定義被保護,對于表根本上不允許DDL操作。

是以,即便不獲得TM鎖,也允許修改該表的特定行。

如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鎖。

查詢01_DML鎖和DDL鎖的處理

二、監控DDL和DML鎖

1. DBA_DML_LOCKS視圖在v$locks視圖上隻選出TM鎖并加工得到的;

2. DBA_DDL_LOCKS視圖是加工X$KGLLK視圖得到的;

Thanks and Regards

2016-03-25 Created By BaoXinjian

查詢01_DML鎖和DDL鎖的處理

<a href="http://www.wiz.cn/i/3d838de3">來自為知筆記(Wiz)</a>

<b>ERP技術讨論群: 288307890</b>

<b>技術交流,技術讨論,歡迎加入</b>

<b>Technology Blog Created By Oracle ERP - 鮑建立</b>