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