ORA-04030: 在嘗試分配...位元組 (hash-join subh,kllcqas:kllsltba) 時程式記憶體不足。

wangyiou1988發表於2015-02-02
環境:
OS:AIX 6.1
DB:oracle 10.2.0.1
出現問題時報錯如下:
ORA-04030: 在嘗試分配...位元組 (hash-join subh,kllcqas:kllsltba) 時程式記憶體不足。

ORA-04030的出現原因及解決方法:

  ORA-04030出現的基本都是過多的使用memory造成的

  Oracle process使用的記憶體數量是有一定限制的:

  A. 對於32 BIT系統,有SGA 1.7G限制

  B. 某些OS系統本身也有一些記憶體引數限制

  --執行 ulimit 看看

  C. OS系統本身實體記憶體+Swap的限制

  現在我們應該檢查DB使用的SGA + PGA是否超過上面的限制。

  SGA 包括 db_cache,shared_pool,large_pool,java_pool session的PGA包括sort_area_size/Hash_area_size/*_area_size 或者 pga_aggregate_target

  還有執行的CODE以及一些data也會佔用空間。

  然後再根據情況降低裡面的某些值了,比如db_cache,sort_area_size等等。

  假如是OS系統的某Limited造成的,大家可以考慮放開限制man ulimit來觀察如何放開限制
對於UNIX 系統,如果SGA沒有問題的話,很大一部分原因都是系統對oracle的限制導致的,
解決方法如下:

#vi  /etc/security/limits


Default :

        Fsize = -1

        Core = -1

        Cpu = -1

        Data = -1

        Rss = -1

        Stack = -1
        Nofile = -1

將所有的都改成-1.也就是無限制,問題解決。



 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25116248/viewspace-1423399/,如需轉載,請註明出處,否則將追究法律責任。

相關文章