Как узнать, изменлось ли поле "expiry_date" в таблице пользователей Oracle?
Я столкнулся с очень специфической задачей с Oracle.
Мне нужно доказать, что значения в столбце expiry_date таблицы dba_users не были изменены в определенный период времени (в течении последних выходных).
У меня нет большого опыта общения с Oracle, по этому я не уверен, но кажется что функция под названием "audit" отключена.
Итак, мне нужна любая возможность проверить, были изменения полей в указанной таблице. Я уже пытался проанализировать таблицу user_sessions (хотел проверить наличие сессий в течение рассматриваемого периода), но не смог получить точный ответ.
Ответы (1 шт):
Включен ли аудит, можно узнать так:
show parameters audit_trail
NAME TYPE VALUE
----------- ------ -----
audit_trail string DB
Если БД создавалась с помощью DBCA, то это стандартное значение параметра по умолчанию.
Directs audit records to the database audit trail (the SYS.AUD$ table), except for records that are always written to the operating system audit trail. Use this setting for a general database for manageability.
На таблице SYS.AUD$ существует ряд представлений (dba_audit_(trail|object)).
Например, следующая команда принудит пользвателя изменить пароль и содаст новую аудит запись:
alter user hr password expire;
select os_username, username, userhost, timestamp, obj_name, action_name
from dba_audit_trail where action_name = 'ALTER USER';
OS_USERNAME USERNAME USERHOST TIMESTAMP OBJ_NAME ACTION_NAME
------------ ------------ ------------ ------------------- -------- ----------------------------
oracle SYSTEM dbsrv 2013-06-22 13:41:13 HR ALTER USER
ME ME clnthost 2020-06-26 17:54:14 HR ALTER USER