解决锁表问题

来源:互联网 发布:淘宝免费引流 编辑:程序博客网 时间:2024/05/19 02:43
由于多次使用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 ;
0 0
原创粉丝点击