Как устранить ошибку ORA-30926? (ID документа 471956.1)
1) Определите ошибочный оператор
изменить события набора сеансов ‘30926 имя стека ошибок трассировки уровня 3’;
или
изменить системные системные события ‘30926 вычеркнуты ошибки имени трассировки’;
и следите за файлами .trc в UDUMP, когда это произойдет.
2) Найдя оператор SQL, проверьте его правильность (возможно, используя план объяснения или tkprof для проверки плана выполнения запроса) и проанализируйте или вычислите статистику соответствующих таблиц, если это не было сделано недавно. Перестройка (или удаление / воссоздание) индексов также может помочь.
3.1) Является ли оператор SQL MERGE?
оцените данные, возвращаемые предложением USING, чтобы убедиться, что в соединении нет повторяющихся значений. Изменить оператор слияния, включив в него детерминированный оператор where
3.2) Является ли это оператором UPDATE через представление?
Если это так, попробуйте заполнить результат представления в таблицу и попробуйте обновить таблицу напрямую.
3.3) Есть ли триггер на столе? Попробуйте отключить его, чтобы увидеть, если он все еще не работает.
3.4) Содержит ли оператор не объединяемое представление в IN-Subquery? Это может привести к дублированию строк, если в запросе есть предложение «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