度量快速开发平台-专业、快速的软件定制快开平台

标题: ORACLE 锁表的解决方法及查找引起锁表SQL语句方法 [打印本页]

作者: 陈晓龙    时间: 2020-4-4 17:39
标题: ORACLE 锁表的解决方法及查找引起锁表SQL语句方法

昨天惠美达的数据表,遇到遭锁的问题。去网上查了查,看到了这篇好文,特此给大家分享下,共勉!


1. ORACLE中查看当前系统中锁表情况
select * from v$locked_object
可以通过查询v$locked_object拿到sid和objectid,然后用sid和v$session链表查询是哪里锁的表,用v$session中的objectid字段和dba_objects的id字段关联,查询详细的锁表情况。

查询SQL如下:
select sess.sid,
       sess.serial#,
       lo.oracle_username,
       lo.os_user_name,
       ao.object_name,
       lo.locked_mode
  from v$locked_object lo, dba_objects ao, v$session sess, v$process p
where ao.object_id = lo.object_id
   and lo.session_id = sess.sid;

查询是什么SQL引起了锁表的原因,SQL如下:
select l.session_id sid,
       s.serial#,
       l.locked_mode,
       l.oracle_username,
       s.user#,
       l.os_user_name,
       s.machine,
       s.terminal,
       a.sql_text,
       a.action
  from v$sqlarea a, v$session s, v$locked_object l
where l.session_id = s.sid
   and s.prev_sql_addr = a.address
order by sid, s.serial#;


2. ORACLE解锁的方法
alter system kill session ’146′;  –146为锁住的进程号,即spid



作者: 王爱东    时间: 2020-4-4 17:47
可以。这个学习了就不错。
作者: 张兴康    时间: 2020-4-4 17:49
收藏一个,下次如果遇到同样问题就好解决了
作者: 万望    时间: 2020-4-4 21:38
啥子是锁表?双十一来了赶紧发货。。。
作者: 张军勇    时间: 2020-4-5 09:25
万望 发表于 2015-11-4 21:38
啥子是锁表?双十一来了赶紧发货。。。

还很少遇到锁表的问题。
作者: 陈晓龙    时间: 2020-4-5 10:03
王爱东 发表于 2015-11-4 17:47
可以。这个学习了就不错。

哈哈,实践过了。还有点用!
作者: 陈晓龙    时间: 2020-4-5 10:06
张兴康 发表于 2015-11-4 17:49
收藏一个,下次如果遇到同样问题就好解决了

对头。在网络不好,或者数据量特别大,数据库卡死的情况下。表就会被锁,以前我在烟草公司时,他们数据量很大,再加上有时网络不好,所以就很容易出现这个问题。
作者: 陈晓龙    时间: 2020-4-5 10:08
万望 发表于 2015-11-4 21:38
啥子是锁表?双十一来了赶紧发货。。。

已发货,请注意接收!
作者: 万望    时间: 2020-4-5 21:31
陈晓龙 发表于 2015-11-5 10:08
已发货,请注意接收!

在哪呢?不发我能找天天630投诉你哇
作者: 陈晓龙    时间: 2020-4-6 10:33
万望 发表于 2015-11-5 21:31
在哪呢?不发我能找天天630投诉你哇

有常识没得?明明是315




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2