如何解决删除时在并行查询服务器ORA-12801中发出的此错误



当我运行这个删除语句时

delete /*+ PARALLEL(19) */  
from billing_lines
where id_service in (select before_line from number_change)
and id_service not in (select max(a.new_line)
from number_change a, number_change bef
where a.new_line = bef.before_line
and not exists(select null from billing_lines f where f.id_contract= a.id_contract)
group by a.id_contract);

我收到这个错误

ORA-12801: error signaled in parallel query server P003
ORA-12853: insufficient memory for PX buffers: current 12192K, max needed 6255360K
ORA-04031: unable to allocate 65560 bytes of shared memory ("
ORA-06512: at line 28

问题出在哪里。我必须增加记忆力吗?

任何解决这个问题的建议。提前谢谢。

Oracle版本

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE   11.2.0.4.0  Production"
TNS for HPUX: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

我们需要每个并行线程的内存,以便在线程之间传递数据并返回到协调器。线程越多,需要的内存就越多。

"平行19〃;可以为您提供多达38个流程(19个生产商,19个消费者(。试着减少,否则你可能需要提高你的SGA

最新更新