Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Не могу удалить пакет.
4 мар 09, 10:32    [6884673]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
В Oracle 10g Standard не получается удалить пакет. По команде drop <pkgname> зависает сессия. Перекомпилировать не удаётся. Удаётся его удалить только после перезапуска базы. Как понять, чем блокируется пакет и почему зависает сессия.
4 мар 09, 10:35    [6884690]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
SELECT *
FROM v$locked_object
4 мар 09, 10:37    [6884707]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Спасибо, ничего этот запрос не возвращает. Что вообще может происходить такого с пакетом, что его невозможно удалить? Использование приложением? Что-то другое? Как это выяснить?
4 мар 09, 10:41    [6884727]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Посмотреть ожидания
4 мар 09, 10:46    [6884763]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
StarBlade
Member

Откуда: Хорошо хоть не из МСК
Сообщений: 415
Karmukel,
ищи сессию тебя блокирующую (v$lock и иже с ними). Можешь ЕМ воспользоваться.
4 мар 09, 10:51    [6884820]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Вячеслав Любомудров,

Спасибо. Я смотрю ожидания. Дальше какие шаги? "В зависимости от того какое событие в поле a.event
надо анализировать поля a.P1TEXT,a.p1raw,a.p1,a.P2TEXT,a.p2raw,a.p2
и в случае очереди смотреть вьюху v$lock
в случае блокировки вьюху x$kglpn и x$kglob"
Я не знаю, что содержится в этих полях и как эти цифры применять для дальнейшего анализа.
4 мар 09, 10:52    [6884835]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
StarBlade
Member

Откуда: Хорошо хоть не из МСК
Сообщений: 415
Вячеслав Любомудров
Посмотреть ожидания


+ класса апликейшен
4 мар 09, 10:53    [6884838]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
как узнать кто "держит" пакет???
4 мар 09, 10:57    [6884872]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Пробовали и такое
1. запускаешь свое удаление
оно начинает "висеть"
2. в другой сесси делаешь запрос
select * from v$lock where request!=0;
определяешь параметры id1 и id2
Но это запрос ничего не возвращает.
4 мар 09, 10:58    [6884878]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Очень большое спасибо за ссылку.
select * from v$session
where status = 'ACTIVE'
and audsid <> userenv('SESSIONID')
and sid in
( select sid from v$access
where owner = user /*or actual owner*/
and type = 'PACKAGE'
and object = 'YOUR_PACKAGE_NAME'
);

Что-то возвращает. Кажется, там есть список процессов, которые используют пакет. Что с этой информацией я могу сделать? Т.е. из базы как-то сессии эти прервать можно?
4 мар 09, 11:12    [6884948]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Camper
Member

Откуда:
Сообщений: 174
Вьюха dba_kgllock

select /*+ ordered */ w1.sid  waiting_session,
	h1.sid  holding_session,
	h1.serial# holding_serial#,
	h1.module holding_module,
	w.kgllktype lock_or_pin,
	do.owner||'.'||do.object_name as waiting_object,
	decode(h.kgllkmod,  0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive',
	   'Unknown') mode_held, 
	decode(w.kgllkreq,  0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive',
	   'Unknown') mode_requested
  from dba_kgllock w, dba_kgllock h, v$session w1, v$session h1, dba_objects do
 where
  (((h.kgllkmod != 0) and (h.kgllkmod != 1)
     and ((h.kgllkreq = 0) or (h.kgllkreq = 1)))
   and
     (((w.kgllkmod = 0) or (w.kgllkmod= 1))
     and ((w.kgllkreq != 0) and (w.kgllkreq != 1))))
  and  w.kgllktype	 =  h.kgllktype
  and  w.kgllkhdl	 =  h.kgllkhdl
  and  w.kgllkuse     =   w1.saddr
  and  h.kgllkuse     =   h1.saddr
  and  h1.row_wait_obj#	=  do.object_id
/
4 мар 09, 11:19    [6884990]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
StarBlade
Member

Откуда: Хорошо хоть не из МСК
Сообщений: 415
Karmukel,

автор этого запроса написал - это кандидаты на отстрел. Ну и стреляй их либо командами разными типа килл и дисконнект ну или инструментом каким. (сид в запросе возвращается)
4 мар 09, 11:26    [6885013]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
На терминале поубивали процессы. Не помогло. Все они снова возвращаются запросом, пакет не удаляется.
alter system disconnectl SESSION '129' immediate
возвращает ошибку ORA-00026: missing or invalid session ID
4 мар 09, 11:42    [6885110]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Извините, вижу свою ошибку, немного замылился глаз за 4 часа рассматривания "букв". Спасибо большое, пакет удалился после дисконнекта связанных с ним сессий. Спасибо всем :)
4 мар 09, 11:56    [6885194]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
Вдогонку, мож пригодится когда - если сессия находится в состоянии killed и упрямо не желает отпускать, их можно прибить на уровне операционной системы, в зависимости от ситуации узнав нужные SPID одним из следующих зпаросов
https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=96244&hl=#707440
https://www.sql.ru/forum/actualthread.aspx?bid=3&tid=96244&pg=3#714120

Выручало и не раз ...
4 мар 09, 12:20    [6885350]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Viewer, большое спасибо, я внимательно изучу всё, что мне сегодня посоветовали :). У меня совсем небольшой опыт работы с Oracle, советы ОЧЕНЬ пригодятся.
4 мар 09, 12:31    [6885436]     Ответить | Цитировать Сообщить модератору
 Re: Как определить, чем блокируется пакет?  [new]
Karmukel
Member

Откуда:
Сообщений: 24
Атеперь с этими пакетами происходит и вовсе мистика. Пропадает после заливки тело пакета. И ни одна сессия не может этот пакет использовать.
4 мар 09, 12:42    [6885550]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить