Как найти последний раз, когда пользователь обращался к схеме в Oracle 12c? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь защитить учетные записи пользователей в Oracle, удалив роль из имени пользователя.Конечный результат, который я ищу, - удалить определенную роль у пользователя, который не обращался к схеме в течение 30 дней.Я могу достаточно легко понять SQL для изменения схемы, чтобы удалить роль, но у меня возникли проблемы с выяснением того, как я могу определить, когда они в последний раз обращались к данной схеме.

Например,если у нас есть схема с именем FINANCE и пользователь с именем BOB123, я хочу проверить, когда последний раз BOB123 обращался к схеме FINANCE.Под доступом я имею в виду что угодно.Обновление, выбор, удаление, изменение ... любого вида DDL или DML, которые позволят BOB123 каким-либо образом взаимодействовать со схемой FINANCE.По сути, я просто хочу получить временную метку в последний раз, когда он получил доступ к схеме.

Теперь, одним из вариантов, который я рассмотрел, был контрольный журнал: https://docs.oracle.com/cd/B28359_01/network.111/b28531/auditing.htm#DBSEG98319.

Полагаю, я мог установитьМониторинг DML, а затем проверка этого в последний раз, когда пользователь вошел в систему. Но я также чувствую, что это вызовет несколько проблем.С одной стороны, если я регистрирую все виды DML, контрольный журнал займет много места и быстро.Мне неизбежно придется очистить его, и, учитывая размер нашей базы данных и количество людей, которые получают к ней доступ, это может занять менее 30 дней.Это сделало бы невозможным проверку того, использовал ли человек каким-либо образом схему за последние 30 дней.

Другая проблема заключается в том, что запрос потенциально (на мой взгляд) может занять намного больше времени, чем янравится выполнять, если он должен пройти через тысячи строк, чтобы что-то проверить.Кроме того, я чувствую, что это не элегантное решение.Я также видел другой пост переполнения стека, который, казалось, был близок к тому, что я хотел: последний раз, когда к таблице обращались в oracle

Проблема в том, что она не ссылается на схему, неверните имена пользователей, и мой офис должен приобрести лицензию на использование пакета диагностики.

Есть ли способ отследить, когда в последний раз пользователь обращался к схеме, которая немного чище или дешевле, чем вышеуказанные методы??Единственное, о чем я мог подумать, - это создать таблицу в самой схеме, а затем настроить триггер для записи людей, которые вошли в систему. Буду признателен за любую помощь в этом!

...