您的位置:首页 > 其它

V$LOCK视图相关知识

2014-07-29 10:01 381 查看
发表于 2011
年 08 月 07 日 由 惜分飞

联系:手机(13429648788) QQ(107644445)

链接:http://www.xifenfei.com/1361.html

标题:V$LOCK视图相关知识

作者:惜分飞©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]

1、V$LOCK视图结构
列名类型字段说明
ADDRRAW(4 | 8)Address of lock state object
KADDRRAW(4|8)Address of lock
SIDNUMBER会话的sid,可以和v$session 关联
TYPEVARCHAR2(2)区分该锁保护对象的类型(表4)

TM – DML enqueue

TX – Transaction enqueue

UL – User supplied

–我们主要关注TX和TM两种类型的锁

–UL锁用户自己定义的,一般很少会定义,基本不用关注

–其它均为系统锁,会很快自动释放,不用关注
ID1

ID2
NUMBERID1,ID2的取值含义根据type的取值而有所不同

对于TM 锁

ID1表示被锁定表的object_id 可以和dba_objects视图关联取得具体表信息,ID2 值为0

对于TX 锁

ID1以十进制数值表示该事务所占用的回滚段号和事务槽slot number号,其组形式:

0xRRRRS
20000
SSS,RRRR=RBS/UNDO NUMBER,SSSS=SLOT NUMBER

ID2 以十进制数值表示环绕wrap的次数,即事务槽被重用的次数
LMODENUMBER0 – none

1 – null (NULL)

2 – row-S (SS)

3 – row-X (SX)

4 – share (S)

5 – S/Row-X (SSX)

6 – exclusive (X)

具体见表3

REQUESTNUMBER同LMODE

–大于0时,表示当前会话被阻塞,其它会话占有改锁的模式
CTIMENUMBER已持有或者等待锁的时间

BLOCKNUMBER是否阻塞其他会话锁申请 1:阻塞 0:不阻塞

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操作
0none
1NULLSelect
2SS(Row-S)行级共享锁,其他对象只能查询这些数据行Select for update

Lock for update

Lock row share
3SX(Row-X)行级排它锁,在提交前不允许做DML操作Insert/update/Delete

Lock row share
4S(Share)共享锁Create index

Lock share
5SSX(S/Row-X)共享行级排它锁Lock share row exclusive
6X(Exclusive)排它锁Alter table

Drop able

Drop index

Truncate table

Lock exclusive
表4
System TypeDescriptionSystem TypeDescription
BLBuffer hash table instanceNA..NZLibrary cache pin instance (A..Z = namespace)
CFControl file schema global enqueuePFPassword File
CICross-instance function invocation instancePI, PSParallel operation
CUCursor bindPRProcess startup
DFdatafile instanceQA..QZRow cache instance (A..Z = cache)
DLDirect loader parallel index createRTRedo thread global enqueue
DMMount/startup db primary/secondary instanceSCSystem change number instance
DRDistributed recovery processSMSMON
DXDistributed transaction entrySNSequence number instance
FSFile setSQSequence number enqueue
HWSpace management operations on a specific segmentSSSort segment
INInstance numberSTSpace transaction enqueue
IRInstance recovery serialization global enqueueSVSequence number value
ISInstance stateTAGeneric enqueue
IVLibrary cache invalidation instanceTSTemporary segment enqueue (ID2=0)
JQJob queueTSNew block allocation enqueue (ID2=1)
KKThread kickTTTemporary table enqueue
LA .. LPLibrary cache lock instance lock (A..P = namespace)UNUser name
MMMount definition global enqueueUSUndo segment DDL
MRMedia recoveryWLBeing-written redo log instance
MS SQL Server中的 CONVERT 日期时间
格式化大全

Oracle数据文件大小的限制

Oracle常用诊断事件清单

ORACLE最大可以存储多少数据量

11g data guard(PHYSICAL STANDBY)配置

js考试系统时间倒计时

top命令含义

oracle物化视图

此条目发表在 Oracle性能优化 分类目录。将固定链接加入收藏夹。

← Total
insert collisions (ogg)

利用DNSPod域名解析实现blog高可用 →


《V$LOCK视图相关知识》有 3 条评论


北京-小鹏 说:

2013 年 01
月 28 日20:54

惜分飞,

hang住是因为有主键,就算没主键 也确实会产生6号

[引用] [回复]


惜分飞 说:

2012 年 05
月 16 日10:09

lmode=6理解有不同看法:

6X(Exclusive)排它锁

指的是排他不一定是ddl。也可能是insert。

比如同时向一个表里面插入两条相同的数据,使用不同的会话,一个没提交的时候会阻塞另外一个。

验证插入

验证更新

确实通过实验,证明dml操作也会引起v$lock的lmode=6.

一般查询,建议查询v$locked_object

[引用] [回复]


foxmile 说:

2012 年 05
月 15 日16:00

lmode=6理解有不同看法:

6 X(Exclusive) 排它锁

指的是排他不一定是ddl。也可能是insert。

比如同时向一个表里面插入两条相同的数据,使用不同的会话,一个没提交的时候会阻塞另外一个。

[引用] [回复]


发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

姓名 *

电子邮件 *

站点

Anti-spam word: (Required)*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: