Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА:

Re: Как узнать причину блокировки 12 года 9 мес. назад #1970

посмотри для блокирующей неактивной сессии
SELECT * FROM dba_locks WHERE session_id = <номер>
и результат сюда


Ну вот к примеру.. Смотри

Вложение не найдено



Это искусственно созданная ситуация, блокировок в базе на данный момент нет.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Nymbos.

Re: Как узнать причину блокировки 12 года 9 мес. назад #1971

хм, очень похоже на забытый коммит/роллбэк. Но вот как узнать - из-за чего. Тут я пожалуй соглашусь насчёт логмайнера

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Как узнать причину блокировки 12 года 9 мес. назад #1972

Вопрос был не в этом

.

Да, вы правы.
Я обратил внимание на запрос Polton только потому, что думал, что, возможно, через v$session.blocking_session я не все блокировки вижу...
Я хочу понять именно какой запрос вызвал блокировку.
Смысл в том, что периодически вылезают блокировки. Разработчики просят конкретики, а я запрос (или запросы) выцепить не могу.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Как узнать причину блокировки 12 года 9 мес. назад #1973

WITH t AS (
SELECT '%'||lower(e.object_name)||'%' object_name,
       to_date(a.start_time,'mm/dd/yy hh24:mi:ss') start_time
  FROM gv$transaction  a, 
       gv$session      b,
       v$locked_object d,
       all_objects     e
 WHERE a.inst_id = b.inst_id
       AND a.ses_addr = b.saddr
       AND d.session_id = b.sid
       AND d.object_id = e.object_id )
SELECT z.*
  FROM (
SELECT t.sql_text, t.sql_fulltext, last_active_time, t.module
  FROM v$sql t )z
WHERE LOWER(z.sql_fulltext) LIKE (SELECT object_name FROM t)
  AND z.last_active_time >= (SELECT start_time FROM t)
ORDER BY z.module, z.last_active_time DESC

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Как узнать причину блокировки 12 года 9 мес. назад #1974

А кстати, можно ещё посмотреть список открытых курсоров блокирующей сессии. Самое простое)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Как узнать причину блокировки 12 года 9 мес. назад #1975

WITH t AS (
SELECT '%'||lower(e.object_name)||'%' object_name,
       to_date(a.start_time,'mm/dd/yy hh24:mi:ss') start_time
  FROM gv$transaction  a, 
       gv$session      b,
       v$locked_object d,
       all_objects     e
 WHERE a.inst_id = b.inst_id
       AND a.ses_addr = b.saddr
       AND d.session_id = b.sid
       AND d.object_id = e.object_id 
       and sid=<blocking_sid>)          -- это пришлось добавить
SELECT z.*
  FROM (
SELECT t.sql_text, t.sql_fulltext, last_active_time, t.module
  FROM v$sql t )z
WHERE LOWER(z.sql_fulltext) LIKE (SELECT object_name FROM t)
  AND z.last_active_time >= (SELECT start_time FROM t)
ORDER BY z.module, z.last_active_time DESC


Ух-ты, кажется, то что нужно :)
Громадное спасибо! Осталось проверить в "боевых" ситуациях, буду ждать блокировок.

P.S. Пришлось добавить условие по sid блокирующей сессии, а то ora-1427 лезла.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4
Время создания страницы: 0.230 секунд