it-swarm-eu.dev

Jak najít nejnovější příkazy SQL v databázi?

Rád získávám poslední provedené příkazy v mé databázi spolu s ukazateli výkonu.

Proto ráda vím, které příkazy SQL byly nejvíce náročné na CPU/DISK.

25
Sebastian Roth

Zde je SQL, které tuto úlohu vykonává. Otevřeno k soudu.

Krok 1: Určete ID a installat ID a ID uživatele.

SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';

Krok 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

Může se vyskytnout více Ids a Ids instance vrácených. Je tedy na uživateli, aby si vybral, jak tato data použít ve webovém rozhraní atd.

17
Sebastian Roth

Konzola Oracles Enterprise Monitor zobrazuje celou řadu informací o tom, které dotazy SQL berou maximum CPU, úzká místa, nejvyšší aktivitu v databázi, blokování SQL a kol.

Pro historický přístup můžete pomocí sestav Oracle [~ # ~] awr [~ # ~] určit oblasti, které se vás týkají.

alt text

enter image description here

13
Sathyajith Bhat

Můžete také použít V$SQL, existuje několik zajímavých sloupců RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT atd.

To vám poskytne 10 nejlepších příkazů přečtením disku (poznámka - toto je kumulativní pro všechny spouštění):

select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11

Pokud je příkaz stále v V$SQL_PLAN můžete získat skutečný plán vysvětlení dotazu:

select * from table(dbms_xplan.display_cursor('sql_id',child_number));

Rád také používám V$SQL_PLAN protože obsahuje dobré informace. Pokud vaše statistics_level=ALL Můžeš použít V$SQL_PLAN_STATISTICS.

4
gabrielp

Pro poslední SQL:

select * from v$sql

Pro historii:

select * from dba_hist_sqltext
2
grokster