top-shop.ru
Maneki Салфетки влажные

Oracle: Вывести список фоновых задач вместе с SID сессии - нестандартное решение, как альтернатива DBA_JOBS_RUNNING!
Проблема: "Зависание" мониторинга исполнения фоновых задач Oracle® (тех самых, что запланированы в таблице DBA_JOBS) - при использовании представления DBA_JOBS_RUNNING. Топорный SELECT к этому представлению безнадежно зависает!

Первой мыслью было воспользоваться тем фактом, что поле DBA_JOBS.THIS_DATE is not null только у реально работающего в данный момент job-а. Затем было найдено альтернативное решение (т.к. мне нужен был еще SID, STATUS и номер процесса на уровне ОС).

Решение: Использование выборок для произведения выборки :)
  1. Делаем выборку из V$LOCK, и обращаемся к этому снимку, как к таблице:
    select a.sid, c.status, b.log_user, b.job, b.this_date as start_date, 
           b.this_sec as start_time, d.spid as os_process
    from 
    (select sid,id2 from v$lock) a,
    (select job, log_user, this_date, this_sec from dba_jobs) b,
    (select sid, status, paddr from v$session) c,
    (select addr, spid from v$process) d
    where 
    a.id2 = b.job and
    a.sid = c.sid and
    c.paddr = d.addr
  2. Вуаля! Все - теперь, можно выполнять этот SQL запрос, и он не "затормозит", а выдаст удобную табличку данных!
Задача: Вывести список фоновых задач Oracle, исполняющихся в данный момент

содержание