sql >> Database teknologi >  >> RDS >> Oracle

Vis Oracle CPU-brug for sessioner i procent

Lang historie kort:du vil ikke være i stand til at gøre det med en enkelt forespørgsel, du bliver nødt til at skrive en PL/SQL for at indsamle nyttige data for at få brugbar information.

Oracle har "akkumuleret tid" statistik, det betyder at motoren løbende holder styr på brugen. Du bliver nødt til at definere et starttidspunkt og et sluttidspunkt for analyse.

Du kan forespørge 'DB CPU' fra 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 */

CPU-statistikker vil blive påvirket, hvis du kun har #1 CPU eller #8 CPU'er. Så du bliver nødt til at bestemme, hvor mange CPU'er din motor bruger.

Du kan forespørge 'cpu_count' fra V$PARAMETER for at få denne værdi.

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

Så er det ganske enkelt:

Maksimal total tid vil være sekunder * antal CPU'er, så hvis du kun har #1 CPU, så ville den maksimale samlede tid være "60", men hvis du har #2 CPU'er, vil den maksimale samlede tid være "120" .. #3 CPU'er vil være "180" .. osv. ...

Så du tager starttidspunkt og sluttidspunkt for den analyserede periode ved hjælp af sysdate:

t_start := sysdate ;
t_end := sysdate ;

Og nu beregner du følgende:

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 ;

Og det er det, "avgcpu" er den værdi, du leder efter.




  1. Iteration gennem PostgreSQL-poster. Hvordan henvises til data fra næste række?

  2. Tæller antallet af rækker, der returneres af lagret procedure

  3. Strukturering af lignende forespørgsler i mySQL &VB.Net

  4. Indsættelse af værdier i en tabel i en funktion modtager en fejl, men når du forsøger at indsætte værdier i tabellen uden for en funktion, fungerer det fint