我在Oracle SQL Developer中遇到了一个不寻常的问题。当我尝试编译一个存储过程时,它会挂起Oracle SQL开发人员屏幕而我无法执行任何活动,除了杀死SQL开发人员实例并重新开始。
但同样的问题。有人遇到过这样的问题吗?我是oracle的新手。
这里有一些问题,我等了5到10分钟并得到了这个错误
ORA-04021 timeout occurred while waiting to lock object
但我是唯一一个在这个Oracle实例上工作的人
答案 0 :(得分:12)
您之前尝试创建的程序(已杀死)仍处于停滞状态且处于活动状态。您需要使用http://www.oracle-base.com/articles/misc/KillingOracleSessions.php
终止该Oracle会话此错误的另一个来源是数据库中的另一个进程在您尝试编译它时正在运行该过程。使用此查询来确定正在运行它的进程:
select sess.sid, sess.username, sql_text
from v$sqlarea sqlarea, v$session sess
where sess.sql_hash_value = sqlarea.hash_value
and sess.sql_address = sqlarea.address
and sess.username is not null;
答案 1 :(得分:1)
查询v$locked_object
以查看您的存储过程是否正在使用当前锁定的任何对象。如果是这样,请跟踪将其锁定的查询/模块&结束查询。
托马斯给出的链接提供了一旦会话被杀死后如何杀死会话的详细信息。 v$locked_object
显示没有记录,你应该可以编译好。