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顯示沒有記錄,你應該可以編譯好。