• ORACLE 死锁


    1、查看数据库锁,诊断锁的来源及类型: 
    1
    select  object_id,session_id,locked_mode   from   v$locked_object

      v$locked_object包含的是当前DB中被锁住的OBJECT,session_id 可以关联V$SESSION,object_id 可以关联 dba_objects。
      locked_mode:
      0:none
      1:null 空
      2:row-s 行共享(rs):共享表锁,sub share
      3:row-x 行独占(rx):用于行的修改,sub exclusive
      4:share 共享锁(s):阻止其他dml操作,share
      5:s/row-x 共享行独占(srx):阻止其他事务操作,share/sub exclusive
      6:exclusive 独占(x):独立访问使用,exclusive

    1
    2
    3
    4
    select b.owner,b.object_name,b.object_type,l.session_id,l.locked_mode
    from   v$locked_object l,
              dba_objects b
    where  b.object_id=l.object_id

       都字面意思,owner 拥有者、object_name 项目名称、 object_type 项目类型。

    1
    2
    3
    4
    5
    select  lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name,o.owner,o.object_name,o.object_type,s.sid,s.serial#
    from    v$locked_object l,
            dba_objects o,
            v$session s
    where   l.object_id=o.object_id and l.session_id=s.sid   order by o.object_id,xidusn desc;

      查询谁锁的表及等待列表,第一行锁、其余为等待列表。

    2、找出数据库的sid 和 serial#

         据说v$locked_object 行级锁以上才有记录,v$lock记录的是所有的锁,包括系统锁,利用v$lock一定要加上object_name,不然查出来一堆。

      (1)利用  v$locked_object  查询锁

    1
    2
    3
    4
    select    t2.username,t2.sid,t2.serial#,t2.logon_time
    from      v$locked_object t1,
                 v$session t2
    where     t1.session_id=t2.sid order by t2.logon_time;

      (2)利用 v$lock 查询锁(注意把object_name修改一下,如果是行、表锁,就是表名)

    1
    2
    3
    4
    5
    select   o.object_name,s.sid, s.serial#
    from    v$lock l,
           dba_objects o,
           v$session s
    where    l.id1 = o.object_id and l.sid = s.sid and  o.object_name='object_name';

    3、杀死该session

    1
    alter system kill session 'sid,serial#'

      用步骤2中查出来的记录,对应进该语句删除。如果删除的时候提示 "ORA-00027:cannot kill current session",可能是自己窗口有数据没有提交,检查一下窗口列表,或者断开数据库连接,重新尝试。

  • 相关阅读:
    JAVA中对null进行强制类型转换
    git 初次push
    svn还原与本地版本回退
    后台用map接收数据,报类型转换错误
    eclipse从svn导入静态文件
    APP项目下载及运行
    Yii2中如何使用CodeCeption
    开发资源整合
    工作流设计参考(包括PHP实现)
    PHP单元测试利器:PHPUNIT初探
  • 原文地址:https://www.cnblogs.com/cinemaparadiso/p/16691889.html
Copyright © 2020-2023  润新知