关于导入dump(r3笔记第98天)

在工作中,dump文件对于dba而言是再平常不过的文件了。 不过在导入dump文件的时候还是有很多的细节可以注意,可以避免一些不必要的问题。 exp/imp是比较经典的数据导出导入工具,不过自expdp/impdp推出以来,exp/imp还是受到了不少的冷落,在新的版本中,支持力度都集中在了expdp/impdp上面。不过不管怎样,exp/imp还是一种比较轻巧的工具。对于小表的处理还是相当不错的。 -->查看dump文件的一些基本信息。 当你拿到一个dump文件的时候,不能盲目导入,我们可以基于当前的dump文件作一些基本的检查。 比如我们可以查到dump文件导出的版本,时间,导出的用户。 尽管dump文件是二进制文件,但是我们还是可以使用strings来得到一些信息。 $ strings test.dmp|head -10 iEXPORT:V11.02.00 RUSERS 8192 Sun Dec 28 6:54:27 2014test.dmp #G#G #G#G -08:00 BYTE UNUSED INTERPRETED 根据上面的命令输出,我们得到了一些dump的基本信息。 -->得到dump中的表信息 对于dump文件,我们可以解析出含有的表名,可以使用如下的方式来实现。 $ strings test.dmp |grep "CREATE TABLE "|awk '{print $3}'|sed 's/"//g' BALL_DATA BIG_INSERT CLOB_TEST COUNTRY_LST CTEST DATA DATA2 对于解析dump中的表,更多的信息可以参考通过shell解析dump生成parfile(http://blog.itpub.net/23718752/viewspace-1258482/ )

->关于外键 在导入dump文件的时候,外键也是一个很重要的因素,可能dump中含有一些表,有些表中存在外键,在数据迁移之类的项目中是很让人头疼的,你得基于外键考虑表的导入顺序,有些表得先倒入,要不在数据插入的时候会报外键相关的Ora问题。 可以使用如下的脚本来做一个基本过滤,可以考虑在过滤条件中嵌入一个dump中表的清单,可以更加精准的处理相关的外键。

SELECT
      'ALTER TABLE '||TABLE_NAME||' DISABLE  CONSTRAINT '|| CONSTRAINT_NAME||';' FROM USER_CONSTRAINTS WHERE
       CONSTRAINT_TYPE='R' UNION SELECT 'ALTER TABLE '||UCA.TABLE_NAME||' DISABLE  CONSTRAINT '|| UCA.CONSTRAINT_NAME||';'
FROM
       USER_CONSTRAINTS UCA ,
       (SELECT  CONSTRAINT_NAME
          FROM  USER_CONSTRAINTS
          WHERE CONSTRAINT_TYPE IN ('P','U')
) tmp
WHERE UCA.CONSTRAINT_TYPE = 'R'
  AND tmp.constraint_name = UCA.R_CONSTRAINT_NAME ;

->关于触发器 触发器在数据导入或者数据迁移中都会存在潜在的问题,如果你不了解应用中的触发器处理细节,就会发现在数据导入或者数据迁移的过程中,会莫名其妙多出来一部分数据,或者有些数据发生了变化。 一般来说,可以和开发做简单的确认,大多数的情况下都是需要把触发器给disable,然后在数据导入之后再启用。

SELECT
      'ALTER TRIGGER ' ||TRIGGER_NAME||' DISABLE ;'
FROM
       USER_TRIGGERS; 

-->关于buffer size buffer size的设置在数据导入中也是很重要的,如果dump存在一个较大的分区表,很可能导入的过程中就会跑出buffer size不够的错误,给你的导入工作带来很多影响。 一般可以把buffer size设置的大一些,比如4M,9M都是不错的选择。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-12-28

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户画像

mysql 模拟试题一

  3.SQL语言的数据操纵语句包括 SELECT,INSERT,UPDATE和 DELETE, 最重要的,也是使用最频繁的语句是__A__。 

1374
来自专栏数据之美

MySQL 死锁与日志二三事

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root...

4146
来自专栏Linyb极客之路

MySQL锁

  MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则。

1061
来自专栏杨建荣的学习笔记

一条看似平常的报警邮件所做的分析(r8笔记第9天)

今天留意到一封报警邮件。内容如下: ZABBIX-监控系统: ------------------------------------ 报警内容: CPU u...

2574
来自专栏携程技术中心

干货 | 一个MySQL 5.7 分区表性能下降的案例分析

作者简介 姜宇祥,2012年加入携程,10年数据库核心代码开发经验,相关开发涉及达梦,MySQL数据库。现致力于携程MySQL的底层研发,为特殊问题定位和处理提...

4907
来自专栏.NET技术

经典SQL语句大全之提升

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1(仅用于S...

2333
来自专栏Java技术交流群809340374

MySQL有哪些存储引擎,各自的优缺点,应用场景

经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB...

2333
来自专栏数据和云

专家出诊:SQL Server 高CPU系列之索引诊断

作者题记:CPU高使用率往往会导致SQL Server服务响应缓慢,查询超时,甚至服务挂起僵死,可以说CPU高使用率是数据库这种后台进程服务的第一大杀手。引发C...

4494
来自专栏杨建荣的学习笔记

浅谈exp/imp(下) (r5笔记第84天)

相关链接:浅谈exp/imp(上) (r5笔记第81天) 你可能 不了解的dump文件 在工作中,dump文件对于dba而言是再平常不过的文件了。不过因为dum...

3309
来自专栏Java面试通关手册

MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_G...

2377

扫码关注云+社区

领取腾讯云代金券