Aplikasi saya, yang menggunakan database Oracle, menjadi lambat atau sepertinya telah berhenti sama sekali.
Bagaimana cara mengetahui kueri mana yang paling mahal, sehingga saya dapat menyelidiki lebih lanjut?
Yang ini menunjukkan SQL yang saat ini "AKTIF": -
select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
from v$sqltext_with_newlines t,V$SESSION s
where t.address =s.sql_address
and t.hash_value = s.sql_hash_value
and s.status = 'ACTIVE'
and s.username <> 'SYSTEM'
order by s.sid,t.piece
/
Ini menunjukkan kunci. Terkadang segala sesuatunya berjalan lambat, tetapi itu karena diblokir menunggu kunci:
select
object_name,
object_type,
session_id,
type, -- Type or system/user lock
lmode, -- lock mode in which session holds lock
request,
block,
ctime -- Time since current mode was granted
from
v$locked_object, all_objects, v$lock
where
v$locked_object.object_id = all_objects.object_id AND
v$lock.id1 = all_objects.object_id AND
v$lock.sid = v$locked_object.session_id
order by
session_id, ctime desc, object_name
/
Ini bagus untuk menemukan operasi yang lama (mis. Scan tabel lengkap). Jika karena banyak operasi yang singkat, tidak akan ada yang muncul.
COLUMN percent FORMAT 999.99
SELECT sid, to_char(start_time,'hh24:mi:ss') stime,
message,( sofar/totalwork)* 100 percent
FROM v$session_longops
WHERE sofar/totalwork < 1
/
alter system kill session
seperti yang dijelaskan di sini: docs.oracle.com/cd/B28359_01/server.111/b28310/…Coba ini, ini akan memberi Anda kueri yang sedang berjalan selama lebih dari 60 detik. Perhatikan bahwa ini mencetak beberapa baris per kueri yang berjalan jika SQL memiliki banyak baris. Lihat sid, serial # untuk melihat apa yang dimiliki bersama.
sumber
v $ session_longops
If you look for sofar! = Totalwork Anda akan melihat yang belum selesai, tetapi entri tidak dihapus ketika operasi selesai sehingga Anda dapat melihat banyak riwayat di sana juga.
sumber
sumber
Anda dapat membuat laporan AWR (repositori beban kerja otomatis) dari database.
Jalankan dari baris perintah SQL * Plus:
Baca dokumen yang terkait dengan cara menghasilkan & memahami laporan AWR. Ini akan memberikan gambaran lengkap tentang kinerja database dan masalah sumber daya. Setelah kita terbiasa dengan laporan AWR, akan sangat membantu untuk menemukan SQL Teratas yang menghabiskan sumber daya.
Selain itu, di 12C EM Express UI kita dapat menghasilkan AWR.
sumber
Anda dapat memeriksa detail kueri yang berjalan lama seperti% selesai dan sisa waktu menggunakan kueri di bawah ini:
Untuk daftar lengkap langkah pemecahan masalah, Anda dapat memeriksa di sini: Pemecahan masalah sesi yang berjalan lama
sumber
sumber