Узнать историю SQL-запросов

На сервере выполнялся SQL-запрос на обновление, что позже вызвало много проблем.

Как я могу получить список запросов на обновление, выполненных за последние 2 месяца, чтобы я мог точно отследить проблемный SQL-запрос?


person sumit vedi    schedule 12.02.2013    source источник


Ответы (3)


    select v.SQL_TEXT,
           v.PARSING_SCHEMA_NAME,
           v.FIRST_LOAD_TIME,
           v.DISK_READS,
           v.ROWS_PROCESSED,
           v.ELAPSED_TIME,
           v.service
      from v$sql v
where to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss')>ADD_MONTHS(trunc(sysdate,'MM'),-2)

Предложение where является необязательным. Вы можете отсортировать результаты по FIRST_LOAD_TIME и найти записи до двух месяцев назад.

person bonsvr    schedule 12.02.2013
comment
Многие запросы устарели из shared_pool. V$SQL, скорее всего, не будет иметь всех запросов за последние 2 месяца. - person Jon Heller; 14.02.2013
comment
Недавно я наткнулся на этот вопрос, и @JonHeller прав. v$sql не уходит достаточно далеко во времени. Однако существует представление под названием dba_hist_sqlstat, в котором может содержаться необходимая вам информация. Однако вам нужно присоединиться к snap_id и dba_hist_snapshot, чтобы узнать дату. - person Mr. Llama; 10.12.2014

Для недавнего SQL:

select * from v$sql

Для истории:

select * from dba_hist_sqltext
person grokster    schedule 13.10.2014
comment
Есть ли способ найти историю с датой? - person damndemon; 22.04.2020
comment
выберите * из заказа v$sql до LAST_ACTIVE_TIME - person grokster; 12.05.2020

Вы можете использовать этот оператор sql, чтобы получить историю на любую дату:

SELECT * FROM V$SQL V where  to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss') > sysdate - 60
person Ashish Pandey    schedule 05.06.2015