是的,如果您想跟踪架构对象级别的详细信息,您可以使用 DDL 触发器来执行此操作,而且最好微调您的审计。
创建表 .ddl_audit
(
os_user_name varchar2(255),
current_user varchar2(255),
主机 varchar2(255),
终端 varchar2(255),
ddl_type varchar2(255),
所有者 varchar2(30),
object_type varchar2(255),
对象名 varchar2(128),
system_event varchar2(20),
ddl_sql_stmt varchar2(2000),
ddl_date 时间戳
);
在 ddl ON .schema 之后创建或替换 TRIGGER audit_ddl_trg
宣布
sql_text ora_name_list_t;
v_stmt VARCHAR2(2000);
retval pls_integer;
开始
retval := ora_sql_txt(sql_text);
FOR i IN 1..retval
环形
v_stmt := v_stmt || sql_text(i);
结束循环;
插入
INTO .DDL_AUDIT
(
os_user_name,
当前用户,
主持人,
终端,
ddl_type,
所有者,
对象类型,
对象名称,
系统事件,
ddl_sql_stmt,
ddl_date
)
价值观
(
sys_context('USERENV','OS_USER') ,
sys_context('USERENV','CURRENT_USER') ,
sys_context('USERENV','HOST') ,
sys_context('USERENV','TERMINAL') ,
ora_dict_obj_type,
ora_dict_obj_owner,
ora_dict_obj_type,
ora_dict_obj_name,
ora_sysevent,
v_stmt,
系统时间戳
);
结束;
-- 使用相同的应用架构
创建表 t1(c1 int,c2 varchar(10));
--进行更多更改
alter table t1 add c3 varchar2(50);
查询按ddl_date排序的ddl_audit表...
注意:- 确保授予必要的权限。