Як знайти останні бази даних SQL в базі даних?


Відповіді:


17

Ось 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

Можливо, буде повернуто кілька ідентифікаторів та ідентифікаторів екземпляра. Тому користувач повинен вибрати, як використовувати ці дані у веб-інтерфейсі тощо.


Лише невелика примітка: Oracle підтримує (не in... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
розумію,

1
'inst_id' означає ідентифікатор екземпляра, він не означає ідентифікатор встановлення.
чудо173

13

Консоль Oracles Enterprise Monitor показує цілу кількість інформації про те, які запити SQL беруть максимальний процесор, вузькі місця, найвищу активність у базі даних, блокуючи SQL та ін.

Для історичного підходу ви можете використовувати звіти AWR Oracle, щоб визначити сфери, які стосуються вас.

alt текст

введіть тут опис зображення


1
З цікавості - AWR - це інструмент, доступний для всіх ліцензій Oracle, і чи можу я ним користуватися лише через командний рядок?
Себастьян Рот

2
Вибачте, що я мав це згадати - з того, що я знаю, AWR вимагає окремого ліцензування - пакет налаштування та діагностики Oracle . Я вважаю за краще використовувати AWR з консолі Enterprise Manager - мені пощастило привілей (!) Використовувати консоль Enterprise Manager. Я також виявив, що ви можете використовувати SQL Developer для моніторингу SQL, але для цього потрібне вище ліцензування
Sathyajith Bhat

1
Oracle Enterprise Manager (OEM) дуже приємно. Ми можемо стежити за станом нашої бази даних майже в режимі реального часу за допомогою автоматично оновлених графіків. У нас на стіні великий монітор, який демонструє OEM для наших основних баз даних 24x7, і це надзвичайно корисно для виявлення проблем, які вони виникають.
ScottCher

4

Ви також можете використовувати 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.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.