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

时间: 2024-08-09 15:26:41

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

PHP错误日志笔记

一.相关配置 需要将php.ini中的配置指令做如下修改: error_reporting = E_ALL ;将会向PHP报告发生的每个错误 display_errors = Off ;不显示满足上条 指令所定义规则的所有错误报告 log_errors = On ;开启错误日志 log_errors_max_len = 1024 ;设置每个日志项的最大长度 error_log = /var/php_errors.log ;指定产生的 错误报告写入的日志文件位置 PHP的配置文件按上面的方式设置完

PHP 错误与异常 笔记与总结(5)配置文件中与错误日志相关的选项

[记录错误(生产环境)] php.ini: ① 开启 / 关闭 错误日志功能 log_errors = On ② 设置 log_errors 的最大字节数 log_errors_max_len = 1024 其他: 选项 描述 log_errors 设置是否将错误信息记录到日志或者 error_log 中 error_log 设置脚本错误将记录到的文件 log_errors_max_len 设置 log_errors 的最大字节数 ignore_repeated_errors 是否忽略重复的错误

PHP 错误与异常 笔记与总结(6)将错误日志保存在系统日志中

[将错误记录到系统日志中] 在 php.ini 中将 error_log 设置为: error_log = syslog 或者在运行时使用 ini_set() 函数设置. [例1] <?php //关闭错误显示 ini_set('display_errors', 0); //开启错误日志功能 ini_set('log_errors', 'on'); //设置错误日志的路径 ini_set('error_log', 'syslog'); //显示所有错误 error_reporting(-1);

PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送

当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = [email protected] 然后设置: sendmail_path = "G:\sendmail\sendmail.exe -t" 其中:G:\sendmail\sendmail.exe 是邮件客户端的地址. 代码: <?php //关闭错误显示 ini_set('display_errors', 0

Oracle数据库错误大全

ORA-00001: 违反唯一约束条件 (.)ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数ORA-00019: 超出最大会话许可数ORA-00020: 超出最大进程数 ()ORA-00021: 会话附属于其它某些进程:无法转换会话ORA-00022: 无效的会话 ID:访问被拒绝ORA-00023: 会话引用进程私用内存:无法分离会话ORA-00024: 单一进程模式下不允许从多个进程注册ORA-00025: 无法分配ORA-00026: 丢失或无效的会话 I

总结:整理 oracle异常错误处理 . (转载)

5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4 用户定义的异常处理 5.2 异常错误传播 5.2.1 在执行部分引发异常错误 5.2.2 在声明部分引发异常错误 5.3 异常错误处理编程 5.4 在 PL/SQL 中使用 SQLCODE, SQLERRM异常处理函数 即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件.一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复.任何ORACLE错误

Oracle DML容错处理(1)

Oracle dml操作过程中可能出现键重复或者数据类型不一致等问题,一般进行数据处理时候需要对这些可能出现的错误提前考虑,避免更新失败.Oralce给出了一些其他解决方案,以在不同场景下使用. 1.ignore_row_on_dupkey_index HINT Oracle 11.2.0.1 版本中心加入的3个提示CHANGE_DUPKEY_ERROR_INDEX, IGNORE_ROW_ON_DUPKEY_INDEX, RETRY_ON_ROW_CHANGE,与其他提示不同,特别之处在于存在

Oracle 用户验证日志

1.sysdba/sysoper 权限用户验证日志;2.非sysdba/sysoper 权限用户验证日志;3.关于sqlcode; 1.sysdba/sysoper 权限用户验证日志:在数据库设置了参数 audit_sys_operations=true 的情况下,系统会根据 audit_trail 参数的设置记录 sysdba/sysoper 权限用户日志到 audit_file_dest 参数设置的目录下,记录日志的内容包括(数据库启动操作.登录验证信息.DML操作),其它非 sysdba/