You Asked
Tom,
Last Thursday, I got a call from one of our systems administrators that users were having problems logging in. We were not under heavy load on the database, but we had a lot of jdbc connections (from oracle apps self service), we're running dedicated server. We hit our max processes at the kernel level (HP/UX), but there seemed to be a lot of swapping going on. We ended up having to reboot the server to increase the kernel parameters.
When I was investigating the problem, I noticed that we were using a lot more pga memory than I would have expected. Our pga aggregate target is 4g, pretty close to where statspack recommends. We have 16g of real memory and the sga is about 3g. We had 1300 sessions as of the last snap. This is a snippet from statspack immediately before the we reached our process max.
Estd Extra Estd PGA Estd PGA
PGA Target Size W/A MB W/A MB Read/ Cache Overalloc
Est (MB) Factr Processed Written to Disk Hit % Count
---------- ------- ---------------- ---------------- -------- ----------
512 0.1 6,866,574.8 2,494,712.4 73.0 69,753
1,024 0.3 6,866,574.8 1,835,095.6 79.0 49,404
2,048 0.5 6,866,574.8 873,746.1 89.0 16,875
3,072 0.8 6,866,574.8 448,302.8 94.0 3,872
4,096 1.0 6,866,574.8 216,221.0 97.0 2,085
4,915 1.2 6,866,574.8 175,407.1 98.0 187
Here's a snapsot from 6am to 2pm, right before we started having problems.
session pga memory 5,747,373,736 199,554.7 39,892.4
session pga memory max 7,886,431,176 273,824.9 54,739.5
session uga memory 52,020,142,696 1,806,192.2 361,070.5
session uga memory max 24,756,850,168 859,583.0 171,836.7
compared to the day before, Wednesday 6am-5pm.
session pga memory 2,131,736,416 53,831.7 17,701.3
session pga memory max 2,997,231,992 75,687.7 24,888.2
session uga memory 61,902,483,504 1,563,194.0 514,020.7
session uga memory max 25,466,098,192 643,083.3 211,463.3
Here are the values from Sunday, should be almost entirely idle.
session pga memory 210,587,568 5,317.9 10,526.8
session pga memory max 271,785,792 6,863.3 13,585.9
session uga memory 60,166,462,184 1,519,355.1 3,007,571.2
session uga memory max 7,395,998,480 186,767.6 369,707.5
I've been trying to find out what the session pga memory max means, and why the uga memory is so high. Should I really care about those numbers, or just the session pga memory? I've looked through your book and askTom, but haven't really found anything that gives a good definition of the numbers and their importance.
We expect a high load on this coming Thursday, but not as high as last week, so I'll be watching more closely.
Thanks in advance, and I've really enjoyed your examples over the years,
Greg
and Tom said...
pga max is the max pga used by a session at a point in time. it does not make sense to "add it up" (query v$pgastat instead please)
UGA memory is session memory - in dedicated server, it is contained in the PGA (so the UGA is "inside" the PGA, the PGA number already covered the UGA memory). The UGA memory would/could be for things like plsql variables, session state and the like.
Rating
(13 ratings)
Is this answer out of date? If it is, please let us know via a Comment