Я работаю в настоящее время на сценарии извлечения DDL и задался вопросом, как получить время создания и последнее время DDL для некоторых объектов, не являющихся объектами схемы, специально для ролей и профилей. Для объектов схемы я могу запросить представление словаря данных «DBA_OBJECTS» и использовать столбцы «CREATED» и «LAST_DDL_TIME». Любая помощь будет оценена по достоинству.Как получить время создания и последнее время DDL для объектов роли и профиля в Oracle DB?
ответ
То, что вы ищете, может быть достигнуто с использованием таблиц аудита аудита в Oracle, таких как SYS.AUD$
или dba_audit_trail
(если контрольный журнал включен).
Чтобы получить последний DDL т.е. ALTER USER...
для пользователя БД вы можете использовать что-то вроде this-
select a.* from sys.aud$ a, dba_users b
where a.action# = 43 --corresponds to ALTER USER
and a.OBJ$NAME = b.username;
Чтобы получить, когда пользователь был created-
select a.* from sys.aud$ a, dba_users b
where a.action# = 51 --corresponds to CREATE USER
and a.OBJ$NAME = b.username;
dba_audit_trail
более понятны. Запрос, как показано ниже даст вам целую кучу информации, в том числе, кто выполнил действие, метку времени, имя хоста и т.д.
--For DB users
select * From dba_audit_trail
where action_name like '%ALTER USER%'
or action_name like '%CREATE USER%';`
--For DB Profiles
select * From dba_audit_trail
where action_name like '%ALTER PROFILE%'
or action_name like '%CREATE PROFILE%';`
Этот запрос может быть изменен, чтобы присоединиться к dba_users
для пользователей БД и dba_profiles
для профилей DB , с столбцом obj_name
в таблице аудита. Но будьте осторожны с тем временем, которое может потребоваться для запуска запроса в зависимости от размера вашей базы данных, количества пользователей и количества профилей db.
Дополнительную информацию об активации аудита вы должны указать, что каждый пользователь, который будет проверяться, и все действия, которые будут проверяться для этих пользователей (например, опция PROFILE, чтобы получить действия ALTER PROFILE, CREATE PROFILE и ПРОФИЛЬ ПРОСМОТРА). Аудит можно включить с помощью инструкции AUDIT и отключить с помощью инструкции NOAUDIT. Примечание. Пользователь SYS не может быть проверен так же, как и другие пользователи, и это приведет к тому, что «ORA-00983: не может проверять или не выполнять действия пользователя SYS пользователя», – ivanzg