--Current ordinary user creates issgzt create table Tab_ddl (Login_user VARCHAR2, audsid number, MACH INE VARCHAR2, IPAddress VARCHAR2, Schema_user VARCHAR2 (a), schema_object VARCHAR2, Ddl_time DATE, Ddl_sql VARCHAR2 (4000), MODULE VARCHAR2 (100)
, Schema_object_type VARCHAR2 (60)); --sys user creation, monitoring user DDL Operations for Oracle Create OR REPLACE TRIGGER SYS.TR_ISSGZT_DDL after DDL on database DECLARE sql_text o
ra_name_list_t; State_sql Issgzt.
Tab_ddl.ddl_sql%type; V_program Issgzt.
Tab_ddl.module%type;
Error1 exception; BEGIN IF SUBSTR (sys_context (' USERENV ', ' Session_user '), 1, 1) = ' T ' and Sys_context (' USERENV ', ' Session_user
') not in (' username ') and lower (state_sql) don't like ' alter user t% ' THEN raise;
End If; For I in 1.
NVL (Ora_sql_txt (Sql_text), 2) LOOP beginState_sql: = State_sql | |
Sql_text (i);
Exception when others then null;
End
End LOOP; Select NVL (S.program, s.module) into V_program to v$session s where S.sid = (select distinct SID from V
$MYSTAT); INSERT into Issgzt.
TAB_DDL (Login_user, Audsid, Machine, IPAddress, Schema_user, Schema_object, Schema_object_type, Ddl_time, Ddl_sql, module) VALUES (Ora_login_user, Userenv (' SES Sionid '), Sys_context (' USERENV ', ' TERMINAL '), Sys_context (' USERENV ', ' ip_address '), Ora_dict_obj_owne R, Ora_dict_obj_name, Ora_dict_obj_type, Sysdate, substr (state_sql, 1, 3000), V_program
); EXCEPTION when Error1 THEN raise_application_error (num => -20000, msg =& Gt
' ERROR ');
End TR_TRACE_DDL; /
This column more highlights: http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/