内容简介:事情是这么发生的:当天网络不好,一个简单的查询语句都会卡一下,在完成一个存储过程之后点击编译,plsql就卡住了。在等待了一段时间后,plsql还是没有响应,我以为是网络太卡导致,就直接结束了plsql的进程,准备重新登陆(现在看这么做还是有待商榷的)。等到我再次登陆编译后,plsql就再次卡死,之后又尝试了好几次,每次都是一编译就卡死。既然这个问题已经可以进行复现,并且同一个数据库另一个用户登陆正常,就可以基本排除是网络波动造成。于是首先判断是有锁,于是使用了进行查询,但是却没有查询到任何记录。 接着利用
事情是这么发生的:当天网络不好,一个简单的查询语句都会卡一下,在完成一个存储过程之后点击编译,plsql就卡住了。在等待了一段时间后,plsql还是没有响应,我以为是网络太卡导致,就直接结束了plsql的进程,准备重新登陆(现在看这么做还是有待商榷的)。等到我再次登陆编译后,plsql就再次卡死,之后又尝试了好几次,每次都是一编译就卡死。
解决过程
既然这个问题已经可以进行复现,并且同一个数据库另一个用户登陆正常,就可以基本排除是网络波动造成。于是首先判断是有锁,于是使用了
SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, l.os_user_name, s.machine, s.terminal, o.object_name, s.logon_time, p.SPID FROM v$locked_object l, all_objects o, v$session s,v$process p WHERE l.object_id = o.object_id AND l.session_id = s.sid AND s.paddr = p.addr ORDER BY sid, s.serial#; 复制代码
进行查询,但是却没有查询到任何记录。 接着利用
select * from dba_ddl_locks 复制代码
进行查询,若是只是想查询特定对象,可以加 where name='XXX'
进行筛选,但是这里我是想看一下到底多少资源在锁,所以没有加条件。
这个语句的查询非常慢,一开始我以为网络又出问题了,后来等了一会才返回结果。
利用这个语句就查询到了那个存储过程的确是存在锁。利用kill将sessionkill掉
select sid,serial# from v$session where sid=XXX; alter system kill session 'XXX,XXXXXX'; 复制代码
再次执行编译,成功。。
总结
V$LOCKED_OBJECT中只能查询到DML锁,DDL锁是查询不到的, 通过dba_ddl_locks可以查询到数据库中 的ddl锁,其实dml锁同样可以通过dba_dml_locks视图进行查询,在每次发现有锁的时候要区分锁的种类进行查询。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 存储过程 – 重新编译后,存储过程运行得很快
- Xcode 编译疾如风系列(二):并行编译
- 编写 MSBuild 内联编译任务(Task)用于获取当前编译环境下的所有编译目标(Target)
- 使用 Visual Studio 编译时,让错误一开始发生时就停止编译(以便及早排查编译错误节省时间)
- Go编译缓存导致C文件修改后未重新编译
- Android Apk反编译系列教程(一)如何反编译APK
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编译原理
Alfred V.Aho、Jeffrey D.Ullman、Ravi Sethi / 李建中 / 机械工业出版社 / 2003-8 / 55.00元
《编译原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。《编译原理》 是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。《编译原理》一 直被世界各地的著名高等院校和科研机构(如贝尔实验室、哥伦比亚大学、普 林斯顿大学和斯坦福大学等)广泛用作本科生和研究生编译原理......一起来看看 《编译原理》 这本书的介绍吧!