ITPub博客

首页 > Linux操作系统 > Linux操作系统 > dba_lock

dba_lock

原创 Linux操作系统 作者:ivanding 时间:2009-02-05 14:43:59 0 删除 编辑

1、desc dba_lock
名称                                                              是否为空? 类型
----------------------------------------------------------------- -------- -------------
SESSION_ID                                                                 NUMBER
LOCK_TYPE                                                                  VARCHAR2(26)
MODE_HELD                                                                  VARCHAR2(40)
MODE_REQUESTED                                                             VARCHAR2(40)
LOCK_ID1                                                                   VARCHAR2(40)
LOCK_ID2                                                                   VARCHAR2(40)
LAST_CONVERT                                                               NUMBER
BLOCKING_OTHERS                                                            VARCHAR2(40)

2、字段说明
session_id:拥有这个锁的会话id
lock_type:锁的种类,如DML、Transaction
mode_held:已请求到的锁的模式,如Row-X(SX)、Row-S(SS)。在这一点上,比v$lock的lmode列(数字表示)更清楚。
mode_requested:正在请求的锁的模式,未获得,如果得到了就会显示在mode_held上。
lock_id1:参数。如果是DML锁,这个参数值是被锁的对象的object_id,如果是transaction锁,不知道是什么。
lock_id2:参数。如果是DML锁,好像是0。如果是transaction锁,好像是XIDSQN(可以查询v$transaction视图)。
last_convert:?
blocking_others:这个锁是否阻止了其他会话。

3、通过个这视图可以查询的东西
a、可以查询哪个对象被锁了
b、可以查询哪个会话锁住了什么东西

4、是否控制文件的视图(即可以在mount下查询)?
否。


5、例子。

6、疑问
a、会不会出现这种情况:一个会话已经获得了一个锁,但同时也在请求另一个锁,也就是dba_lock里的mode_held和mode_request都有值?
我的理解:应该可能,因为锁可以叠加的,如果会话a请求了一个SS锁,会话B还能请求一个SS锁,然后会话b再请求x锁时,应该就会出现这种情况。(已经证实)
b、时间点A时会话1获得了一个锁,然后会话2请求锁被block了,再然后会话3也请求锁被block,此时会话A提交了,那接下来是会话2获得锁呢还是会话3获得?
这和时间先后有关呢还是和请求的锁的模式有关?
我的理解:应该只和时间先后有关,否则大家都去请求高级别的锁了。(未经证实)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/385741/viewspace-545358/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 关于ROWID
下一篇: dba_segments
请登录后发表评论 登录
全部评论

注册时间:2009-01-20

  • 博文量
    9
  • 访问量
    9039