Lock(一)认识v$LOCK

时间:2021-10-31 03:49:03

v$lock列出了数据库当前拥有的锁及未完成的锁请求。

Column Description
ADDR 被锁对象的地址
KADDR 锁的地址
SID session id(这里特指正在锁定对象或请求去锁定对象的session id)
TYPE 使用的锁的类型,主要包含两大类,用户类型的锁及系统类型的锁
(1)用户类型的锁由用户的应用程序获得,任何阻塞其他进程的进程都可能持有这些锁,用户类型的锁有:
    --TM:表锁或DML锁
    --TX:行锁或事物锁
    --UL:用户提供的锁
(2)系统类型的锁见”table1. system type locks“,这里只介绍常用的系统锁,如何要查看所有的锁,可以查看v$lock_type。
ID1/ID2 取值根据所的类型的不同也有所不同
(1)对于TM锁,ID1表示被锁定的object_id,可以和dba_object连接获得锁定的对象,ID2为0;
(2)对于TX锁,这两个字段构成了事物在回滚段中的位置。
LMODE session保持的锁的模式
--0:none
--1:null(NULL)
--2:row-S(SS,行级共享锁,其它session只能查询这些数据行。SQL操作有select for update、lock for update、lock row share)
--3:row-X(SX,行级排它锁,在提交前不允许做DML操作。SQL操作有insert、update、delete、lock row share)
--4:share(S,共享锁。SQL操作有create index,lock share)
--5:S/Row-X(SSX,共享行级排它锁。SQL操作有lock share row exclusive)
--6:exclusive(X,排它锁。SQL操作有alter table、drop table、drop index、truncate table、lock exclusive等DDL操作)
REQUEST 进程请求的锁的模式
--0:none
--1:null(NULL)
--2:row-S(SS)
--3:row-X(SX)
--4:share(S)
--5:S/Row-X(SSX)
--6:exclusive(X)
CTIME

自当前模式被授予的时间

BLOCK 指定该所是否阻塞其它进程,可能的取值有
--0:该锁未阻塞其他进程
--1:该锁正在阻塞其它进程
--2:该锁没有阻塞本地节点的任何进程,但是他可能会阻塞远程节点上的进程。此值仅用于Oracle RAC配置,不配置在但节点数据库中

Table 8-1 Values for the TYPE Column: System Types

System Type Description System Type Description

AE

Edition enqueue

MR

Media recovery

AT

Lock held for the ALTER TABLE statement

NA..NZ

Library cache pin instance (A..Z = namespace)

BL

Buffer hash table instance

PF

Password File

CF

Control file schema global enqueue

PI, PS

Parallel operation

CI

Cross-instance function invocation instance

PR

Process startup

CU

Cursor bind

QA..QZ

Row cache instance (A..Z = cache)

DF

datafile instance

RT

Redo thread global enqueue

DL

Direct loader parallel index create

SC

System change number instance

DM

Mount/startup db primary/secondary instance

SM

SMON

DR

Distributed recovery process

SN

Sequence number instance

DX

Distributed transaction entry

SQ

Sequence number enqueue

FS

File set

SS

Sort segment

HW

Space management operations on a specific segment

ST

Space transaction enqueue

IN

Instance number

SV

Sequence number value

IR

Instance recovery serialization global enqueue

TA

Generic enqueue

IS

Instance state

TS

Temporary segment enqueue (ID2=0)

IV

Library cache invalidation instance

TS

New block allocation enqueue (ID2=1)

JQ

Job queue

TT

Temporary table enqueue

KK

Thread kick

UN

User name

LA .. LP

Library cache lock instance lock (A..P = namespace)

US

Undo segment DDL

MM

Mount definition global enqueue

WL

Being-written redo log instance