gpt4 book ai didi

oracle - SQLDeveloper 使用超过 100MB 的 PGA

转载 作者:行者123 更新时间:2023-12-04 21:00:16 25 4
gpt4 key购买 nike

也许这是正常的,但在我的 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 中打开表时资源使用量都会增加,但即使关闭时内存也不会消失。如果表在打开时进行排序,问题会更糟,因为这似乎使用了更多内存。我理解这在排序时如何使用内存,甚至可能在它仍然打开时使用内存,但在它关闭后使用内存对我来说似乎是错误的。任何人都可以证实这一点吗?

更新:
我发现我的号码由于不了解 the UGA is stored in the PGA under dedicated server mode 而关闭了.这使得数字比原来低,但问题仍然存在,SQL Developer 似乎使用了过多的 PGA。

最佳答案

也许 SQL Developer 没有关闭它已经打开的游标。
因此,如果您运行一个对 1​​00 万行进行排序的查询,而 SQL Developer 只从那里提取前 20 行,那么如果您想向下滚动并提取更多行,它需要保持游标打开。

因此,只要游标处于打开状态且尚未到达 EOF(取回结束),它就需要保留一些与游标排序区域相关联的 PGA 内存仍处于分配状态(称为保留排序区域)。

选择一个 session 并运行:

select sql_id,operation_type,actual_mem_used,max_mem_used,tempseg_size
from v$sql_workarea_active
where sid = &SID_OF_INTEREST


这应该显示某些游标是否仍然以其内存保持打开状态...

关于oracle - SQLDeveloper 使用超过 100MB 的 PGA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com