ORA-04045: ошибки при перекомпиляции / повторной проверке - PullRequest
2 голосов
/ 08 марта 2012

Я просто внезапно начал получать эту ошибку при попытке запроса таблицы AVC.

ORA-04045: errors during recompilation/revalidation of PUBLIC.AVC
ORA-04098: trigger 'TTMS.ALTERED_TTMSDB_TABS_TRIGGER' is invalid and failed re-validation

select * from avc не работает, но select * from exfc.avc работает.

Может кто-нибудь сказать мне, чтопроисходит?

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Предположительно, в вашей схеме нет объекта с именем AVC.Когда вы ссылаетесь на AVC без квалификатора схемы, он обращается к объекту PUBLIC с этим именем.Чтобы выяснить, что это за объект, SELECT object_type FROM all_objects WHERE object_name='AVC' AND owner='PUBLIC'.

Что бы это ни было, его запрос по какой-то причине вызывает срабатывание триггера.Может быть, это какая-то функция аудита.Но в настоящее время триггер недействителен.Это может означать, что кто-то изменил сам триггер, но допустил ошибку;или это может означать, что кто-то отбросил или изменил какой-то другой объект, от которого зависит триггер, таким образом, что код триггера больше не действителен.

Таким образом, любой, кто ответит на этот триггер, должен выяснить, какая ошибкапроисходит в процессе его компиляции и разрешения.

Когда вы явно запрашиваете EXFC.AVC, вы обходите объект PUBLIC и переходите непосредственно к какому-либо базовому объекту, возможно, к реальной таблице.Кажется очень странным, что у вас был бы доступ к этому, поскольку весь смысл маршрутизации доступа через общедоступный синоним обычно состоит в том, чтобы предотвратить прямой доступ к объекту.И если на самом деле целью триггера является аудит доступа к таблице, то возможность полностью ее обойти - довольно большой недостаток проекта.

0 голосов
/ 30 марта 2016

Да, это в основном говорит о том, что упомянутый триггер имеет ошибку.Самый простой способ исправить это, так как я работал над SQL-разработчиком, это

Открыть вкладку «Триггеры» и найти этот триггер.Скомпилируйте его и повторите запрос.отлично работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...