dbms_errlog让DML操作记录日志
2012-05-07 14:50
489 查看
Oracle的SQL loader工具,可以记录错误日志,并限制错误记录数。Oracle在进行DML操作时使用dbms_errlog可达到同样的效果。
看一下测试纪录
1、首先创建一张数据源表
SQL> create table t4 as select object_id from dba_objects;
Table created.
SQL> desc t4
Name Null? Type
----------------------------------------- -------- ----------------------------
OBJECT_ID NUMBER
2、检查数据源数据
SQL> select max(object_id) from t4;
MAX(OBJECT_ID)
--------------
53071
SQL> select min(object_id) from t4;
MIN(OBJECT_ID)
--------------
2
SQL> select count(*) from t4;
COUNT(*)
----------
50615
3、创建目标表,并修改结构
SQL> create table t5 as select * from t4 where 1=2;
Table created.
SQL> alter table t5 modify (object_id number(3));
Table altered.
4、对目标表进行常规插入测试
SQL> insert into t5 select * from t4;
insert into t5 select * from t4
*
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
5、使用dbms_errlog结合reject limit进行测试
SQL> exec dbms_errlog.create_error_log('t5','t5_errors');
PL/SQL procedure successfully completed.
SQL> insert into t5 select * from t4 log errors into t5_errors reject limit unlimited;
953 rows created.
SQL> select count(*) from t5;
COUNT(*)
----------
953
SQL> select count(*) from t5_errors;
COUNT(*)
----------
49662
SQL> rollback;
Rollback complete.
SQL> select count(*) from t5;
COUNT(*)
----------
0
SQL> select count(*) from t5_errors;
COUNT(*)
----------
49662
回滚操作不会影响错误日志的生成。
SQL> desc t5_errors
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)
OBJECT_ID VARCHAR2(4000)
dbms_errlog会在参照表t5的基础上新建立一个表,并增加5个字段,记录DML错误日志。
看一下测试纪录
1、首先创建一张数据源表
SQL> create table t4 as select object_id from dba_objects;
Table created.
SQL> desc t4
Name Null? Type
----------------------------------------- -------- ----------------------------
OBJECT_ID NUMBER
2、检查数据源数据
SQL> select max(object_id) from t4;
MAX(OBJECT_ID)
--------------
53071
SQL> select min(object_id) from t4;
MIN(OBJECT_ID)
--------------
2
SQL> select count(*) from t4;
COUNT(*)
----------
50615
3、创建目标表,并修改结构
SQL> create table t5 as select * from t4 where 1=2;
Table created.
SQL> alter table t5 modify (object_id number(3));
Table altered.
4、对目标表进行常规插入测试
SQL> insert into t5 select * from t4;
insert into t5 select * from t4
*
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
5、使用dbms_errlog结合reject limit进行测试
SQL> exec dbms_errlog.create_error_log('t5','t5_errors');
PL/SQL procedure successfully completed.
SQL> insert into t5 select * from t4 log errors into t5_errors reject limit unlimited;
953 rows created.
SQL> select count(*) from t5;
COUNT(*)
----------
953
SQL> select count(*) from t5_errors;
COUNT(*)
----------
49662
SQL> rollback;
Rollback complete.
SQL> select count(*) from t5;
COUNT(*)
----------
0
SQL> select count(*) from t5_errors;
COUNT(*)
----------
49662
回滚操作不会影响错误日志的生成。
SQL> desc t5_errors
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)
OBJECT_ID VARCHAR2(4000)
dbms_errlog会在参照表t5的基础上新建立一个表,并增加5个字段,记录DML错误日志。
相关文章推荐
- 删除MySQL log bin 日志操作记录
- iOS 文件操作,记录log日志。
- 【小菜日志】用LINQ的DataContext.Log 属性来记录LINQ TO语句操作日志
- iOS 文件操作,记录log日志。
- DBMS_ERRLOG记录DML错误日志(二)
- DBMS_ERRLOG记录DML错误日志(二)
- python使用twisted里log模块操作text记录日志
- 删除MySQL log bin 日志操作记录
- Tomcat会话超时时怎样记录操作日志,满足安全审计要求
- SpringAOP注解方式记录操作日志(操作模块,操作功能,调用方法,主键信息等)支持多笔操作时记录
- 记录PHP错误日志 display_errors与log_errors的区别
- 利用Rsyslog集中收集系统日志和用户操作记录以及相关处理方法
- mysql中bin-log日志操作常用命令
- spring的AOP实现记录操作日志
- 在cron启动定时任务后总是会启动一个[sendmail] 进程的解决方法, 并且每次cron任务之后msmtp.log总是记录一条发送失败的日志
- java 日志 log操作的基本配置+代码
- log日志记录类(网站日志)
- Tomcat的访问日志-localhost_access_log和记录Post请求参数
- UFO提示写日志文件ufoerr.log 错误
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录