Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hiển thị mức sử dụng CPU oracle cho các phiên dưới dạng phần trăm

Câu chuyện ngắn:bạn sẽ không thể làm điều đó với một truy vấn duy nhất, bạn sẽ cần viết PL / SQL để thu thập dữ liệu hữu ích nhằm thu được thông tin hữu ích.

Oracle đã thống kê "thời gian tích lũy", điều này có nghĩa là công cụ này luôn theo dõi quá trình sử dụng. Bạn sẽ phải xác định thời gian bắt đầu và thời gian kết thúc để phân tích.

Bạn có thể truy vấn 'DB CPU' từ V $ SYS_TIME_MODEL

select value into t_db_cpu_i
from sys.V_$SYS_TIME_MODEL
where stat_name = 'DB CPU' ;  /* start time */ 
...
select value into t_db_cpu_f
from sys.V_$SYS_TIME_MODEL
where stat_name = 'DB CPU' ; /* end time */

Số liệu thống kê về CPU sẽ bị ảnh hưởng nếu bạn chỉ có CPU # 1 hoặc # 8 CPU. Vì vậy, bạn sẽ phải xác định động cơ của mình đang sử dụng bao nhiêu CPU.

Bạn có thể truy vấn 'cpu_count' từ V $ PARAMETER để lấy giá trị này.

select value into t_cpus
from sys.v_$parameter
where name='cpu_count' ;

Sau đó, nó khá đơn giản:

Tổng thời gian tối đa sẽ là giây * số CPU, vì vậy nếu bạn chỉ có # 1 CPU thì tổng thời gian tối đa sẽ là "60", nhưng nếu bạn có # 2 CPU thì tổng thời gian tối đa sẽ là "120" .. # 3 CPU sẽ là "180" .. vv ...

Vì vậy, bạn tính thời gian bắt đầu và thời gian kết thúc của khoảng thời gian được phân tích bằng cách sử dụng sysdate:

t_start := sysdate ;
t_end := sysdate ;

Và bây giờ bạn tính toán như sau:

seconds_elapsed := (t_end - t_start)*24*60*60 ;
total_time := seconds_elapsed * t_cpus ; 
used_cpu := t_db_cpu_f - t_db_cpu_i ;
secs_cpu := seconds_elapsed/1000000 ;
avgcpu := (secs_cpu/total_time)*100 ;

Và đó là nó, "avgcpu" là giá trị bạn đang tìm kiếm.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết hợp Oracle SQL MIN và MAX từ cùng một bảng

  2. ORACLE RAW ở định dạng chuỗi thành GUID tiêu chuẩn

  3. làm thế nào để trích xuất định dạng ngày từ một oracle chuỗi

  4. Làm cách nào để kết nối với cơ sở dữ liệu oracle dưới dạng sysdba bằng bltoolkit?

  5. Oracle cùng một tên bảng trên các lược đồ khác nhau?