主页 > 知识库 > oracle锁表该如何解决

oracle锁表该如何解决

热门标签:电销套路机器人 地图标注坐标图标 杭州网络外呼系统运营商 鹤壁电话机器人价格 汽车4s店百度地图标注店 手机地图标注门店 网贷外呼系统合法吗 地图标注效果的制作 安阳企业电销机器人供应商

废话不多说 上语句:

查询锁表语句:

select object_name,machine,s.sid,s.serial#
 
from v$locked_object l,dba_objects o ,v$session s
 
where l.object_id = o.object_id and l.session_id=s.sid;

杀掉查到的进程:

alter system kill session 'sid,serial#';
 
例如:
 
alter system kill session '20,182';

如果杀不掉可以加个 immediate  立即杀掉 试试;

alter system kill session '20,182' immediate;

如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:

select spid, osuser, s.program 
from v$session s,v$process p
where s.paddr=p.addr and s.sid=20 --24 为上面的sid

windows :

orakill  sid   spid --sid 数据库实例名  spid 线程id

linux:

KILL -9 SPID -- 查到的线程id

杀了这个进程感觉舒服多了,如果是我们自己玩没什么 ,可要是在生产环境你就要小心了 所以我们需要注意一下了

--(1)锁表查询的代码有以下的形式:
select count(*) from v$locked_object;
select * from v$locked_object;
--(2)查看哪个表被锁
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;
--(3)查看是哪个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;
--(4)查看是哪个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;

至此这篇就结束了。

总结

到此这篇关于oracle锁表如何解决的文章就介绍到这了,更多相关oracle锁表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • 查看Oracle中是否有锁表的sql
  • oracle查询锁表与解锁情况提供解决方案
  • 深入探讨:Oracle中如何查询正锁表的用户以及释放被锁的表的方法
  • oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法
  • oracle处理锁表基本操作

标签:河源 梧州 泰安 酒泉 焦作 银川 南阳 柳州

巨人网络通讯声明:本文标题《oracle锁表该如何解决》,本文关键词  oracle,锁表,该,如何,解决,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《oracle锁表该如何解决》相关的同类信息!
  • 本页收集关于oracle锁表该如何解决的相关信息资讯供网民参考!
  • 推荐文章