ORA-12853和ORA-04031 large pool 不足錯誤解決

來源:互聯網
上載者:User

ORA-12853和ORA-04031 large pool 不足錯誤解決

ORA-12801: error signaled in parallel query server P139

ORA-12853: insufficient memory for PX buffers: current 274880K, max needed 19722240K

ORA-04031: unable to allocate 65560 bytes of shared memory ("large pool","unknown object","large pool","PX msg pool")
今天接到這麼一個錯誤,可以看出以上是因為並行查詢導致了大池不足造成。

可先瞭解下 large pool:
大池是SGA中的一塊可選記憶體池,大池主要提供了大記憶體段,大池最大大小為4G。根據需要時配置,主要用到大池的情況:

  1.  用於共用服務(Shared Server MTS方式中)的會話記憶體和Oracle分散式交易處理的Oracle XA介面
  2.  使用並行查詢(Parallel Query Option PQO)時
  3. I/O伺服器處理序用的記憶體(緩衝)
  4. Oracle備份和恢複操作(啟用了RMAN時)

大池沒有LRU列表。這和共用池中的保留空間不同,保留空間和共用池中其他分配的記憶體使用量同樣的LRU列表。

大塊記憶體從不會換出大池中,記憶體必須是顯式的被每個會話分配並釋放。

 解決過程:1.檢查是否開啟了並行.
            select * from dba_tables where degree<>1;
            select * from dba_indexes where degree<>1;
          2.發現是表開啟了並行,因此可關閉並行:
            ALTER TABLE XX.XXX NOPARALLEL;
          3.如果large pool大小不足,可根據實際需求調整大小:
            ALTER SYSTEM SET LARGE_POOL_SIZE=xxM scope=spfile;

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.