Làm thế nào để tìm các câu lệnh SQL mới nhất trong cơ sở dữ liệu?


Câu trả lời:


17

Đâ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.


Chỉ cần lưu ý nhỏ: Oracle hỗ trợ toán tử (không có ý tưởng từ phiên bản nào) invớ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), ... )
Betlista

1
'inst_id' là viết tắt của Id cá thể, nó không có nghĩa là id cài đặt.
phép lạ173

13

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.

văn bản thay thế

nhập mô tả hình ảnh ở đây


1
Vì tò mò - AWR là một công cụ có sẵn cho tất cả các giấy phép của Oracle và tôi chỉ có thể sử dụng nó thông qua dòng lệnh?
Sebastian Roth

2
Xin lỗi tôi nên đã đề cập đến nó - từ những gì tôi biết, AWR yêu cầu cấp phép riêng - Gói Điều chỉnh & Chẩn đoán của Oracle . Tôi thích sử dụng AWR từ bảng điều khiển Enterprise Manager - Tôi đã được ban phước với đặc quyền (!) Để sử dụng bảng điều khiển Enterprise Manager. Tôi cũng thấy rằng bạn có thể sử dụng SQL Developer để theo dõi SQL, nhưng điều đó đòi hỏi phải có giấy phép ở trên
Sathyajith Bhat

1
Quản lý doanh nghiệp Oracle (OEM) là rất tốt đẹp. Chúng tôi có thể theo dõi sức khỏe cơ sở dữ liệu của chúng tôi trong thời gian gần với các biểu đồ được làm mới tự động. Chúng tôi đã có một màn hình lớn treo trên tường hiển thị OEM cho cơ sở dữ liệu chính của chúng tôi 24x7 và nó rất có lợi trong việc xác định các vấn đề khi chúng xảy ra.
ScottCher

4

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_FULLTEXTvv

Đ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_PLANbạ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_PLANvì nó chứa thông tin tốt. Nếu statistics_level=ALLbạn có thể sử dụng V$SQL_PLAN_STATISTICS.


2

Đối với SQL gần đây:

select * from v$sql

Đối với lịch sử:

select * from dba_hist_sqltext
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.