ORACLE 查看锁和解锁

本文介绍如何使用SQL查询来检查Oracle数据库中的锁状态,包括锁定的会话信息及锁定对象详情。提供了用于查看锁定状态、特定会话状态及解除锁定会话的SQL语句。

 

1.查看锁情况

select /*+ RULE */

 ls.osuser os_user_name,

 ls.username user_name,

 decode(ls.type,

        'RW',

        'Row wait enqueue lock',

        'TM',

        'DML enqueue lock',

        'TX',

        'Transaction enqueue lock',

        'UL',

        'User supplied lock') lock_type,

 o.object_name object,

 decode(ls.lmode,

        1,

        null,

        2,

        'Row Share',

        3,

        'Row Exclusive',

        4,

        'Share',

        5,

        'Share Row Exclusive',

        6,

        'Exclusive',

        null) lock_mode,

 o.owner,

 ls.sid,

 ls.serial# serial_num,

 ls.id1,

 ls.id2

  from sys.dba_objects o,

       (select s.osuser,

               s.username,

               l.type,

               l.lmode,

               s.sid,

               s.serial#,

               l.id1,

               l.id2

          from v$session s, v$lock l

         where s.sid = l.sid) ls

 where o.object_id = ls.id1

   and o.owner <> 'SYS'

 order by o.owner, o.object_name

 

--查询锁定状态的session

SELECT s.username,

       l.OBJECT_ID,

       l.SESSION_ID,

       s.SERIAL#,

       l.ORACLE_USERNAME,

       l.OS_USER_NAME,

       l.PROCESS

  FROM V$LOCKED_OBJECT l, V$SESSION S

 WHERE l.SESSION_ID = S.SID

 

--查询指定的某个session,通过status字段判断是否处于锁定状态

 select t.STATUS  from  V$SESSION t where sid = 1029

 

2.杀掉进程  kill session

alter system kill session 'sid,serial_num';

 

select sid,

       serial#,

       username,

       program,

       status,

       sql_id,

       blocking_instance,

       blocking_session

  from v$session

 where event = 'enq: TX - row lock contention'

 order by blocking_session;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值