也许这很正常,但在我的 Oracle 11g 数据库中,我看到使用 Oracle 的 SQL Developer 的程序员经常消耗超过 100MB 的 UGA 和 PGA 内存组合。我想知道这是否正常以及可以做些什么。我们的数据库在 32 位版本的 Windows 2008 上,因此内存限制越来越受到关注。我正在使用以下查询来显示内存使用情况:
SELECT e.SID, e.username, e.status, b.PGA_MEMORY
FROM v$session e
LEFT JOIN
(select y.SID, y.value pga,
TO_CHAR(ROUND(y.value/1024/1024),99999999) || ' MB' PGA_MEMORY
from v$sesstat y, v$statname z
where y.STATISTIC# = z.STATISTIC# and NAME = 'session pga memory') b
ON e.sid=b.sid
WHERE (PGA)/1024/1024 > 20
ORDER BY 4 DESC;
似乎每次在 SQLDeveloper 中打开表时,资源使用率都会上升,但即使它关闭,内存也不会消失。如果表在打开时进行排序,问题会更严重,因为这似乎会使用更多内存。我知道这将如何在排序时使用内存,甚至在它仍然打开的时候,但是在它关闭后使用内存对我来说似乎是错误的。谁能证实这一点?
更新:我发现我的号码是关闭的,因为不了解UGA 在专用服务器模式下存储在 PGA 中。这使得数字低于原来的水平,但问题仍然存在,SQL Developer 似乎使用了过多的 PGA。