Мені подобається отримувати останні мої заяви в базі даних, а також показники ефективності.
Як таке, мені хочеться знати, які заяви SQL були найбільш інтенсивними CPU / DISK.
Мені подобається отримувати останні мої заяви в базі даних, а також показники ефективності.
Як таке, мені хочеться знати, які заяви SQL були найбільш інтенсивними CPU / DISK.
Відповіді:
Ось SQL зробити цю роботу. Відкрито для судового розгляду.
Крок 1: Визначте інсталяційні ідентифікатори та ідентифікатори користувачів.
SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';
Крок 2:
SELECT
s.sid
,s.CLIENT_INFO
,s.MACHINE
,s.PROGRAM
,s.TYPE
,s.logon_time
,s.osuser
,sq.sorts
,sq.DISK_READS
,sq.BUFFER_GETS
,sq.ROWS_PROCESSED
,sq.SQLTYPE
,sq.SQL_TEXT
FROM gv$session s
, gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
AND s.inst_id = :inst_id -- replace with instID from above
AND s.sid = :sid -- replace with ID from above
AND sq.inst_id = s.inst_id
Можливо, буде повернуто кілька ідентифікаторів та ідентифікаторів екземпляра. Тому користувач повинен вибрати, як використовувати ці дані у веб-інтерфейсі тощо.
in
... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Консоль Oracles Enterprise Monitor показує цілу кількість інформації про те, які запити SQL беруть максимальний процесор, вузькі місця, найвищу активність у базі даних, блокуючи SQL та ін.
Для історичного підходу ви можете використовувати звіти AWR Oracle, щоб визначити сфери, які стосуються вас.
Ви також можете використовувати V$SQL
, є кілька цікавих стовпців RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
і т.д.
Це дасть вам 10 найвищих тверджень з читання диска (зауважте - це сукупно для всіх виконання):
select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11
Якщо виписка все ще є, V$SQL_PLAN
ви можете отримати фактичний план пояснення запиту:
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
Я також люблю використовувати, V$SQL_PLAN
оскільки вона містить хорошу інформацію. Якщо statistics_level=ALL
ви можете використовувати V$SQL_PLAN_STATISTICS
.