1、V$LOCK視圖結構
列名 | 類型 | 字段說明 |
ADDR | RAW(4 | 8) | Address of lock state object |
KADDR | RAW(4|8) | Address of lock |
SID | NUMBER | 會話的sid,可以和v$session 關聯 |
TYPE | VARCHAR2(2) | 區分該鎖保護對象的類型(表4) TM – DML enqueue TX – Transaction enqueue UL – User supplied –我們主要關注TX和TM兩種類型的鎖 –UL鎖用戶自己定義的,一般很少會定義,基本不用關注 –其它均爲系統鎖,會很快自動釋放,不用關注 |
ID1 ID2 |
NUMBER | ID1,ID2的取值含義根據type的取值而有所不同 對於TM 鎖 ID1表示被鎖定表的object_id 可以和dba_objects視圖關聯取得具體表信息,ID2 值爲0 對於TX 鎖 ID1以十進制數值表示該事務所佔用的回滾段號和事務槽slot number號,其組形式: 0xRRRRSSSS,RRRR=RBS/UNDO NUMBER,SSSS=SLOT NUMBER ID2 以十進制數值表示環繞wrap的次數,即事務槽被重用的次數 |
LMODE | NUMBER |
|
REQUEST | NUMBER | 同LMODE –大於0時,表示當前會話被阻塞,其它會話佔有改鎖的模式 |
CTIME | NUMBER |
|
BLOCK | NUMBER |
|
2、其它相關視圖說明
視圖名 | 描述 | 主要字段說明 |
v$session | 查詢會話的信息和鎖的信息。 | sid,serial#:表示會話信息。 program:表示會話的應用程序信息。 row_wait_obj#:表示等待的對象,和dba_objects中的object_id相對應。 lockwait :該會話等待的鎖的地址,與v$lock的kaddr對應. |
v$session_wait | 查詢等待的會話信息。 | sid:表示持有鎖的會話信息。 Seconds_in_wait:表示等待持續的時間信息 Event:表示會話等待的事件,鎖等於enqueue |
dba_locks | 對v$lock的格式化視圖。 | Session_id:和v$lock中的Sid對應。 Lock_type:和v$lock中的type對應。 Lock_ID1: 和v$lock中的ID1對應。 Mode_held,mode_requested:和v$lock中的lmode,request相對應。 |
v$locked_object | 只包含DML的鎖信息,包括回滾段和會話信息。 | Xidusn,xidslot,xidsqn:表示回滾段信息。和v$transaction相關聯。 Object_id:表示被鎖對象標識。 Session_id:表示持有鎖的會話信息。 Locked_mode:表示會話等待的鎖模式的信息,和v$lock中的lmode一致。 |
表3
鎖模式 | 鎖描述 | 解釋 | SQL操作 |
0 | none | ||
1 | NULL | 空 | Select |
2 | SS(Row-S) | 行級共享鎖,其他對象只能查詢這些數據行 | Select for update Lock for update Lock row share |
3 | SX(Row-X) | 行級排它鎖,在提交前不允許做DML操作 | Insert/update/Delete Lock row share |
4 | S(Share) | 共享鎖 | Create index Lock share |
5 | SSX(S/Row-X) | 共享行級排它鎖 | Lock share row exclusive |
6 | X(Exclusive) | 排它鎖 | Alter table Drop able Drop index Truncate table Lock exclusive |
表4
System Type | Description | System Type | Description |
BL | Buffer hash table instance | NA..NZ | Library cache pin instance (A..Z = namespace) |
CF | Control file schema global enqueue | PF | Password File |
CI | Cross-instance function invocation instance | PI, PS | Parallel operation |
CU | Cursor bind | PR | Process startup |
DF | datafile instance | QA..QZ | Row cache instance (A..Z = cache) |
DL | Direct loader parallel index create | RT | Redo thread global enqueue |
DM | Mount/startup db primary/secondary instance | SC | System change number instance |
DR | Distributed recovery process | SM | SMON |
DX | Distributed transaction entry | SN | Sequence number instance |
FS | File set | SQ | Sequence number enqueue |
HW | Space management operations on a specific segment | SS | Sort segment |
IN | Instance number | ST | Space transaction enqueue |
IR | Instance recovery serialization global enqueue | SV | Sequence number value |
IS | Instance state | TA | Generic enqueue |
IV | Library cache invalidation instance | TS | Temporary segment enqueue (ID2=0) |
JQ | Job queue | TS | New block allocation enqueue (ID2=1) |
KK | Thread kick | TT | Temporary table enqueue |
LA .. LP | Library cache lock instance lock (A..P = namespace) | UN | User name |
MM | Mount definition global enqueue | US | Undo segment DDL |
MR | Media recovery | WL | Being-written redo log instance |