zoukankan      html  css  js  c++  java
  • 系统视图介绍

    3.1 系统视图介绍

    为了监控Oracle系统中锁的状况,我们需要对几个系统视图有所了解:


    3.1.1 v$lock视图

    v$lock视图列出当前系统持有的或正在申请的所有锁的情况,其主要字段说明如下:

    字段名称

    类型

    说明

    SID

    NUMBER

    会话(SESSION)标识;

    TYPE

    VARCHAR(2)

    区分该锁保护对象的类型;

    ID1

    NUMBER

    锁标识1;

    ID2

    NUMBER

    锁标识2;

    LMODE

    NUMBER

    锁模式:0(None),1(null),2(row share), 3(row exclusive),4 (share),5(share row exclusive),6(exclusive)

    REQUEST

    NUMBER

    申请的锁模式:具体值同上面的LMODE

    CTIME

    NUMBER

    已持有或等待锁的时间;

    BLOCK

    NUMBER

    是否阻塞其它锁申请;

    表三:v$lock视图主要字段说明

    其中在TYPE字段的取值中,本文只关心TM、TX两种DML锁类型;

    关于ID1、ID2,TYPE取值不同其含义也有所不同:

    TYPE

    ID1

    ID2

    TM

    被修改表的标识(object_id)

    0

    TX

    以十进制数值表示该事务所占用的回滚段号与该事务在该回滚段的事务表(Transaction table)中所占用的槽号(slot number,可理解为记录号)。其组成形式为: 0xRRRRSSSS ( RRRR = RBS number, SSSS = slot )。

    以十进制数值表示环绕(wrap)次数,即该槽(slot)被重用的次数;

    表四:v$lock视图中ID1与ID2字段取值说明


    3.1.2 v$locked_object视图

    v$locked_object视图列出当前系统中哪些对象正被锁定,其主要字段说明如下:

    字段名称

    类型

    说明

    XIDUSN

    NUMBER

    回滚段号;

    XIDSLOT

    NUMBER

    槽号;

    XIDSQN

    NUMBER

    序列号;

    OBJECT_ID

    NUMBER

    被锁对象标识;

    SESSION_ID

    NUMBER

    持有锁的会话(SESSION)标识;

    ORACLE_USERNAME

    VARCHAR2(30)

    持有该锁的用户的Oracle用户名;

    OS_USER_NAME

    VARCHAR2(15)

    持有该锁的用户的操作系统用户名;

    PROCESS

    VARCHAR2(9)

    操作系统的进程号;

    LOCKED_MODE

    NUMBER

    锁模式,取值同表三中的LMODE;

    表五:v$locked_object视图字段说明


    3.2 监控脚本

    根据上述系统视图,可以编制脚本来监控数据库中锁的状况。


    3.2.1 showlock.sql

    第一个脚本showlock.sql,该脚本通过连接v$locked_object与all_objects两视图,显示哪些对象被哪些会话锁住:

    /* showlock.sql */

    column o_name format a10

    column lock_type format a20

    column object_name format a15

    select rpad(oracle_username,10) o_name,session_id sid,

    decode(locked_mode,0,'None',1,'Null',2,'Row share',

    3,'Row Exclusive',4,'Share',5,'Share Row Exclusive',6,'Exclusive') lock_type,

    object_name ,xidusn,xidslot,xidsqn

    from v$locked_object,all_objects

    where v$locked_object.object_id=all_objects.object_id;


    3.2.2 showalllock.sql

    第二个脚本showalllock.sql,该脚本主要显示当前所有TM、TX锁的信息;

    /* showalllock.sql */

    select sid,type,id1,id2,

    decode(lmode,0,'None',1,'Null',2,'Row share',

    3,'Row Exclusive',4,'Share',5,'Share Row Exclusive',6,'Exclusive')

    lock_type,request,ctime,block

    from v$lock

    where TYPE IN('TX','TM');

    from:

  • 相关阅读:
    Vue axios 使用记录
    Vue CLI 项目创建
    Vue中的事件修饰符。
    js 中控制打印方向横向还是纵向。
    element ui 列表中删除只能删除最后一项
    文件上传formData上传之前查看对象里的值
    GridControl_gridView 单元格内容换行(wrap)
    SqlTest(2013-07-10)
    printPreviewControl1 打印预览
    避免button处理事件过程中 点击按钮触发事件的方法
  • 原文地址:https://www.cnblogs.com/wuxi/p/2718155.html
Copyright © 2011-2022 走看看