sql >> Databáze >  >> RDS >> Oracle

Jak zobrazit skutečný příkaz Oracle SQL, který se provádí

Na straně datového slovníku existuje mnoho nástrojů, které můžete použít, jako je Schema Spy

Chcete-li se podívat, jaké dotazy běží, podívejte se na zobrazení sys.v_$sql a sys.v_$sqltext. Budete také potřebovat přístup k sys.all_users

Jedna věc, kterou je třeba poznamenat, že dotazy, které používají parametry, se jednou zobrazí s položkami jako

and TABLETYPE=’:b16’

zatímco ostatní, které se nezobrazují, se objeví vícekrát, například:

and TABLETYPE=’MT’

Příkladem těchto tabulek v akci je následující SQL k nalezení 20 nejlepších prasat čtení disku. Toto můžete změnit odstraněním WHERE rownum <=20 a možná přidat modul ORDER BY . Často zjistíte, že modul vám dá bažinou stopu, jaký software spouští dotaz (např.:"TOAD 9.0.1.8", "JDBC Thin Client", "[email protected] (TNS V1-V3)" atd.)

SELECT 
 module, 
 sql_text, 
 username, 
 disk_reads_per_exec, 
 buffer_gets, 
 disk_reads, 
 parse_calls, 
 sorts, 
 executions, 
 rows_processed, 
 hit_ratio, 
 first_load_time, 
 sharable_mem, 
 persistent_mem, 
 runtime_mem, 
 cpu_time, 
 elapsed_time, 
 address, 
 hash_value 
FROM 
  (SELECT
   module, 
   sql_text , 
   u.username , 
   round((s.disk_reads/decode(s.executions,0,1, s.executions)),2)  disk_reads_per_exec, 
   s.disk_reads , 
   s.buffer_gets , 
   s.parse_calls , 
   s.sorts , 
   s.executions , 
   s.rows_processed , 
   100 - round(100 *  s.disk_reads/greatest(s.buffer_gets,1),2) hit_ratio, 
   s.first_load_time , 
   sharable_mem , 
   persistent_mem , 
   runtime_mem, 
   cpu_time, 
   elapsed_time, 
   address, 
   hash_value 
  FROM
   sys.v_$sql s, 
   sys.all_users u 
  WHERE
   s.parsing_user_id=u.user_id 
   and UPPER(u.username) not in ('SYS','SYSTEM') 
  ORDER BY
   4 desc) 
WHERE
 rownum <= 20;

Všimněte si, že pokud je dotaz dlouhý .. budete muset dotazovat v_$sqltext. Tím se uloží celý dotaz. Budete muset vyhledat ADRESU a HASH_VALUE a vyzvednout všechny kusy. Např.:

SELECT
 *
FROM
 sys.v_$sqltext
WHERE
 address = 'C0000000372B3C28'
 and hash_value = '1272580459'
ORDER BY 
 address, hash_value, command_type, piece
;


  1. Nelze změnit sloupec použitý v omezení cizího klíče

  2. Migrace Laravel:jedinečný klíč je příliš dlouhý, i když je zadán

  3. SQL, jak aktualizovat data

  4. Porovnání Amazon RDS Point-in-Time Recovery s ClusterControl