The script below (a trigger) audits and records information about DDL occurring in the current schema, recording the OS login name, the terminal, the session user, the command issued, the object type involved, and the object name.
create table audit_events (
event_date date,
event_user varchar2(30),
event_osuser varchar2(30),
event_machine varchar2(30),
event_terminal varchar2(30),
event_operation varchar2(30),
event_object_type varchar2(60),
event_object_name varchar2(60))
/
CREATE OR REPLACE TRIGGER object_change AFTER
CREATE OR DROP OR ALTER ON <
BEGIN
Declare
Cursor C1 is
select
sys_context(‘USERENV’,’OS_USER’) osuser,
sys_context(‘USERENV’,’TERMINAL’) terminal,
sys_context(‘USERENV’,’HOST’) machine,
sys_context(‘USERENV’,’SESSION_USER’) sess_user
from dual;
BEGIN
FOR C2 IN C1 LOOP
null;
Insert into grpaaa.audit_events
(
Event_date,
Event_user,
Event_osuser,
Event_machine,
Event_terminal,
Event_operation,
Event_object_type,
Event_object_name
)
values
(
sysdate,C2.sess_user,C2.osuser,c2.machine,c2.terminal,
ora_sysevent,ora_dict_obj_type,
ora_dict_obj_name);
END LOOP;
END;
END;
/