In the Oracle Database 18c
I read: "The UGA is session memory, which is memory allocated for session
variables, such as logon information, and other information required by a
database session. Essentially, the UGA stores the session state. ... The UGA
must be available to a database session for the life of the session. For this
reason, the UGA cannot be stored in the PGA when using a shared
connection because the PGA is specific to a single process. Therefore, the UGA
is stored in the SGA when using shared server connections, enabling any shared
server process access to it. When using a dedicated
connection, the UGA is stored in the PGA."
Here are some metrics from an Oracle Database 18c dedicated-server instance. It
does not appear that "the UGA is stored in the PGA." What am I missing? Memory
leaks? Timing issues in the monitoring functionality?
Instance Activity Stats - Absolute Values
* Statistics with absolute values (should not be diffed)
Statistic Begin Value End Value
logons current 160 174
opened cursors current 304 388
session cursor cache count 73,510 102,126
session pga memory 371,171,328 429,231,056
session pga memory max 517,122,688 996,809,616
session uga memory 889,632,888 1,231,680,896
session uga memory max 5,794,278,744 7,998,201,224
Also, does AWR report the max(session pga memory max) and max(session uga
memory max) from v$sesstat across all connected sessions when the snapshot was
taken? The reason I ask is because sum(session pga memory max) and sum(session
uga memory max) across all connected sessions don't seem very relevant to me
becaus each max would happen at a different point in time.
Thanks in advance for any insights.