我正在执行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.htm和http://www.dba-oracle.com/t_ora_01555_snapshot_old.htm
说ORA-12801
是由于没有足够的处理器来支持并行查询。 ORA-01555
错误与撤消存储不足或undo_retention参数值太小有关。
但是如何检查相关参数以避免此类问题再次出现?
答案 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以获取有关参数的更多信息。