首先,我想要做的是编写一个触发器,它将在以下表中登录 -
username
modification (like - CREATE ALTER DROP UPDATE DELETE)
datetime (when it happend)
如果发生以下任何情况,请执行-CREATE ALTER DROP UPDATE DELETE,然后触发器将记录信息。
甚至可以这样做吗?
我想出了用于特定表的INSERT UPDATE DELETE的表级触发器。
但是,对于任何对象,我都需要模式级别的所有这些。
如果没有,至少对于任何一个表。
答案 0 :(得分:2)
这适用于Oracle 11g。我无法记住我从哪里得到它
CREATE OR REPLACE TRIGGER <YourSchema>.audit_ddl_trg
AFTER DDL
ON SCHEMA
BEGIN
IF (ora_sysevent = 'TRUNCATE')
THEN
NULL; -- I do not care about truncate
ELSE
INSERT INTO <YourSchema>.audit_ddl (d,
osuser,
current_user,
HOST,
terminal,
owner,
TYPE,
name,
sysevent)
VALUES (SYSDATE,
SYS_CONTEXT ('USERENV', 'OS_USER'),
SYS_CONTEXT ('USERENV', 'CURRENT_USER'),
SYS_CONTEXT ('USERENV', 'HOST'),
SYS_CONTEXT ('USERENV', 'TERMINAL'),
ora_dict_obj_owner,
ora_dict_obj_type,
ora_dict_obj_name,
ora_sysevent);
END IF;
END;