Total Pageviews

Sunday, January 11, 2026

Script to find Top CPU consuming PDBs (last few minutes)

 SET LINES 200
COL pdb_name FORMAT A20

SELECT
    p.name            AS pdb_name,
    ROUND(SUM(s.value)/100,2) AS cpu_seconds,
    COUNT(*)          AS sessions
FROM
    v$sesstat s,
    v$statname n,
    v$session se,
    v$pdbs p
WHERE
    s.statistic# = n.statistic#
AND s.sid = se.sid
AND n.name = 'CPU used by this session'
AND se.con_id = p.con_id
GROUP BY p.name
ORDER BY cpu_seconds DESC;

==============or================
SET LINES 200
COL pdb_name   FORMAT A15
COL username   FORMAT A15
COL program    FORMAT A30
COL service    FORMAT A20
COL cpu_mins   FORMAT 99990.99
SELECT
    ROWNUM AS rank,
    x.*
FROM
(
    SELECT
        p.name              AS pdb_name,
        s.sid,
        s.serial#,
        s.username,
        s.service_name      AS service,
        s.program,
        s.sql_id,
        ROUND(v.value / (100*60), 2) AS cpu_mins
    FROM
        v$statname  n,
        v$sesstat  v,
        v$session  s,
        v$pdbs     p
    WHERE
        n.name = 'CPU used by this session'
    AND v.statistic# = n.statistic#
    AND v.sid = s.sid
    AND s.con_id = p.con_id
    AND v.value > 0
    ORDER BY v.value DESC
) x
WHERE ROWNUM <= 10;

No comments:

Post a Comment