2015-03-18 3 views
0

Я не могу отказаться от пакета в oracle 11g. После сеанса «drop package» перестает отвечать, и он выглядит как тупик. Но нет закрытых объектов, возвращаемых из запроса:Почему этот пакет нельзя отбросить?

select * 
from v$locked_object lo 
join dba_objects o on lo.object_id = o.object_id 
where o.object_type = 'PACKAGE'; 

Как узнать, что не так с пакетом? И как, наконец, выпустить все замки и сбросить его?

+1

У вас есть открытый сеанс, который находится в середине долговременного вызова процедуры в пакете? –

+0

@Alex, ситуация воспроизводится только в сеансе, и я почти уверен (99%), что никто больше не использовал пакет. Во всяком случае, сеанс, содержащий блокировку для объекта, должен появиться в 'select * from v $ locked_object', не так ли? –

ответ

0

Подход с большим молотом - это перезапуск или отскок базы данных. Это прекратит все сеансы и позволит вам отказаться от пакета.

Как говорит Алекс Пул, у вас может быть другой сеанс доступа к пакету и его блокировка. Я уверен, что это окно для разработки. Если он смотрит на сеанс v $ и убивает все сеансы, которые вы использовали для доступа к пакету.

+0

Убивать сеансы полезно, но я пытаюсь найти способ собрать всю доступную информацию о состоянии пакета в момент тупиковой ситуации (если таковой имеется). В общем, мне нужно найти, какой объект инициировал блокировку на пакете, поэтому вопрос в том, почему ('select * from v $ locked_object ...') ничего не говорит о блокировке, но пакет _seems должен быть заблокирован_. –

Смежные вопросы