На сервере выполнялся SQL-запрос на обновление, что позже вызвало много проблем.
Как я могу получить список запросов на обновление, выполненных за последние 2 месяца, чтобы я мог точно отследить проблемный SQL-запрос?
На сервере выполнялся SQL-запрос на обновление, что позже вызвало много проблем.
Как я могу получить список запросов на обновление, выполненных за последние 2 месяца, чтобы я мог точно отследить проблемный SQL-запрос?
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 и найти записи до двух месяцев назад.
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
Вы можете использовать этот оператор sql, чтобы получить историю на любую дату:
SELECT * FROM V$SQL V where to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss') > sysdate - 60