![](/img/trans.png)
[英]ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
[英]Tuning PGA_AGGREGATE_TARGET in 11.2
PGA Memory Advisor報告包含兩件事:
PGA_AGGREGATE_TARGET
的值不會提高性能。 根據“預計時間”列,將PGA_AGGREGATE_TARGET
從當前值9600 MB更改對性能的影響不到1%。 如果內存縮小到當前值的13%或增加到當前值的800%,則總DB時間或“ Estd Time”幾乎不變。
通常,如果Oracle認為數據庫時間不會增加,則沒有必要進行任何更改。 但是 ,在這種情況下,發生了一些奇怪的事情。
數據庫中的某些內容正在占用過多的PGA內存。
參數PGA_AGGREGATE_TARGET
旨在控制有多少內存可用於排序和散列之類的操作。 PGA還有其他用途,可能會迫使系統超出該目標。 報告列“ Estd PGA Totaloc Count”表示數據庫中的某些內容占用了超過28800 MB的內存。 您可能想找到那個記憶豬。 消除它可能會釋放可以通過其他方式間接提高性能的內存。
使用以下兩個查詢來查找當前和歷史的PGA內存問題。 我的猜測是系統連接過多或會話正在執行某些愚蠢的操作,例如使用BULK COLLECT
將大表加載到內存中。 您將要查找令人討厭的會話,然后確切地了解他們正在做什么,這會占用大量內存。
--PGA in current sessions:
select inst_id, sid, round(value/1024/1024) mb
from gv$sesstat
join v$statname on gv$sesstat.statistic# = v$statname.statistic#
where name = 'session pga memory'
order by value desc, sid;
--PGA allocated in historical sessions.
select round(pga_allocated/1024/1024/1024, 1) gb, gv$active_session_history.*
from gv$active_session_history
where pga_allocated is not null
order by pga_allocated desc;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.