解決ORACLE共享記憶體不足的方法

zangqianglei發表於2015-05-06

  問題:

    ORA-04031: unable to allocate 19204 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","session param values")

    錯誤原因:

    共享記憶體太小,分配給共享池的記憶體不足以滿足使用者請求,或者存在一定碎片,沒有有效的利用保留區,造成無法分配合適的共享區。

    一個ORACLE例程的系統全域性區域(SGA)包含幾個記憶體區域(包括緩衝快取記憶體、共享池、Java 池、大型池和重做日誌緩衝)

    SGA=db_cache+shared_pool+java_pool+large_pool

    處理方法:

    手動調整SGA的大小,然後重新分配四大記憶體區域的大小。主要增加共享記憶體和緩衝快取記憶體。

    sql> show sga; //檢視SGA的具體大小資訊。

    sql>show parameter sga_max_size //檢視SGA最大值

    sql> show parameter shared_pool //檢視共享記憶體

    sql>show parameter db_cache   //檢視資料快取

    sql> alter system set sga_max_size = 500M scope=spfile;//修改SGA最大值

    sql> alter system set shared_pool_size =200M scope=spfile; //修改共享記憶體

    sql> alter system set db_cache_size =250M scope=spfile;   //修改資料快取

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

相關文章