sql >> Database teknologi >  >> RDS >> Oracle

Sådan ser du den faktiske Oracle SQL-sætning, der udføres

På dataordbogssiden er der en masse værktøjer, du kan bruge til såsom Schema Spy

For at se på hvilke forespørgsler der kører, se på visningerne sys.v_$sql og sys.v_$sqltext. Du skal også have adgang til sys.all_users

En ting at bemærke, at forespørgsler, der bruger parametre, vises én gang med indgange som

and TABLETYPE=’:b16’

mens andre, der ikke dukker op flere gange, såsom:

and TABLETYPE=’MT’

Et eksempel på disse tabeller i aktion er følgende SQL for at finde top 20 diskread hogs. Du kan ændre dette ved at fjerne WHERE rækkenummeret <=20 og måske tilføje ORDER BY modul . Du oplever ofte, at modulet vil give dig et fingerpeg om, hvilken software der kører forespørgslen (f.eks.:"TOAD 9.0.1.8", "JDBC Thin Client", "[email protected] (TNS V1-V3)" osv.)

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;

Bemærk, at hvis forespørgslen er lang .. bliver du nødt til at forespørge v_$sqltext. Dette gemmer hele forespørgslen. Du bliver nødt til at slå ADDRESSEN og HASH_VALUE op og samle alle brikkerne op. F.eks.:

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


  1. Implementer en Hybrid Cloud MySQL-database ved hjælp af ClusterControl

  2. Vis fuld SQL-forespørgsel i Vis procesliste for MySQL

  3. Hvordan dropper man en kolonne i SQL?

  4. Sådan får du alle tabellerne med eller uden primær nøglebegrænsning i SQL Server Database - SQL Server / TSQL Tutorial 59