我需要一些關於如何診斷和解決這個問題的指針。我不知道這是一個簡單的服務器設置問題還是應用程序設計問題(或兩者兼而有之)。解決ORA-4031「無法分配x字節的共享內存」
每隔幾個月會有一次或兩次此Oracle XE數據庫報告ORA-4031錯誤。它並沒有一直指向sga的任何特定部分。最近的一個例子是:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
當這個錯誤出現,如果用戶不斷刷新,點擊不同的鏈接,他們通常會得到更多的此類錯誤的在不同的時間,然後很快他們」會得到「404找不到」頁面錯誤。
重新啓動數據庫通常可以解決問題一段時間,然後一個月左右它再次出現,但很少在程序中的相同位置(即,它似乎沒有鏈接到任何特定部分的代碼) (上面的示例錯誤是由Apex頁面發起的,該頁面從表格中排序了5000多行)。
我試過將sga_max_size
從140M增加到256M,希望這會有所幫助。當然,我不知道這是否有幫助,因爲我不得不重新啓動數據庫來更改設置:)
我在Oracle Enterprise Linux 5機箱上運行Oracle XE 10.2.0.1.0,其中512MB內存。服務器只運行數據庫,Oracle Apex(v3.1.2)和Apache Web服務器。我用幾乎所有的默認參數安裝了它,並且一年左右運行得非常好。我通過調整應用程序代碼可以解決大部分問題;它沒有被廣泛使用,也不是一個關鍵業務系統。
這些都是當前的設置,我認爲可能是相關的:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
如果它的任何幫助,這裏的電流SGA大小:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes
附加信息:http://download.oracle.com/docs/cd/B19306_01/server。 102/b14231/create.htm#sthref376 – 2009-06-15 01:57:14
btw large_pool_size爲0(即由ASMM自動管理) – 2009-06-15 02:10:35
對於數據庫配置+您提到的其他進程,512M的RAM似乎很低。像top或vmstat這樣的工具能告訴你關於操作系統級別的內存嗎? – dpbradley 2009-06-15 12:38:06