У нас есть БД Oracle с около 4K таблицами. И около 30 различных приложений, обращающихся к данным. У нас есть проблема, когда одно из приложений удаляет строку в одной из наших таблиц. Мы не знаем, какое приложение и почему. Я пытаюсь понять, но сначала подумал, что я использую триггеры, когда когда-либо что-то удаляется и регистрирует его, но есть ли способ узнать, какое приложение удалило его в oracle?
благодаря
Если вы не хотите идти по пути авторизации или ведения журнала, и приложение не отличается от v $ session в его нынешнем виде, вы можете указать имя приложения, вызвав
dbms_application_info.set_client_info('my_application');
Это устанавливает v $ session.client_info для сеанса, который вы можете читать через
dbms_application_info.read_client_info(client_info out varchar2);.
Затем вы можете использовать триггеры и записать это значение.
v$session
может сообщить вам, правильно ли приложение идентифицирует себя, но может просто сказать что-то общее, например, JDBC; или вы можете получить IP-адрес сеанса, если приложения находятся в отдельных окнах. Вы уже рассматривали встроенные инструменты аудита?