Oracle开发包被锁解决办法-终极办法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle开发包被锁解决办法-终极办法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2983字,纯文字阅读大概需要5分钟。
内容图文
![Oracle开发包被锁解决办法-终极办法](/upload/InfoBanner/zyjiaocheng/455/b1a465ab340e471294f11e5d73b98f8f.jpg)
http://www.itpub.net/forum.php?mod=viewthread&tid=1761963
以前在数据库维护中,基本都是碰到表被锁的情况,然后就是查找被锁的表相关的信息,通过v$session视图查找到相关的sid和serial#,通过
alter system kill session ‘sid,serial#’
kill掉相关的进程即可。但是今天碰到开发包更新过程中,连接中断,导致开发包一直被锁定的状态,无法操作。
由于以前没有遇到包被锁的情况,所以也没太注意这方面的技术,网上好像也很少相关的信息。当开发找到我的时候 确实也琢磨了好一阵子。
然后又从网上查到一些相关的信息,最后结合,解决问题。这里吧解决方法写下来,供参考!
如有更好的方法,欢迎大神指导学习!!欢迎拍砖
锁表的信息属于dml锁,在v$locked_object中,
但所包的信息属于ddl锁,在dba_ddl_locks中,
首先查找那个进程锁住了该对象,以下是操作过程
sql> Select b.SID,b.SERIAL# From dba_ddl_locks a, v$session b Where a.session_id = b.SID And a.name = ‘xxx包名‘ AND OWNER=‘登陆用户‘;
SID SERIAL#
---------- ----------
249 27744
255 10572
70 49021
39 9881
220 1101
32 33362
290 828
264 36682
266 34873
93 41887
193 63309
115 46955
186 20919
84 2125
62 57709
41 21572
320 58450
285 14303
133 38681
221 32723
39 9881
220 1101
193 63309
115 46955
62 57709
133 38681
221 32723
27 rows selected.
好多信息,这个时候本来可以直接执行
Select spid, osuser, s.program From v$session s, v$process p Where s.paddr = p.addr And s.sid = (sid);
找到相关sid的spid。然后执行kill -9 spid 或者执行
alter system kill session ‘sid,serial#‘
kill掉进程就可以了,但是一个数据库上面与很多链接用户,都在做同一件事情,你不可以吧其他正常的进程也给kill了吧
显然是不可能的。
如果是这样的情况,你可以直接查找到链接客户端机器锁开启的所有进程,kill掉,避免乱杀无辜!
确认该用户的包是否存在
select * From all_objects where owner=‘登陆用户‘and object_type = ‘PACKAGE‘ 确实存在。其实这步这里可以不做每应该在最前面做,可以看看包的信息-----
终极方法,对锁表和所包应该够有效果
一般开发都是客户端连接数据库服务器。所以查到该用户在当前数据库下的所有会话,记得连客户端的计算机名都查出来,避免乱杀
涉及到数据数据我就不多截图了
sys> select saddr,sid,serial#,username,MACHINE from v$session order by username desC;
SADDR SID SERIAL# USERNAME MACHINE
-------- ---------- ---------- ------------------- -----------------------
B54R8510 71 27377 DB1
B5659D50 319 1 DB1
B54A3B28 32 37270 xxxx user-b4b16aa573
这样就可以看到该计算机连接到数据库的所有进程了
现在就可以执行
alter system kill session ‘32,37270‘;
执行后再查看
sys> select saddr,sid,serial#,username,MACHINE from v$session order by username desC;
已经没有该客户端的进程了!!搞定
欢迎拍砖哈!!!
Oracle开发包被锁解决办法-终极办法
标签:
本文系统来源:http://www.cnblogs.com/xiaoL/p/4702972.html
内容总结
以上是互联网集市为您收集整理的Oracle开发包被锁解决办法-终极办法全部内容,希望文章能够帮你解决Oracle开发包被锁解决办法-终极办法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。