2011-03-23 63 views
0

因此,我們有一個運行Win 2008 R2服務器的Oracle 11g實例。雖然我知道甲骨文和微軟可能不會相處得很好,它得到的地步,甲骨文是吃了公羊的約50%在包裝盒上,並永遠不會釋放它,所以時不時,我蹦蹦跳跳的服務只是爲了把它沖掉。我一直在試圖找出是否有其他方法來釋放這種內存,而不必反彈服務,但目前爲止沒有運氣。在Win 2008中Oracle 11g內存泄露?

有沒有其他人遇到過這一點,並找到一種方式來刷新通過其他手段內存?任何輸入將不勝感激!

下面是SPFILE /參數的當前分配上的這種情況...如果你有一個基於可用內存的任何建議的設置,只是讓我知道你需要什麼,我可以提供更多的信息。非常感謝您對此的意見。

archive_lag_target     integer 0 
db_flashback_retention_target  integer 1440 
fast_start_io_target     integer 0 
fast_start_mttr_target    integer 0 
memory_max_target     integer 10368319488 
memory_target      integer 10368319488 
parallel_servers_target    integer 64 
pga_aggregate_target     integer 0 
sga_target       integer 0 

回答

10

您確定這是泄漏而不是Oracle配置使用的SGA嗎?

一般來說,與平臺無關的,甲骨文將在啓動時爲SGA(系統全局區)分配一個大的內存塊。這就是數據庫用於緩存RAM中的塊,緩存SQL語句等內容的原因。每次創建會話時,Oracle都會爲該會話的PGA(程序全局區域)分配更小的內存塊。這是記憶的東西,像排序和散列會隨着會話的需要而增長和縮小。配置Oracle使用一半機器的物理RAM作爲SGA和15-20%的物理RAM用於總PGA,而剩餘的用於操作系統和其他應用程序並不罕見。儘管這可能會導致性能問題,但應該能夠撥出內存使用量,因爲更多的I/O需要物理讀取而不是從緩存中滿足。

你的配置設置指示Oracle使用高達9.65 GB的SGA和PGA之間的RAM和,因爲它認爲合適的方式分配內存。期待Oracle在SGA啓動時抓取6或7 GB RAM並永久分配RAM是完全合理的。在負載情況下,Oracle可能會在共享的SGA和會話級別的PGA之間分配9.65 GB的RAM。這是你看到的行爲嗎?如果是這樣,這聽起來像甲骨文行爲如預期,沒有內存泄漏,並且沒有必要重新啓動服務。

+0

+1,從賈斯汀總是一個很好的答案。 Burleson的網站對此主題有一個很好的概述:http://www.dba-oracle.com/oracle11g/oracle_11g_memory_target_parameter.htm – DCookie 2011-03-23 14:54:27

+2

SGA應該在啓動時被「抓住」。當需要時,PGA將被一個進程抓住。該進程可能會釋放它,或者它可能會保留它直到進程終止(例如會話註銷)。如果您的應用使用連接池,但不會結束其會話,則可能會產生這種效果。 – 2011-03-23 23:05:20