oracle怎么捕获表上的DML语句(不包括select)语句)
Oracle 怎么 语句 SELECT 包括 捕获 DML
2023-09-11 14:18:19 时间
可以采用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跳过。
相关文章
- 【C/C++学院】(24)Oracle数据库编程--管理oracle
- 【Oracle】oracle的LAG和LEAD分析函数
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战
- ORACLE 12C新特性——CDB与PDB
- oracle常用函数使用大全 Oracle除法(转)
- Oracle中查询某字段不为空或者为空的SQL语句怎么写
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
- cx_Oracle连接oracle数据库
- Oracle TCP.VALIDNODE_CHECKING 监听限制IP登陆
- Oracle dba_hist_snapshot
- Oracle 日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING)
- maven手动安装ojdbc14(oracle jdbc驱动)至本地maven仓库
- Oracle与Sql Server差异点详解
- Atitit 视图参数解决方案 oracle版和mysql版本 attilax总结.docx
- Oracle数据库有用函数
- ORACLE 五种表的优缺点总结
- 生产环境中正确关闭Oracle数据库