专栏首页杨建荣的学习笔记数据紧急修复之启用错误日志 (r2第12天)

数据紧急修复之启用错误日志 (r2第12天)

昨晚对测试环境进行了升级,同步了部分生产的数据。整个过程比较顺利,但是在最后一步启用foreign key constraint的时候报了错误。 ora-02298:cannot validate(xxxx.xxxx_fk) -parent keys not found 很明显是一部分数据没有同步到,有一部分数据丢失了。和开发做了确认,从生产中根据条件导出了一个dump,关联的表有100多个,每个表里都是根据筛选条件过滤后的部分数据,可能有一部分数据和现有环境的数据有重复。开发说在主键对应的数据重复的情况下,如果发生主键冲突,reject的数据可以忽略。只要插入没有冲突的数据即可 这个需求也很特别,首先想到的就是直接用Imp来导入,如果发生主键重复,会抛出错误,然后查看下一条记录,直到没有冲突的数据都插入 。 为了保险起见创建了一个临时用户,把数据导入到了这个临时用户中。 . . importing table "TEST_DATA" 2810237 rows imported . . importing table "TEST_NAME_LINK" 8281 rows imported 然后尝试使用如下的方式查看是否有数据冲突,最后rollback,可以看到确实有冲突数据。 insert into xxxx.TEST_DATA select *from app_tmp.TEST_DATA ; insert into xxxx.TEST_NAME_LINK select *from app_tmp.TEST_NAME_LINK ; ORA-00001: unique constraint (XXXX.TEST_DATA_PK) violated ORA-00001: unique constraint (XXXX.TEST_NAME_LINK_PK) violated 做了备份之后,然后尝试使用Imp来插入数据,果然有很多表多抛出很多的冲突数据错误。这是期望中的,但是在TEST_DATA这个表的时候,冲突数据实在太多。每一秒钟大概能够输出3条错误记录,错误如下: IMP-00019: row rejected due to ORACLE error 1 IMP-00003: ORACLE error 1 encountered ORA-00001: unique constraint (xxxx.TEST_DATA_PK) violated Column 1 10000101 Column 2 22-SEP-2012:02:49:52 Column 3 Column 4 105 Column 5 TEST0042 Column 6 TEST911 Column 7 0 .... 每一秒钟大概3条记录的样子,结果执行了有快半个小时,还是那不停的输出日志,日志都400M左右了,大小堪比dump文件的大小了。 最后果断取消,因为在这种情况下有一部分数据已经插入了,一部分被reject了,得保证没有冲突的数据都插入。 最后使用错误日志。 EXEC DBMS_ERRLOG.create_error_log(dml_table_name => 'NAME_DATA',SKIP_UNSUPPORTED=>true,ERR_LOG_TABLE_NAME=>'NAME_DATA_ERROR');

然后使用如下的语句插入,大概等了有5分钟左右的时间,就提示插入了2万多条记录,是2百多万条记录中的1%的比例。

SQL> insert into name_data select *from app_tmp.name_data LOG ERRORS INTO NAME_DATA_ERROR('duplicate data') REJECT LIMIT UNLIMITED;
28388 rows created.
SQL> commit;

查看错误日志 select count(*)from name_data_error;里面就是被reject的数据。 做了基本确认后,再次尝试enable foregin key constraint就没有问题了。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes),作者:r2第12天

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2014-06-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 几类历史数据沉淀的方案过渡

    从数据层面来理解,数据可以分为几个维度,比如流水型数据,状态型数据库,配置型数据。流水型数据的依赖最低,基本就是时间维度的扩展,所以从数据的安全角度来说,如果丢...

    jeanron100
  • 很多人比较纠结的约束和索引的关系(r7笔记第75天)

    最近有不少朋友公众号留言或者微信私信问我一个问题,出乎我的意料,问题竟然都是很相似的,所以我统一答复一下。 之前写了一篇文章 一个清理和查询都要兼顾的简单方案,...

    jeanron100
  • merge语句导致的ORA错误分析(r9笔记第67天)

    最近处理了好几起关于merge导致的问题,其实看到merge语句内心也还是蛮纠结的,这一次还是碰到了问题,简直无语了。 先交代下问题...

    jeanron100
  • Rutgers大学熊辉教授:《易经》如何指导我们做人工智能?

    我们看这个世界主要有两种方式:一种方式是从上往下看世界;另外一种是东方人所擅长的《易经》方法看世界,也就是归纳法,从下往上看世界。《易经》追求三易,不易、变易和...

    马上科普尚尚
  • 智能写手满月记,从实验室走向商业化

    中国人的传统,孩子满月要做点什么?智能写手这个孩子不论好坏,都是我们团队里每一个人的结晶,也和各位种子用户分不开。做为本项目的产品负责人,在这个特殊的日子,我觉...

    mixlab
  • 如何成为一个优秀的工程师?

    这是一篇旧文,是陆奇还在百度时候的演讲:如何成为一个优秀的工程师。道出了一个工程师应有的追求,如此,未来才能属于工程师。

    Spark学习技巧
  • 数据产品设计专题(3)-数据运营方法体系框架

           b.纵向价值链打通:实现数据信息化(构建元数据管理系统)、信息知识化(构建数据血缘关系和知识分享平台)、知识智慧化(设计领域分析模型);

    数据饕餮
  • 《新科学家》:AI 描绘的第一份未来草图,2076 年的人类世界

    【新智元导读】作为 60 周年纪念,《新科学家》重磅发布了最新一期的杂志,试图为其读者提供“第一份关于未来的草图”。预测未来并不是十分靠谱的事情,虽然目前的AI...

    新智元
  • iOS 开发安全那些事儿

    ​ 随着移动互联网的普及,被越来越多的心怀不轨的人觊觎,也越来越多的安全问题暴露了出来。开发者开发出来的应用被安装在设备上之后,用户并不具有专业的安全知识。...

    100000798482
  • Java面试总结

    前几天去了几家公司面试,果然,基本全部倒在二面上,无语啊。。。不过幸好,到最后拿到了环球易购的offer,打算就这么好好呆着了,学习学习,努力努力,下面讲讲这几...

    Zephery

扫码关注云+社区

领取腾讯云代金券