← Performance
Oracle · Performance
How to check PGA and UGA memory per session in Oracle
Rank Oracle sessions by PGA and UGA memory (current and peak) from V$SESSTAT and V$STATNAME.
Tested on11g12c18c19c21c23ai26ai
For each session, show current and peak PGA and UGA memory alongside session identifiers (Oracle user, OS user, program, machine). Ranked by current PGA to surface memory hogs.
SET LINESIZE 145
SET PAGESIZE 9999
COLUMN sid FORMAT 999 HEADING 'SID'
COLUMN oracle_username FORMAT a12 HEADING 'Oracle User' JUSTIFY right
COLUMN os_username FORMAT a9 HEADING 'O/S User' JUSTIFY right
COLUMN session_program FORMAT a18 HEADING 'Session Program' TRUNC
COLUMN session_machine FORMAT a8 HEADING 'Machine' JUSTIFY right TRUNC
COLUMN session_pga_memory FORMAT 9,999,999,999 HEADING 'PGA Memory'
COLUMN session_pga_memory_max FORMAT 9,999,999,999 HEADING 'PGA Memory Max'
COLUMN session_uga_memory FORMAT 9,999,999,999 HEADING 'UGA Memory'
COLUMN session_uga_memory_max FORMAT 9,999,999,999 HEADING 'UGA Memory Max'
SELECT s.sid,
LPAD(s.username, 12) AS oracle_username,
LPAD(s.osuser, 9) AS os_username,
s.program AS session_program,
LPAD(s.machine, 8) AS session_machine,
(SELECT ss.value FROM v$sesstat ss, v$statname sn
WHERE ss.sid = s.sid
AND sn.statistic# = ss.statistic#
AND sn.name = 'session pga memory') AS session_pga_memory,
(SELECT ss.value FROM v$sesstat ss, v$statname sn
WHERE ss.sid = s.sid
AND sn.statistic# = ss.statistic#
AND sn.name = 'session pga memory max') AS session_pga_memory_max,
(SELECT ss.value FROM v$sesstat ss, v$statname sn
WHERE ss.sid = s.sid
AND sn.statistic# = ss.statistic#
AND sn.name = 'session uga memory') AS session_uga_memory,
(SELECT ss.value FROM v$sesstat ss, v$statname sn
WHERE ss.sid = s.sid
AND sn.statistic# = ss.statistic#
AND sn.name = 'session uga memory max') AS session_uga_memory_max
FROM v$session s
ORDER BY session_pga_memory DESC;performancememorypgaugav$sesstat