Oracle SQL History

Автор: Roger Morrison
Дата создания: 6 Сентябрь 2021
Дата обновления: 9 Май 2024
Anonim
SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial
Видео: SQL History tips and tricks in Oracle SQL Developer? || Oracle SQL Developer Tutorial

Содержание

Поскольку Oracle собирает образцы и записывает все активные сеансы в базу данных, простой запрос позволяет получить историю операторов SQL за определенный период времени.


Oracle записывает историческую информацию SQL в v $ active_session_history (ноутбук с записью в базу данных на широкоэкранном изображении 15,4 дюйма от .shock от Fotolia.com)

важность

Oracle автоматически собирает образцы всех сеансов, которые запускаются в базе данных каждую секунду, и сохраняет информацию из истории SQL в представлении словаря данных v $ active_session_history. Это циклический буфер, поэтому, когда он заполняется, Oracle автоматически сохраняет свою информацию в представлении словаря данных dba_hist_active_sess_history перед ее перезаписью.

функция

Вы можете получить историю операторов SQL, выполненных за определенный период времени в базе данных, запросив эти два представления. Например, следующий запрос возвращает список первых 4000 символов операторов SQL, выполненных между 9:00 и 9:05 30 сентября 2010 года:


выберите a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) из dba_hist_active_sess_history a, dba_hist_sqltext b

где sample_time между to_date («20100930: 09: 00», «ггггммдд: чч24: ми»)

и to_date («20100930: 09: 01», «ггггммдд: чч24: ми») и b.sql_id = a.sql_id

объединить всех

выберите a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) из v $ active_session_history a, v $ sqlarea b

где sample_time между to_date («20100930: 09: 00», «ггггммдд: чч24: ми») и

to_date ('20100930: 09: 01', 'ггггммдд: чч24: ми') и b.sql_id = a.sql_id

соображения

Кроме того, Oracle генерирует статистику ежечасного выполнения операторов SQL в своем автоматическом репозитории рабочей нагрузки. Вы можете увидеть, какие операторы SQL требуют больше ресурсов в данный момент, запросив представления словаря данных dba_hist_sqlstat и dba_hist_snapshot.

эффекты

Например, следующий запрос возвращает список операторов SQL, выполненных между 9:00 и 10:00, в дополнение к времени ЦП, истекшему времени, времени io_wait и количеству обращений к диску. Выход упорядочен по времени процессора.


выберите a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta из dba_hist_sqlstat a, dba_hist_sqltext b, где_d_id_bid (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' и to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' упорядочить по cpu_time

/