7

我在Oracle SQL Developer中遇到了一个不寻常的问题。当我尝试编译存储过程时,它挂起了Oracle SQL DEveloper屏幕,我无法执行任何操作,除了杀死SQL开发人员实例并重新开始。编译存储过程挂起Oracle SQL Developer

但是同样的问题。有人遇到这样的问题?我对oracle很陌生。

这里是一些补充,我等了5到10分钟,得到这个错误

ORA-04021 timeout occurred while waiting to lock object 

但我在Oracle

的这种情况下工作

回答

8

一个你以前尝试的唯一的人的问题创建你杀死的程序仍然停滞并且活跃。您需要使用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; 
+0

我试过这样做了几次。但是当我再次编译它时,同样的错误。 – user367134

+1

如何在SQL Developer中执行上述查询? – user367134

+1

会话是一个保留字。将其更改为另一个“名称”(例如“v $ session sess”)。 –

1

查询v$locked_object,看看是否当前被锁定的对象是你的存储过程中使用。如果是这样,追踪已锁定的查询/模块&结束查询。

托马斯给出的链接给出了关于如何杀死会话的细节,一旦会话被终止& v$locked_object显示没有记录,你应该可以编译好。