ORA-12801:在并行查询服务器P004和ORA-01555中发出错误信号:快照太旧了

时间:2015-04-11 15:04:52

标签: sql oracle oracle11g oracle10g

我正在执行insert into ... select ... from ... where ... SQL,并使用Oracle

得到以下错误
java.sql.SQLException: ORA-12801: error signaled in parallel query server P004
ORA-01555: snapshot too old: rollback segment number 32 with name "_SYSSMU32_2039035886$" too small

我阅读了以下文档:http://www.dba-oracle.com/t_ora_12801_parallel_query.htmhttp://www.dba-oracle.com/t_ora_01555_snapshot_old.htm

ORA-12801是由于没有足够的处理器来支持并行查询。 ORA-01555错误与撤消存储不足或undo_retention参数值太小有关。

但是如何检查相关参数以避免此类问题再次出现?

1 个答案:

答案 0 :(得分:4)

来自the manual

  在并行查询服务器字符串

中发出

ORA-12801:错误信号      

原因:并行查询服务器达到了异常条件。

     

操作:请检查以下错误消息,并查看相关操作的错误手册。

这是一个通用的错误消息,几乎从不与没有足够的处理器有任何关系。这是您链接的网站通常包含大量不良或过时信息的示例。也许17个过程是#34;很多" 17年前,但不是今天。不幸的是,该网站通常是谷歌的第一个结果。


你可以检查UNDO保留,这是以秒为单位的时间量,如下所示:

select value from v$parameter where name = 'undo_retention'

UNDO表空间的可用空间量也是相关的:

select round(sum(maxbytes)/1024/1024/1024) gb
from dba_data_files
where tablespace_name like '%UNDO%';

再次,请参阅the manual以获取有关参数的更多信息。