Performans göstergelerinin yanı sıra veri tabanımdaki son ifadeleri almayı seviyorum.
Bu nedenle, hangi SQL ifadelerinin en çok CPU / DISK yoğun olduğunu bilmek isterim.
Performans göstergelerinin yanı sıra veri tabanımdaki son ifadeleri almayı seviyorum.
Bu nedenle, hangi SQL ifadelerinin en çok CPU / DISK yoğun olduğunu bilmek isterim.
Yanıtlar:
İşte işi yapan SQL. Deneme için aç.
Adım 1: installatin kimliklerini ve kullanıcı kimliklerini belirleyin.
SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';
Adım 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
Döndürülen birden fazla kimlik ve örnek kimlik olabilir. Dolayısıyla, kullanıcıların bu verileri bir web arayüzünde vb. Nasıl kullanacakları konusundaki tercihlerinden kaynaklanmaktadır.
in
operatörün ... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Oracles Enterprise Monitor konsolu, hangi SQL sorgularının maksimum CPU, darboğazlar, veritabanındaki en üst düzey etkinlik, hangi SQL sorgularını aldığını, SQL ve diğerlerini engellediğini gösterir.
Tarihsel bir yaklaşım için, Oracle'ın AWR raporlarını sizinle ilgili alanları işaretlemek için kullanabilirsiniz.
Ayrıca kullanabilirsiniz V$SQL
, birkaç ilginç sütun var RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
.
Bu size disk okuması ile ilk 10 ifadeyi verir (not - bu tüm işlemler için kümülatiftir):
select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11
Eğer ifade hala mevcutsa, V$SQL_PLAN
sorgu için gerçek bir açıklama planı alabilirsiniz:
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
Ayrıca V$SQL_PLAN
iyi bilgi içerdiği için kullanmayı seviyorum . Eğer statistics_level=ALL
kullanabilirsen V$SQL_PLAN_STATISTICS
.