Узнайте, кто удалил строку в БД

1

У нас есть БД Oracle с около 4K таблицами. И около 30 различных приложений, обращающихся к данным. У нас есть проблема, когда одно из приложений удаляет строку в одной из наших таблиц. Мы не знаем, какое приложение и почему. Я пытаюсь понять, но сначала подумал, что я использую триггеры, когда когда-либо что-то удаляется и регистрирует его, но есть ли способ узнать, какое приложение удалило его в oracle?

благодаря

  • 0
    Из триггера? v$session может сообщить вам, правильно ли приложение идентифицирует себя, но может просто сказать что-то общее, например, JDBC; или вы можете получить IP-адрес сеанса, если приложения находятся в отдельных окнах. Вы уже рассматривали встроенные инструменты аудита?
  • 0
    С включенной дополнительной регистрацией будет легко определить, кто что сделал.
Показать ещё 9 комментариев
Теги:

1 ответ

0

Если вы не хотите идти по пути авторизации или ведения журнала, и приложение не отличается от v $ session в его нынешнем виде, вы можете указать имя приложения, вызвав

dbms_application_info.set_client_info('my_application');

Это устанавливает v $ session.client_info для сеанса, который вы можете читать через

dbms_application_info.read_client_info(client_info out varchar2);.

Затем вы можете использовать триггеры и записать это значение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню