解决锁表问题
由于多次使用for uptate使得数据库表被锁,解决方法如下:
---锁表查询的代码有以下形式
select count(*) from v$locked_object;
select * from v$locked_object;
--查看哪个表被锁
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id=a.OBJECT_ID;
--查看是哪个session引起的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id=b.sid order by b.logon_time;
--查看是哪个sql引起的
select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id=b_sid
and b.SQL_ID=c.SQL_ID and c.SQL_ID='' order by b.logon.time;

--杀掉对应的进程
alter system kill session '389,5145';
alter system kill session '772,1385';
alter system kill session '589,1419';
alter system kill session '589,1419';
alter system kill session '1352,3435';
alter system kill session '1352,3435';
alter system kill session '1163,859';
alter system kill session '1163,859';

为了避免表再次被锁,通常尽量少的使用for update。可以使用select  t.rowid,t.* from hgjksdr t ;
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32406745/article/details/52385073
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

解决锁表问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭