Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara melihat pernyataan Oracle SQL aktual yang sedang dieksekusi

Di sisi kamus data ada banyak alat yang dapat Anda gunakan seperti Schema Spy

Untuk melihat kueri apa yang sedang berjalan, lihat tampilan sys.v_$sql dan sys.v_$sqltext. Anda juga memerlukan akses ke sys.all_users

Satu hal yang perlu diperhatikan bahwa kueri yang menggunakan parameter akan muncul sekali dengan entri seperti

and TABLETYPE=’:b16’

sedangkan yang lain tidak akan muncul beberapa kali seperti:

and TABLETYPE=’MT’

Contoh tabel ini dalam tindakan adalah SQL berikut untuk menemukan 20 babi diskread teratas. Anda dapat mengubahnya dengan menghapus WHERE rownum <=20 dan mungkin menambahkan ORDER BY modul . Anda sering menemukan modul akan memberi Anda petunjuk tentang perangkat lunak apa yang menjalankan kueri (mis:"TOAD 9.0.1.8", "JDBC Thin Client", "[email protected] (TNS V1-V3)" dll)

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;

Perhatikan bahwa jika kuerinya panjang .. Anda harus menanyakan v_$sqltext. Ini menyimpan seluruh kueri. Anda harus mencari ADDRESS dan HASH_VALUE dan mengambil semua bagian. Misal:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengaturan Django Oracle db

  2. Bagaimana memilih perbandingan dua kolom sebagai satu kolom di Oracle

  3. Bagaimana cara menggunakan enum di Oracle?

  4. Membuat pemicu untuk hanya berjalan ketika tabel baru sedang dibuat

  5. RANK, DENSE_RANK dan ROW_NUMBER berfungsi di Oracle