Heim >Datenbank >MySQL-Tutorial >Oracle DML错误日志笔记

Oracle DML错误日志笔记

WBOY
WBOYOriginal
2016-06-07 16:33:311041Durchsuche

DML错误日志是Oracle 10gR2引入的一个类似于SQL*Loader的错误日志功能。它的基本原理是把任何可能导致语句失败的记录转移,放到一

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子句不引起隐式提交,也就是说,即使回滚了失误,错误信息还是会保存在错误日志表中。

本文永久更新链接地址:

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn