文档详情

Oracle记录用户DDL操作脚本.pdf

发布:2017-09-14约6.56千字共4页下载文档
文本预览下载声明
ZZhhoonngg WWeeiicchheenngg SSttuuddyy NNootteess IInnssiisstt oonn hhiiss oowwnn iiddeeaall,, aanndd ttoo aattttaaiinn iitt.. OOrraaccllee记记录录用用户户DDDDLL 作作脚脚本本 分类: Oracle Oracle scripts 2013-11-28 18:38 42人阅读 评论 (0) 收藏 举报 OracleOracle scripts --当前普通用户创建 issgzt create table TAB_DDL ( LOGIN_USER VARCHAR (60), AUDSID NUMBER, MACHINE VARCHAR (60), IPADDRESS VARCHAR ( 0), SCHEMA_USER VARCHAR (60), SCHEMA_OBJECT VARCHAR (60), DDL_TIME DATE, DDL_SQL VARCHAR (4000), MODULE VARCHAR (100), SCHEMA_OBJECT_TYPE VARCHAR (60) ) ; --sys用户创建,监视用户对Oracle进行DDL 作 CREATE OR REPLACE TRIGGER SYS.tr_issgzt_ddl AFTER ddl ON database DECLARE sql_text ora_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) not like alter user t% THEN raise error1; end if; FOR i IN 1 .. nvl(ora_sql_txt(sql_text), ) LOOP begin state_sql := state_sql || sql_text(i); Exception when others then null; end; END LOOP; select nvl(s.program, s.MODULE) into v_program from v$session s where s.SID = (select distinct sid from v$mystat); INSERT INTO issgzt.TAB_DDL (login_user, audsid, machine, 1 ipaddress, schema_user, schema_object, SCHEMA_OBJECT_TYPE, ddl_time, ddl_sql, module) VALUES (ora_login_user, userenv (SESSIONID), SYS_CONTEXT(USERENV, TERMINAL), sys_context(userenv, ip_address), ora_dict_obj_owner, ora_dict_obj_name, ora_dict_obj_type, SYSDATE, substr
显示全部
相似文档