ORA-00600 internal error code arguments 19004
By: Date: 07.12.2011 Categories: !RUS,Errors,ORACLE Метки:
ENG: ORA-00600 internal error code arguments 19004

Oracle 10.2.0.5 Patch 10 for Windows (то что я сам видел 32-бита). Приложение на Oracle Forms падает с

FRM-40735: post-query триггер вызвал необработанное исключение ora-00600

В alert.log мы видим

ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []
Current SQL statement for this session:
SELECT R.ID RT_ID   FROM APP_CLAIMS AC,RT_RIGHTS R  WHERE AC.ADD_PAGE = 'Д'  AND AC.RT_ID = R.ID  AND AC.APP_ID = :b1

©Bobrovsky Dmitry
На My Oracle Support (MOS) нашел статью 138652.1 ORA-600 [19004]. Там заявлено два бага, один из них закрывается еще в 10.2.0.4 Patch 35. А вот второй – оптимизатор падает на corrupt гистограмме правиться только в 11 и 12 версиях. Предлагается удалить эти испорченные гистограммы.
Dmitry Bobrovsky
Конкретно выяснять какая именно гистограмма ломает запрос – это долго, поэтому решил удалить гистограммы на проблемные таблицы и оставить статистику просто на саму таблицу. Для этого изменил процедуру сбора статистик оптимизатора

BEGIN
dbms_stats.gather_schema_stats(ownname=>'SYS' , CASCADE=>TRUE);
dbms_stats.gather_schema_stats(ownname=>'REG_RT' , CASCADE=>TRUE);
dbms_stats.gather_schema_stats(ownname=>'CTXSYS' , CASCADE=>TRUE);
-- Удаление статистик (вместе с гистограммами) на проблемные таблицы
dbms_stats.DELETE_TABLE_STATS(ownname=>'REG_RT' , tabname=>'APP_RE',cascade_indexes=>FALSE);
dbms_stats.DELETE_TABLE_STATS(ownname=>'REG_RT' , tabname=>'APP_APPLICATIONS',cascade_indexes=>FALSE);
dbms_stats.DELETE_TABLE_STATS(ownname=>'REG_RT' , tabname=>'RT_RIGHTS',cascade_indexes=>FALSE);
-- Сбор статистик только на саму таблицу, без гистограмм
execute immediate ('ANALYZE TABLE reg_rt.APP_RE compute statistics FOR table');
execute immediate ('ANALYZE TABLE reg_rt.APP_APPLICATIONS compute statistics FOR table');
execute immediate ('ANALYZE TABLE reg_rt.RT_RIGHTS compute statistics FOR table');
END;
/

Запись Как удалить свой блог на blogger.com? впервые появилась Dmitry Bobrovsky Blog