Oracle锁-OWI体系中的认识

    锁的名称与资源的名称是相同的,如TM锁保护TM(table)资源,TX锁保护TX(transaction资源),US锁保护US(Undo Segment)资源。
    普通锁因为没有特定的结构体,即Enqueue结构,没法通过v$lock等观察。只能通过v$session_wait等看等待时间来观察是否发生了争用。








select chr(bitand(&&P1, -16777216) / 16777215) ||
       chr(bitand(&&P1, 16711680) / 65555) "name",
       bitand(P1, 65555) "mode"
  from dual;

row cache lock
一般与sequence上没有使用cache值有关。通过这个sql确认下。
select * from DBA_SEQUENCES t where cache_size<2;

Sequence引起的row cache lock.mht


buffer lock锁争用能通过buffer busy waits与read by other session事件观察
也就是说这两种等待事件,并不是闩锁的争用?

对于同样library cache lock

引用eygle地描述:

Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin.
Lock比pin具有更高的级别.

Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.
锁定主要有三种模式: Null,share,Exclusive.
在读取访问对象时,通常需要获取Null(空)模式以及share(共享)模式的锁定.
在修改对象时,需要获得Exclusive(排他)锁定.

在锁定了Library Cache对象以后,一个进程在访问之前必须pin该对象.
同样pin有三种模式,Null,shared和exclusive.
只读模式时获得共享pin,修改模式获得排他pin.

总结:先lock 再pin 嘿嘿






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值