您的位置:首页 > 数据库 > Oracle

oracle 锁表以及解决办法

2015-11-12 16:13 495 查看


使用for update卡住锁表的解决办法(转)

今天使用select * from bd_corp for update改了好几次之后,突然执行N长时间都不行,马上给用友打电话,我听到了“锁表”两个字。



马上查询百度
们在操作数据库的时候,有时候会由于操作不当引起数据库表被锁定,这么我们经常不知所措,不知怎么给这些表解锁,在pl/sql
Developer工具的的菜单“tools”里面的“sessions”可以查询现在存在的会话,但是我们很难找到那个会话被锁定了,想找到所以被锁的会话就更难了,下面这叫查询语句可以查询出所以被锁的会话。
1,查看哪个表被锁
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;



2,查看是哪个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;



3,杀掉对应进程
  执行命令:alter system kill session'1025,41';
  其中1025为sid,41为serial#.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle