Как устранить ошибки ORA-30926? (ID документа 471956.1)
1) Определите ошибочное утверждение
изменить события набора сеансов '30926 имя трассировки errorstack level 3';
или
изменить системные события '30926 имя трассировки errorstack off';
и следите за файлами .trc в UDUMP, когда это происходит.
2) Найдя оператор SQL, проверьте его правильность (возможно, используя план объяснения или tkprof для проверки плана выполнения запроса) и проанализируйте или вычислите статистику по соответствующим таблицам, если это не было сделано в последнее время. Также может помочь восстановление (или удаление / воссоздание) индексов.
3.1) Является ли оператор SQL MERGE? оцените данные, возвращаемые предложением USING, чтобы убедиться, что в объединении нет повторяющихся значений. Измените оператор слияния, чтобы включить детерминированное предложение where
3.2) Это оператор UPDATE через представление? Если да, попробуйте заполнить результат просмотра в таблице и попробуйте обновить таблицу напрямую.
3.3) Есть ли на столе триггер? Попробуйте отключить его, чтобы проверить, не работает ли он по-прежнему.
3.4) Содержит ли оператор представление, не допускающее слияния, во 'IN-подзапросе'? Это может привести к возврату повторяющихся строк, если в запросе есть предложение FOR UPDATE. См. Ошибку 2681037
3.5) Есть ли в таблице неиспользуемые столбцы? Их удаление может предотвратить ошибку.
4) Если изменение SQL не устраняет ошибку, проблема может заключаться в таблице, особенно если есть связанные строки. 4.1) Запустите оператор ANALYZE TABLE VALIDATE STRUCTURE CASCADE для всех таблиц, используемых в SQL, чтобы увидеть, есть ли какие-либо повреждения в таблице или ее индексах. 4.2) Проверьте и удалите все СВЯЗАННЫЕ или перенесенные СТРОКИ в таблице. Есть способы минимизировать это, например, правильная установка PCTFREE. Используйте примечание 122020.1 - Сцепление строк и миграция 4.3) Если таблица дополнительно упорядочена по индексу, см .: Примечание 102932.1 - Мониторинг связанных строк в IOT