手机版
你好,游客 登录 注册
背景:
阅读新闻

Oracle DML错误日志笔记

[日期:2015-01-13] 来源:Linux社区  作者:mozizhu [字体: ]

DML错误日志是Oracle 10gR2引入的一个类似于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相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-01/111719.htm

linux
相关资讯       Oracle DML 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款