Tôi muốn nhận được các báo cáo thực hiện mới nhất trong cơ sở dữ liệu của mình, cùng với các chỉ số hiệu suất.
Như vậy, tôi muốn biết, câu lệnh SQL nào tập trung nhiều CPU / DISK nhất.
Tôi muốn nhận được các báo cáo thực hiện mới nhất trong cơ sở dữ liệu của mình, cùng với các chỉ số hiệu suất.
Như vậy, tôi muốn biết, câu lệnh SQL nào tập trung nhiều CPU / DISK nhất.
Câu trả lời:
Đây là SQL để thực hiện công việc. Mở để dùng thử.
Bước 1: Xác định ID installatin & ID người dùng.
SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';
Bước 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
Có thể có nhiều Id & Id Id được trả về. Vì vậy, tùy thuộc vào lựa chọn của người dùng về cách sử dụng dữ liệu này trong giao diện web, v.v.
in
với các bộ dữ liệu, vì vậy, từ ví dụ trên... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
Bảng điều khiển Oracles Enterprise Monitor cho thấy toàn bộ thông tin về các truy vấn SQL nào đang chiếm CPU tối đa, tắc nghẽn, hoạt động hàng đầu trong cơ sở dữ liệu, chặn SQL và cộng sự.
Đối với cách tiếp cận lịch sử, bạn có thể sử dụng các báo cáo AWR của Oracle để xác định các khu vực liên quan đến bạn.
Bạn cũng có thể sử dụng V$SQL
, có một số cột thú vị, RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
vv
Điều này sẽ cung cấp cho bạn 10 câu lệnh hàng đầu theo đĩa đọc (lưu ý - đây là tích lũy cho tất cả các lần thực hiện):
select sql_id,child_number from
(
select sql_id,child_number from v$sql
order by disk_reads desc
)
where rownum<11
Nếu câu lệnh vẫn còn, V$SQL_PLAN
bạn có thể nhận được một kế hoạch giải thích thực tế cho truy vấn:
select * from table(dbms_xplan.display_cursor('sql_id',child_number));
Tôi cũng thích sử dụng V$SQL_PLAN
vì nó chứa thông tin tốt. Nếu statistics_level=ALL
bạn có thể sử dụng V$SQL_PLAN_STATISTICS
.
Đối với SQL gần đây:
select * from v$sql
Đối với lịch sử:
select * from dba_hist_sqltext