ORA-12853和ORA-04031 large pool 不足错误解决

2015-04-07 14:09:14 · 作者: · 浏览: 40

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。根据需要时配置,主要用到大池的情况:


大池没有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;