V$LOCK视图中的ID1和ID2含义 测试

简介: 原文转自:http://space.itpub.net/519536/viewspace-693689  在诊断有关锁等待这种数据库等常见故障的时候经常会用到V$LOCK视图,这个视图中的ID1和ID2的含义经常被提及。

原文转自:http://space.itpub.net/519536/viewspace-693689 

在诊断有关锁等待这种数据库等常见故障的时候经常会用到V$LOCK视图,这个视图中的ID1ID2含义经常被提及。了解这两个字段的含义对理解V$LOCK视图很有意义。

  本文简单对V$LOCK视图中的ID1和ID2含义进行描述和探索。

1.Oracle官方文档中的描述
参考链接:http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_1147.htm#i1407629
其中只记录了如下两条模糊的信息:
ID1     NUMBER     Lock identifier #1 (depends on type)
ID2     NUMBER     Lock identifier #2 (depends on type)

这样的描述是不足够和充分的。我们要求甚解!

2.MOS中的描述
有关V$LOCK视图中的ID1和ID2的含义在MOS的29787.1中有以下描述,描述的比较清晰,供参考。
The meaning of ID1 and ID2 depend on the lock TYPE.

---------------------------------------------------------------------------
Most Common Lock Types:
---------------------------------------------------------------------------
  TYPE  Name                  ID1                     ID2
  ~~~~  ~~~~                  ~~~                     ~~~
  TX    Transaction   Decimal RBS & slot     Decimal WRAP number
                     (0xRRRRSSSS  RRRR = RBS number, SSSS = slot)
    A TX lock is requested in eXclusive mode if we are waiting on a ROW.
    A SHARE mode request implies we are waiting some other resource held
    by the TX (Eg: waiting for an ITL entry)

  TM  Table Locks             Object id of table.     Always 0.

  TS  Temp Segment            TS#                     Relative DBA

  ST  Space Transaction       Only ONE enqueue.
  UL  User Locks

3.实例说明TM表级锁时ID1和ID2的含义

以最常见的TM表级锁定为例,ID1表示被锁定的对象的OBJECT_ID,ID2此时为“0”。
1)模拟TM标记锁
(1)创建测试用表T
sec@ora10g> create table t (x varchar2(8));
Table created.

(2)向表T中插入一条数据
sec@ora10g> insert into t values('secooler');
1 row created.

2)获取锁信息
当前会话的sid为140,为了避免查询到其他信息,这里进行限定。
sec@ora10g> select sid, type, id1, id2 from v$lock where sid=140;

       SID TYPE                        ID1        ID2
---------- -------------------- ---------- ----------
       140 TM                        10981          0
       140 TX                       655404        260

3)根据ID1的值定位操作的数据库对象信息
sec@ora10g> select OWNER,OBJECT_NAME,OBJECT_ID,OBJECT_TYPE from dba_objects where OBJECT_ID=10981;

OWNER      OBJECT_NAME     OBJECT_ID   OBJECT_TYPE
------    -------------    ---------- -------------
SEC          T                10981      TABLE

OK,得以验证,这里10981对应数据库对象便是我们操作的表T。

4.实例说明TX事务锁时ID1和ID2的含义
当锁类型为TX事务锁时ID1和ID2的含义如下:

ID1对应视图V$TRANSACTION中的XIDUSN字段Undo segment number:事务对应的撤销段序列号)和XIDSLOT字段Slot number:事务对应的槽位号。其中ID1的高16位为XIDUSN,低16位为XIDSLOT。


ID2对应视图V$TRANSACTION中的XIDSQN字段Sequence number:事务对应的序列号)。

1)仍然以上面的锁信息中的TX锁对应的记录为例进行说明。
摘录信息如下:

       SID TYPE                        ID1        ID2
---------- -------------------- ---------- ----------
       140 TX                       655404        260

2)使用ID2的值“260”检索V$TRANSACTION视图
sec@ora10g> select XIDUSN,XIDSLOT,XIDSQN from V$TRANSACTION where XIDSQN=260;

    XIDUSN    XIDSLOT     XIDSQN
---------- ---------- ----------
        10         44        260

3)10和44对应到ID1的值“655404”的方法
10*2^16+44=655404

4)使用ID1的值计算得到XIDUSN和XIDSLOT方法
sec@ora10g> select trunc(655404/power(2,16)) XIDUSN from dual;

    XIDUSN
----------
        10

sec@ora10g> select bitand(655404,to_number('ffff','xxxx'))+0 XIDSLOT from dual;

   XIDSLOT
----------
        44

这便是他们之间既简单有复杂的关系。

5.小结
  有关V$LOCK的应用请参考文章《【实验】【LOCK】“锁等待”模拟、诊断及处理方法》(http://space.itpub.net/519536/viewspace-605526)

  作为最常用的动态性能视图V$LOCK,它的每个字段都应该深入了解和探索。以便做到胸有成竹,事半功倍。

更多讨论:http://www.itpub.net/thread-973766-1-1.html

-- The End --
相关文章
|
2月前
|
测试技术 Shell 数据库
Django视图测试:构建可靠Web应用的关键步骤
Django视图测试:构建可靠Web应用的关键步骤
25 0
|
4月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
42 3
|
监控 测试技术 API
【更新】Eolink Apikit 10.9.0 版本:接口测试支持通过 URL 请求大型文件,支持左右视图和全屏视图
本次更新后,会把 API 管理、自动化测试、API 监控中的环境和自定义函数数据进行合并统一管理。 1) 环境合并:各应用级环境合并成空间级环境后,直接罗列在空间级环境列表中,不进行去重,故可能会有重名环境需要大家按需处理。 2) 自定义函数合并:各应用自定义函数合并成空间级自定义函数后,在空间级自定义函数分组中会增加三个一级分组“API 管理函数”、“自动化测试函数”、“API 监控函数”,各应用自定义函数会置于对应的应用分组下,并且进行同名去重,保留最新编辑过的自定义函数。
120 0
【更新】Eolink Apikit 10.9.0 版本:接口测试支持通过 URL 请求大型文件,支持左右视图和全屏视图
|
JSON 数据格式 Python
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
|
SQL 关系型数据库 MySQL
软件测试mysql面试题:视图的使用场景有哪些?
软件测试mysql面试题:视图的使用场景有哪些?
160 0
|
关系型数据库 MySQL 测试技术
软件测试mysql面试题:视图的缺点?
软件测试mysql面试题:视图的缺点?
186 0
|
SQL 关系型数据库 MySQL
软件测试mysql面试题:为什么要使用视图?什么是视图?
软件测试mysql面试题:为什么要使用视图?什么是视图?
118 0
|
关系型数据库 MySQL 测试技术
软件测试mysql面试题:视图有哪些特点?
软件测试mysql面试题:视图有哪些特点?
88 0
|
测试技术 API
软件测试面试题:lr中,树视图和脚本视图各有什么优点?
软件测试面试题:lr中,树视图和脚本视图各有什么优点?
51 0
|
SQL 存储 关系型数据库
软件测试mysql面试题:什么是SQL视图?
软件测试mysql面试题:什么是SQL视图?
102 0