oracle 锁表解决办法

相关表介绍

  • V$LOCKED_OBJECT(记录锁信息的表)
  • v$session(记录会话信息的表)
  • v$sql(记录 sql 执行的表)
  • dba_objects(用来管理对象,表、库等等)
查询锁表的 SID
select b.SID,b.SERIAL#,b.USERNAME,b.STATUS,b.MACHINE,b.LOCKWAIT,b.PROGRAM from V$SESSION b where b.SID in (select a.SESSION_ID from V$LOCKED_OBJECT a);

  • SID:会话 id
  • USERNAME:死锁语句所用的数据库用户
  • STATUS:状态,active 表示死锁
  • MACHINE:死锁语句所在的机器
  • LOCKWAIT:死锁的状态,如果有内容表示被死锁
  • PROGRAM:产生死锁的语句主要来自哪个应用程序
查看锁表执行语句
用sid 查询单个
select a.SQL_TEXT
from V$SQL a
where a.HASH_VALUE in (select b.SQL_HASH_VALUE from V$SESSION b where b.SID = '358');
查询所有加锁的 sql
select a.SQL_TEXT
from V$SQL a
where a.HASH_VALUE in (select b.SQL_HASH_VALUE
                       from V$SESSION b
                       where b.SID in (select c.SESSION_ID
                                       from V$LOCKED_OBJECT c));
查询未提交事务的 sql
select s.SID,
       s.SERIAL#,
       s.USERNAME,
       s.LOCKWAIT,
       s.PROGRAM,
       s.MACHINE,
       s.STATUS,
       TO_CHAR(s.LOGON_TIME, 'yyyy-mm-dd hh24:mi:ss')                                              LOGON_TIME,
       TO_CHAR(t.START_DATE, 'yyyy-mm-dd hh24:mi:ss')                                              START_DATE,
       (select q.SQL_TEXT from V$SQL q where q.LAST_ACTIVE_TIME = t.START_DATE and rownum <= 1) as sql
from V$SESSION s,
     V$TRANSACTION t
where s.SADDR = t.SES_ADDR
查询锁表的会话 id、及sql 脚本
-- 查询锁表会话ID、sql脚本
select s.SID        会话ID,
       s.SERIAL#,
       s.USERNAME   数据库用户名,
       s.PROGRAM    执行程序,
       s.MACHINE    死锁语句所在机器,
       s.STATUS     锁状态,
       s.LOCKWAIT   死锁描述,
       s.MODULE     会话客户端,
       s.LOGON_TIME 加锁时间,
       q.SQL_TEXT   脚本详情
from V$SESSION s
         inner join V$SQL q on s.SQL_HASH_VALUE = q.HASH_VALUE
where s.SID in (select l.SESSION_ID
                from V$LOCKED_OBJECT l)
  and s.STATUS = 'ACTIVE';
杀死锁
alter system kill session 'v$session.sid,v$session.serial#';

相关推荐

  1. 解决 Oracle

    2023-12-16 06:46:06       12 阅读
  2. Oracle解决方案

    2023-12-16 06:46:06       18 阅读
  3. oracle

    2023-12-16 06:46:06       7 阅读
  4. 关于Oracle数据库查询与解除方法

    2023-12-16 06:46:06       14 阅读
  5. 解决Oracle问题

    2023-12-16 06:46:06       6 阅读
  6. 达梦空间不足解决办法

    2023-12-16 06:46:06       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-16 06:46:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-16 06:46:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-16 06:46:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-16 06:46:06       18 阅读

热门阅读

  1. 探秘npm:解锁前端生态的魔法工具

    2023-12-16 06:46:06       42 阅读
  2. Graylog解决超出ES搜索最大窗口限制问题

    2023-12-16 06:46:06       39 阅读
  3. Graylog 中日志级别及其对应的数字

    2023-12-16 06:46:06       39 阅读
  4. dcf配置解析机制(元数据)

    2023-12-16 06:46:06       40 阅读
  5. FreeSWITCH rtp endpoint recvonly

    2023-12-16 06:46:06       36 阅读
  6. 12.15每日一题(备战蓝桥杯摘花生)

    2023-12-16 06:46:06       34 阅读
  7. ansible crontab任务管理 —— 筑梦之路

    2023-12-16 06:46:06       19 阅读
  8. Ansible的Jinja test

    2023-12-16 06:46:06       25 阅读
  9. 彻底搞清楚多线程编程

    2023-12-16 06:46:06       36 阅读
  10. Lambda 表达式的常见用法

    2023-12-16 06:46:06       32 阅读
  11. @RestController

    2023-12-16 06:46:06       34 阅读