首页 > 代码库 > oracle DML错误日志
oracle DML错误日志
DML错误日志是oracle10gR2引入的一个类似于SQL*Loader的错误日志功能。它的基本原理是把任何可能导致语句失败的记录转移,放到一张错误日志表中。
具体使用如下:
1、使用DBMS_ERRLOG.CREATE_ERROR_LOG来创建错误日志表
--原表my_test表结构 desc my_test Name Type Nullable Default Comments ------ ------------ -------- ------- -------- SID NUMBER NAME VARCHAR2(20) Y GENDER INTEGER Y AGE NUMBER Y HOBBY VARCHAR2(20) Y --执行下面的语句,生成错误日志表 execute dbms_errlog.create_error_log(‘my_test‘,‘my_test_bad‘); PL/SQL procedure successfully completed. --生成的错误日志表my_test_bad结构 desc my_test_bad Name Type Nullable Default Comments --------------- -------------- -------- ------- -------- ORA_ERR_NUMBER$ NUMBER Y ORA_ERR_MESG$ VARCHAR2(2000) Y ORA_ERR_ROWID$ UROWID(4000) Y ORA_ERR_OPTYP$ VARCHAR2(2) Y ORA_ERR_TAG$ VARCHAR2(2000) Y SID VARCHAR2(4000) Y NAME VARCHAR2(4000) Y GENDER VARCHAR2(4000) Y AGE VARCHAR2(4000) Y HOBBY VARCHAR2(4000) Y
其中ORA_ERR_TAG$这个字段可以存放用户自定义的数据
2、在insert语句中使用my_test_bad错误日志表
insert into my_test (sid,name,gender,age,hobby) values (12,‘joy‘,2,‘age‘,‘book,football,run‘) log errors into my_test_bad; insert into my_test (sid,name,gender,age,hobby) values (12,‘joy‘,2,‘age‘,‘book,football,run‘) log errors into my_test_bad ORA-01722: 无效数字 SQL> select * from my_test_bad;--(结果不规范,用图展示)
update,delete,merge语句都可以在后面声明错误日志,方法相同。如:
update my_test set age = ‘yyy‘ where sid = 12 log errors into my_test_bad;
注意事项:log errors子句不引起隐式提交,也就是说,即使回滚了失误,错误信息还是会保存在错误日志表中。
oracle DML错误日志
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。