Історія Oracle SQL

Автор: Roger Morrison
Дата Створення: 8 Вересень 2021
Дата Оновлення: 10 Травень 2024
Anonim
#07. Основы работы в Oracle SQL Developer
Відеоролик: #07. Основы работы в Oracle SQL Developer

Зміст

Оскільки 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', 'yyyymmdd: hh24: mi')

і to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') і 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', 'yyyymmdd: hh24: mi') і

to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') і b.sql_id = a.sql_id

Міркування

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

Ефекти

Наприклад, наступний запит повертає список операторів SQL, що виконуються між 9 ранку і 10 ранку, крім часу процесора, минулого часу, часу 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, де a.sql_id = b.sql_id і snap_id = (виберіть відмінний snap_id від dba_hist_snapshot де to_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' і to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' замовлення за cpu_time

/