Компиляция хранимой процедуры зависает Oracle SQL Developer - PullRequest
11 голосов
/ 23 июля 2011

Я столкнулся с необычной проблемой в Oracle SQL Developer.Когда я пытаюсь скомпилировать процедуру хранилища, она зависает на экране Oracle SQL DEveloper, и я не могу ничего делать, кроме как убить экземпляр разработчика SQL и начать заново.

Но та же проблема.Кто-нибудь сталкивался с такой проблемой?Я новичок в оракуле.

Вот некоторые дополнения к проблеме. Я ждал от 5 до 10 минут и получил эту ошибку

ORA-04021 timeout occurred while waiting to lock object

Но я единственный человек, работающий над этим экземпляром Oracle

Ответы [ 2 ]

12 голосов
/ 23 июля 2011

Одна из ваших предыдущих попыток создать процедуру, которую вы убили, все еще застряла и активна.Вам нужно убить этот сеанс Oracle, используя http://www.oracle -base.com / article / misc / KillingOracleSessions.php

Другой источник этой ошибки - другой процесс в вашей базе данных, на котором выполняетсяпроцедура, пока вы пытаетесь его скомпилировать.Используйте этот запрос, чтобы выяснить, какой процесс его выполняет:

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 голос
/ 24 июля 2011

Запрос v$locked_object, чтобы узнать, используются ли какие-либо заблокированные в данный момент объекты вашей хранимой процедурой.Если это так, отследите запрос / модуль, который заблокировал его, и завершите запрос.

Ссылка, предоставленная Томасом, дает подробные сведения о том, как убить сеанс, после того, как сеансы будут уничтожены, а v$locked_object не показывает записей, вы сможете скомпилировать нормально.

...