Вопрос:
Я выполняю 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.
Но как я могу проверить связанные параметры, чтобы избежать повторения этой проблемы?
Лучший ответ:
Из руководства:
ORA-12801: ошибка, сигнализируемая в строке сервера параллельных запросов
Причина. Параллельный сервер запросов достиг исключения.
Действие: Проверьте следующее сообщение об ошибке для причины и обратитесь к руководству по ошибкам для соответствующего действия.
Это общее сообщение об ошибке и почти никогда не имеет ничего общего с недостаточным количеством процессоров. Это пример того, как сайт, с которым вы связаны, часто содержит много плохой или устаревшей информации. Возможно, 17 процессов были “много” 17 лет назад, но это не сегодня. К сожалению, этот сайт часто является первым результатом Google.
Вы можете проверить сохранение UNDO, которое представляет собой количество секунд в секундах, например:
select value from v$parameter where name = ‘undo_retention’
Еще раз, см. Руководство для получения дополнительной информации о параметре.