• Audit DDL 用于记录Oracle DDL事件


    创建表

    --------------------------------------------------------
    --  File created - Wednesday-May-11-2022   
    --------------------------------------------------------
    --------------------------------------------------------
    --  DDL for Table AUDIT_DDL
    --------------------------------------------------------
    
      CREATE TABLE "AUDIT_DDL" 
       (    "D" DATE, 
        "OSUSER" VARCHAR2(255 BYTE), 
        "CURRENT_USER" VARCHAR2(255 BYTE), 
        "HOST" VARCHAR2(255 BYTE), 
        "TERMINAL" VARCHAR2(255 BYTE), 
        "OWNER" VARCHAR2(30 BYTE), 
        "TYPE" VARCHAR2(30 BYTE), 
        "NAME" VARCHAR2(30 BYTE), 
        "SYSEVENT" VARCHAR2(30 BYTE), 
        "SQL_TXT" CLOB
       ) SEGMENT CREATION IMMEDIATE 
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
     NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "SYSAUDIT" 
     LOB ("SQL_TXT") STORE AS BASICFILE (
      TABLESPACE "SYSAUDIT" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION 
      NOCACHE LOGGING 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ;

    创建TRIGGER

    create or replace trigger audit_ddl_trg after ddl on schema
    /* 
    This Trigger is for Excel Internal Usage, any object DDL changes will trigger this event. 
    The corresponding DDL changes will be written in the AUDIT_DDL* table
      *The table AUDIT_DDL is under ITAUDIT schema.
    */
    
    declare
      sql_text ora_name_list_t;
      ddlc clob:= '';
      n number;
    begin
      if (ora_sysevent='TRUNCATE')
      then
        null;
      else
        n:=ora_sql_txt(sql_text);
        for i in 1..n
        loop
           ddlc := ddlc || sql_text(i);
        end loop;
        insert into audit_ddl(d, osuser,current_user,host,terminal,owner,type,name,sysevent,sql_txt)
        values(
          sysdate,
          sys_context('USERENV','OS_USER') ,
          sys_context('USERENV','CURRENT_USER') ,
          sys_context('USERENV','HOST') , 
          sys_context('USERENV','TERMINAL') ,
          ora_dict_obj_owner,
          ora_dict_obj_type,
          ora_dict_obj_name,
          ora_sysevent,
          ddlc
        );
      end if;
    end;
  • 相关阅读:
    在Android中通过导入静态数据库来提高应用第一次的启动速度
    《sqlite权威指南》读书笔记 (一)
    Android APK反编译详解(附图)
    Android如何防止apk程序被反编译
    PopupWindow 学习总结
    Android开源框架Afinal第一篇——揭开圣女的面纱
    教程] 《开源框架-Afinal》之FinalHttp 01一步一脚
    android 下改变默认的checkbox的 选中 和被选中 图片
    Android设置RadioButton在文字的右边
    Android Selector 与 Shape 基本用法
  • 原文地址:https://www.cnblogs.com/yinxuejunfeng/p/16309969.html
Copyright © 2020-2023  润新知