java中oracle行锁定与行解锁,ORACLE关于锁和V$LOCK的分析 PDF 下载

为了实现并发,oracle数据库使用了锁机制。要了解锁,首先要了解视图v$lock。

v$lock这个视图列出 Oracle 服务器当前拥有的锁以及未完成的锁请求。如果你觉着 session 处于等待事件队列当中,那你应该检查视图v$lock。

v$lock中的常用列有以下列:

sid:持有锁的会话SID,通常与v$session关联。

type:锁的类型,其中TM表示表锁或DML锁,TX表示行锁或事务锁,UL表示用户锁。我们主要关注TX和TM两种型的锁,其它均为系统锁,会很快自动释放,不用关注。当 Oracle执行 DML 语句时,系统自动在所要操作的表上申请 TM 类型的锁。当 TM锁获得后,系统再自动申请 TX 类型的锁,并将实际锁定的数据行的锁标志位进行置位。TM 锁包括了SS 、 SX、 S 、X 等多种模式,在数据库中用 0 -6 来表示。不同的 SQL 操作产生不同类型的 TM锁。

lmode:会话保持的锁的模式。

0=None;

1=Null ;

2=Row-S (SS,行级共享锁,其他对象SQL语句只能查询这些数据行),sql操作有select for update、lock for update、lock row share;

3=Row-X (SX,行级排它锁,在提交前不允许做DML操作),sql操作有insert、update、delete、lock row share;

4=Share(共享锁),sql操作有create index、lock share;

5=S/Row-X (SSX,共享行级排它锁),sql操作有lock share row exclusive;??

6=Exclusive(排它锁),alter table、drop table、drop index、truncate table、look exclusive等DDL

注释:Row-S (SS,行级共享锁)和Row-X (SX,行级排它锁)中的第一个S 表示表被共享,如果表不被共享,就谈不上其下级的行级锁是否被共享还是排他了。表级别为X,行级锁就不被其他会话访问,所以也就没XX或XS模式,只有X模式。

ID1,ID2:  ID1,ID2的取值含义根据type的取值而有所不同,对于TM 锁ID1表示被锁定表的object_id 可以和dba_objects视图关联取得具体表信息,ID2 值为0(即表示type=TM时,用不到ID2列,故将其置为零);对于TX 锁ID1以十进制数值表示该事务所占用的回滚段号和事务槽slot number号,其组形式: 0xRRRRSSSS,RRRR=RBS/UNDO NUMBER,SSSS=SLOT NUMBER,ID2 以十进制数值表示环绕wrap的次数,即事务槽被重用的次数。实际上这两个字段构成了事务在回滚段中的位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值