• oracle怎么捕获表上的DML语句(不包括select)语句)


    可以采用dml触发器,如

      CREATE OR REPLACE TRIGGER tr_capt_sql

      BEFORE DELETE OR INSERT OR UPDATE

      ON manager.test

      DECLARE

      sql_text ora_name_list_t;

      state_sql capt$sql.sql_text%TYPE;

      BEGIN

      FOR i IN 1..ora_sql_txt(sql_text) LOOP

      state_sql := state_sql || sql_text(i);

      END LOOP;

      INSERT INTO capt$sql(login_user,capt_time,ip_address,audsid,owner,table_name,sql_text)

      VALUES(ora_login_user,sysdate,sys_context('USERENV','IP_ADDRESS'),

      userenv('SESSIONID'),'MANAGER','TEST',state_sql);

      EXCEPTION

      WHEN OTHERS THEN

      sp_write_log('Capture DML Exception:'||SQLERRM);

      END tr_capt_sql;

      在创建以上触发器时要注意几点

      1、必须创建一个capt$sql的表,用来记录ddl的记录

    2、sp_write_log原本是一个写日志的过程,可以置换为自己的需要,如null跳过。

  • 相关阅读:
    ajax
    Django之modelform组件
    Django之form组件
    orm事务与锁
    orm之多表操作
    orm之单表操作
    Django之orm
    Django之模板系统
    Django之视图
    hdu5698瞬间移动(杨辉三角+快速幂+逆元)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11113426.html
Copyright © 2020-2023  润新知