Компиляция хранимой процедуры зависает Oracle SQL Developer

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

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

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

ORA-04021 timeout occurred while waiting to lock object

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

2 ответов


одна из ваших предыдущих попыток создать процедуру, которую вы убили, все еще застряла и активна. Вам нужно убить этот сеанс Oracle, используя http://www.oracle-base.com/articles/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;

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

ссылка, данная Томасом, дает подробную информацию о том, как убить сеанс, как только сеансы будут убиты & v$locked_object не показывает записей, вы должны быть в состоянии скомпилировать штраф.