免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4716 | 回复: 3
打印 上一主题 下一主题

如何解已锁定的表? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-14 20:30 |只看该作者 |倒序浏览
由于网络原因,不小心把某一表锁定了,请问能用什么办法把该被锁表解开!

论坛徽章:
0
2 [报告]
发表于 2006-07-15 09:48 |只看该作者
在OEM里,将锁定表的session kill了就可以了。

论坛徽章:
0
3 [报告]
发表于 2006-07-15 14:09 |只看该作者
跟据v$locked_object确定session_id来kill session

论坛徽章:
0
4 [报告]
发表于 2006-08-31 19:26 |只看该作者
如何快捷的显示当前锁定和被锁定表的用户,sql等信息
如果是dba用户那么可以使用
一、
阻塞和等待的用户及sql语句
select 'blocker('||wb.holding_session||':'||sb.username||')-sql:'||qb.sql_text blockers,sb.machine,sb.terminal,
       'waiter ('||wb.waiting_session||':'||sw.username||')-sql:'||qw.sql_text waiters ,sw.machine,sb.terminal
from  dba_waiters wb,
      v$session   sb,
      v$session   sw,
      v$sqlarea   qb,
      v$sqlarea   qw
where wb.holding_session=sb.sid
and   wb.waiting_session=sw.sid
and   sb.prev_sql_addr=qb.address
and   sw.sql_address=qw.address
and   wb.mode_held<>'None'

二、如果不是dba那么就不能使用dba_waiters表了,可以使用v$lock来替换

select 'blocker('||lb.sid||':'||sb.username||')-sql:'|| qb.sql_text  blockers,
       'waiter ('||lw.sid||':'||sw.username||')-sql:'|| qw.sql_text  waiters
      

from  v$lock lb,  
     v$lock lw,
     v$session sb,
     v$session sw,
     v$sql     qb,
     v$sql     qw
     
where lb.sid=sb.sid
and  lw.sid=sw.sid
and  sb.prev_sql_addr=qb.address
and  sw.sql_address=qw.address
and  lb.id1=lw.id1
and  sw.lockwait is not null
and  sb.lockwait is null
and  lb.block=1
如果向更详细的显示username的信息可以加入


select 'blocker('||lb.sid||':'||sb.username||')-sql:'|| qb.sql_text  blockers,sb.machine,sb.terminal,sb.logon_time,
       'waiter ('||lw.sid||':'||sw.username||')-sql:'|| qw.sql_text  waiters ,sw.machine,sw.terminal,sw.logon_time
      

from  v$lock lb,  
     v$lock lw,
     v$session sb,
     v$session sw,
     v$sql     qb,
     v$sql     qw
     
where lb.sid=sb.sid
and  lw.sid=sw.sid
and  sb.prev_sql_addr=qb.address
and  sw.sql_address=qw.address
and  lb.id1=lw.id1
and  sw.lockwait is not null
and  sb.lockwait is null
and  lb.block=1

三、--根据以上显示的信息可以知道当前产生锁和等待的用户信息
--那么就需要杀掉当前产生阻塞的用户,在执行杀掉用户进程前请咨询dba和该业务的同事,是否产生其他的不当影响

select sid,serial# from v$session sid in (...)  --查询产生阻塞用户的  sid,serial#,然后
alter system kill session(sid,serial#);   --杀掉产生阻塞的用户
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP