当前位置:  数据库>oracle

Oracle实现对表dml错误记录日志

    来源: 互联网  发布时间:2017-06-01

    本文导语: DBMS_ERRLOG提供了一个存储过程CREATE_ERROR_LOG,这个存储过程创建一个错误日志表,当DML出错时,操作不会终止和回滚,而是将相关的错误写到错误日志表中。 CREATE_ERROR_LOG不支持一些数据类型:LONG, CLOB,BLOB, BFILE, and ADT。      简...

DBMS_ERRLOG提供了一个存储过程CREATE_ERROR_LOG,这个存储过程创建一个错误日志表,当DML出错时,操作不会终止和回滚,而是将相关的错误写到错误日志表中。

CREATE_ERROR_LOG不支持一些数据类型:LONG, CLOB,BLOB, BFILE, and ADT。
 
    简单示例:

SQL> create unique index ind_test00_a on test00(a);

Index created.

SQL> EXEC DBMS_ERRLOG.CREATE_ERROR_LOG('TEST00','TEST00_ERROR_LOG');

PL/SQL procedure successfully completed.

SQL> desc test00
 Name                                                                    Null?  Type
 -------------------------------------------------------------------------------- -------------------------------------------------
 A                                                                                NUMBER(10)
 B                                                                                NUMBER(10)

SQL> desc test00_error_log
 Name                                                                    Null?  Type
 -------------------------------------------------------------------------------- -------------------------------------------------
 ORA_ERR_NUMBER$                                                                  NUMBER
 ORA_ERR_MESG$                                                                    VARCHAR2(2000)
 ORA_ERR_ROWID$                                                                  ROWID
 ORA_ERR_OPTYP$                                                                  VARCHAR2(2)
 ORA_ERR_TAG$                                                                    VARCHAR2(2000)
 A                                                                                VARCHAR2(4000)
 B                                                                                VARCHAR2(4000)
SQL> INSERT INTO TEST00 values(1,1) LOG ERRORS INTOTEST00_ERROR_LOG REJECT LIMIT 1;

1 row created.

SQL> INSERT INTO TEST00 values(2,2) LOG ERRORS INTOTEST00_ERROR_LOG REJECT LIMIT 1;

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test00;

        A        B
---------- ----------
        1        1
        2        2

SQL> select * from test00_error_log;

no rows selected

SQL> INSERT INTO TEST00 values(2,2) LOG ERRORS INTOTEST00_ERROR_LOG REJECT LIMIT 1;
---插入重复数据,未报错,操作正常进行。

0 rows created.

SQL>commit;   

Commit complete.

SQL> select * from test00;  ---数据未插入到表中,结果是正确的

        A        B
---------- ----------
        1        1
        2        2

SQL> select * from test00_error_log; ---错误操作记录到了错误日志表中

ORA_ERR_NUMBER$ORA_ERR_MESG$                    ORA_ERR_ROWID$                  ORA_ERR_OPTYP$        ORA_ERR_TAG$          A        B
--------------- ------------------------------------------------------------------ -------------------------------------------- ---------- ----------
            1 ORA-00001: unique constraint(WXL                                  I                                            2        2
              UN.IND_TEST00_A) violated


SQL>

附录:
CREATE_ERROR_LOG ProcedureParameters
CREATE_ERROR_LOG参数:

ParameterDescription

dml_table_name

The name of the DML table to basethe error logging table on. The name can be fully qualified (forexample, emp, scott.emp,"EMP", "SCOTT"."EMP"). If a namecomponent is enclosed in double quotes, it will not be uppercased.

err_log_table_name

The name of the error loggingtable you will create.

The default is the first 25characters in the name of the DML table prefixed with'ERR$_'. Examples are the following:

dml_table_name:'EMP', err_log_table_name:'ERR$_EMP'

dml_table_name:'"Emp2"', err_log_table_name:'ERR$_Emp2'

err_log_table_owner

The name of the owner of theerror logging table. You can specify the owner indml_table_name. Otherwise, the schema of the currentconnected user is used.

err_log_table_space

The tablespace the error loggingtable will be created in. If not specified, the default tablespacefor the user owning the DML error logging table will beused.

skip_unsupported

When set to TRUE,column types that are not supported by error logging will beskipped over and not added to the error logging table.

When set to FALSE,an unsupported column type will cause the procedure toterminate.

The default isFALSE.


    
 
 

您可能感兴趣的文章:

  • 安装Oracle加载数据库错误areasQueries的解决
  • 我在安装oracle的时候出现了这个错误,请懂行人赐教~~附图!~~
  • 记录Linux下一次oracle启动错误
  • shell如何获取oracle错误码 在线等
  • Linux系统下安装Oracle X11错误解决办法
  • 求助前辈们:solaris 10 x86 安装oracle 10g 错误
  • 有 ORACLE 错误码文档吗? 谢谢大家!
  • Eclipse连接Oracle数据库的ORA-00604 ORA-12705错误
  • ORACLE安装时/tmp/orainstRoot.sh 执行发生错误
  • 关于提高Oracle数据库性能的四个错误认识
  • C++使用OCCI连Oracle10g的错误
  • Linux上管理本机Oracle的时候出现找不到ServiceName的错误
  • Oracle的sqlcode对应的错误信息sqlerrm
  • 连接Oracle817数据库的错误提示
  • Oracle AS关键字 提示错误
  • rh9上装oracle817犯了个低级错误,如何挽回?
  • oracle错误迷惑
  • FC6下安装Oracle9i错误,请高手指教 在线等 解决即结贴
  • Oracle10201 RAC升级到10204后导出数据时报EXP-00056错误
  • 在tomcat下连接oracle8i的javabean出现如下错误,急!
  • 不想装oracle却还要在redhat8.0下用jdbc连接oracle如何实现?
  • 那位高手知道怎样实现用JSP跟ORACLE连上?
  • oracle定时备份压缩的实现步骤
  • oracle增加表空间大小两种实现方法
  • MySQL实现类似Oracle中的decode()函数的功能
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • 老大们,虚拟机上系统os是linux,我想在它安装oracle,怎么实现?
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • 通过Oracle发送Email的实现方法
  • 如何实现将客户机上的word文件,以B/S方式最终存入oracle数据库?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 从jsp想oracle插入记录的顺序问题
  • 紧急求救:为什么oracle只能选择一定数据的记录
  • ejb的bmp向oracle表插入图片记录的问题!
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • 给200分:oracle的jdbc有BUG??为何在servlet中记录数不能超过120条?
  • 关于JDBC访问Oracle返回数据集的记录限制的问题
  • Oracle 如何快速查找和删除重复记录
  • Oracle 当前用户下所有表的记录总数
  • Oracle中用Rowid查找和删除重复记录
  • 如何确定Oracle数据库表重复的记录
  • shell向oracle插记录 小问题送分了,谢谢
  • Oracle数据库设置任务计划备份一周的备份记录
  • Linux(Oracle系统在上面)系统无缘无故死机 , 可能是由于应用程序引起 , 可是由于重新启动查不到相关信息 , 不知道在哪里有记录系统CPU Lo
  • MySQL数据迁移到Oracle记录
  • Oracle中取固定记录数详细步骤
  • Oracle基本操作全记录
  • SQL查询前10条记录(SqlServer/mysql/oracle)的语法分析
  • 在oracle下要在同一事务下插入多条记录,该怎么做??最好要有原代码
  • oracle快速删除重复的记录
  • 使用Linux下script工具记录Oracle输出
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,