oracle 捕获 语句,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跳过。

原文:https://www.cnblogs.com/fanweisheng/p/11113426.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值