Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 数据库 / MySQL / Oracle记录用户DDL操作脚本

Oracle记录用户DDL操作脚本--当前普通用户创建 issgzt 
create table TAB_DDL 
( 
  LOGIN_USER       VARCHAR2(60), 
  AUDSID           NUMBER, 
  MACHINE            VARCHAR2(60), 
  IPADDRESS          VARCHAR2(20), 
  SCHEMA_USER        VARCHAR2(60), 
  SCHEMA_OBJECT      VARCHAR2(60), 
  DDL_TIME         DATE, 
  DDL_SQL            VARCHAR2(4000), 
  MODULE           VARCHAR2(100), 
  SCHEMA_OBJECT_TYPE VARCHAR2(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), 2) 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, 
   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(state_sql, 1, 3000), 
   v_program); 
EXCEPTION 
  WHEN error1 THEN 
   
    raise_application_error(num => -20000, 
                            msg => " ERROR"); 
END tr_trace_ddl; 
相关阅读:两台Oracle之间配置OGG-未配置同步DDL http://www.linuxidc.com/Linux/2013-10/92015.htmOracle GoldenGate 11g单向DDL配置实战 http://www.linuxidc.com/Linux/2013-01/77706.htmOracle利用dbms_metadata.get_DDL查看DDL语句 http://www.linuxidc.com/Linux/2012-12/76113.htmOracle使用系统级触发器禁用DDL语句 http://www.linuxidc.com/Linux/2012-10/72955.htmOracle使用系统级触发器审计重要帐号的DDL语句 http://www.linuxidc.com/Linux/2012-10/72954.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle Flashback table的使用AIX6.1 安装Oracle 11g R2相关资讯      Oracle DDL  DDL脚本 
  • Oracle 11.2.0.3和MySQL5.6 DDL比  (09/17/2015 19:15:08)
  • Oracle处理数据(DML+DDL+DCL)+事  (01/25/2014 13:46:28)
  • Oracle数据库对象(共12个)DDL  (01/25/2014 13:49:16)
  • 两台Oracle之间配置OGG-未配置同步  (10/28/2013 17:14:50)
本文评论 查看全部评论 (0)
表情: 姓名: 字数