Bạn có thể lấy đệm trung bình được mỗi thực hiện trong một khoảng thời gian hoạt động của dụ:
SELECT username,
buffer_gets,
disk_reads,
executions,
buffer_get_per_exec,
parse_calls,
sorts,
rows_processed,
hit_ratio,
module,
sql_text
-- elapsed_time, cpu_time, user_io_wait_time, ,
FROM (SELECT sql_text,
b.username,
a.disk_reads,
a.buffer_gets,
trunc(a.buffer_gets/a.executions) buffer_get_per_exec,
a.parse_calls,
a.sorts,
a.executions,
a.rows_processed,
100 - ROUND (100 * a.disk_reads/a.buffer_gets, 2) hit_ratio,
module
-- cpu_time, elapsed_time, user_io_wait_time
FROM v$sqlarea a, dba_users b
WHERE a.parsing_user_id = b.user_id
AND b.username NOT IN ('SYS', 'SYSTEM', 'RMAN','SYSMAN')
AND a.buffer_gets > 10000
ORDER BY buffer_get_per_exec DESC)
WHERE ROWNUM <= 20
Có cách nào để lấy dữ liệu bằng truy vấn sql không? Oracle có duy trì dữ liệu liên quan trong một số bảng hệ thống không? –
Nó không duy trì nhiều dữ liệu trong các bảng hệ thống khi bạn nhận được với tkprof. Xem câu trả lời của tôi cho một cách nhanh chóng và bẩn để tìm các báo cáo xấu. tkprof là tốt hơn nhưng bạn cần phải thiết lập cụ thể một thử nghiệm và chạy nó. –