Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: DDL auditing - *Extremely* detailed
Hi, what I found about audit is the same I knew, I supposed there could be a
trick to g et more information.
I think (sorry if seems exaggerated), but the triggers I wrote are
infinetely more effective, because when you need to detect problem
(specially in development you need exact information)
I am putting the ddls if this could be useful to some one
CREATE TABLE sys.ddls
(dd2_user VARCHAR2(100), dd2_time DATE, dd2_objeto VARCHAR2(100), dd2_tipo VARCHAR2(100), dd2_sql CLOB, dd2_osuser VARCHAR2(200), dd2_machine VARCHAR2(200), dd2_oprogram VARCHAR2(200)) PCTFREE 10 PCTUSED 40
CREATE OR REPLACE TRIGGER sys.tgr_alter
AFTER
ALTER
ON DATABASE
DECLARE
csql_text ora_name_list_t;
n NUMBER;
cSQL CLOB;
var_user varchar2(30); var_osuser varchar2(30); var_machine varchar2(64); var_process varchar2(09); var_program varchar2(48); var_sqltext varchar2(1000);
,sys.v_$sqlarea t where s.audsid = userenv('sessionid')and s.prev_sql_addr = t.address(+)
n:= ora_sql_txt(csql_text);
FOR I IN 1..N LOOP
cSQL:=cSQL||csql_text(i);
END LOOP;
INSERT INTO SYS.ddls
(dd2_user, dd2_time, dd2_objeto, dd2_tipo,DD2_SQL,
DD2_OSUSER , DD2_MACHINE , DD2_OPROGRAM
)
VALUES(
'A-'||DBMS_STANDARD.LOGIN_USER,SYSDATE,
DBMS_STANDARD.DICTIONARY_OBJ_NAME,
DBMS_STANDARD.dictionary_obj_type,cSQL,
var_osuser, var_machine, var_program
);
END;
/
CREATE OR REPLACE TRIGGER sys.tgr_create
AFTER
CREATE
ON DATABASE
DECLARE
csql_text ora_name_list_t;
n NUMBER;
cSQL CLOB;
var_user varchar2(30); var_osuser varchar2(30); var_machine varchar2(64); var_process varchar2(09); var_program varchar2(48); var_sqltext varchar2(1000);
n:= ora_sql_txt(csql_text);
FOR I IN 1..N LOOP
cSQL:=cSQL||csql_text(i);
END LOOP;
INSERT INTO SYS.ddls
(dd2_user, dd2_time, dd2_objeto, dd2_tipo,DD2_SQL,
DD2_OSUSER , DD2_MACHINE , DD2_OPROGRAM
)
VALUES(
'C-'||DBMS_STANDARD.LOGIN_USER,SYSDATE,
DBMS_STANDARD.DICTIONARY_OBJ_NAME, DBMS_STANDARD.dictionary_obj_type,cSQL, var_osuser, var_machine, var_program
CREATE OR REPLACE TRIGGER sys.tgr_drop
AFTER
DROP
ON DATABASE
DECLARE
csql_text ora_name_list_t;
n NUMBER;
cSQL CLOB;
var_user varchar2(30); var_osuser varchar2(30); var_machine varchar2(64); var_process varchar2(09); var_program varchar2(48); var_sqltext varchar2(1000);
n:= ora_sql_txt(csql_text);
FOR I IN 1..N LOOP
cSQL:=cSQL||csql_text(i);
END LOOP;
INSERT INTO SYS.ddls
(dd2_user, dd2_time, dd2_objeto, dd2_tipo,DD2_SQL,
DD2_OSUSER , DD2_MACHINE , DD2_OPROGRAM
)
VALUES(
'D-'||DBMS_STANDARD.LOGIN_USER,SYSDATE,
DBMS_STANDARD.DICTIONARY_OBJ_NAME, DBMS_STANDARD.dictionary_obj_type,cSQL, var_osuser, var_machine, var_program
Juan Carlos Reyes Pacheco
OCP
Database 9.2 Standard Edition
-- Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html -----------------------------------------------------------------Received on Tue May 04 2004 - 14:39:32 CDT
![]() |
![]() |