前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于导入dump(r3笔记第98天)

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

作者头像
jeanron100
发布2018-03-15 13:50:28
5490
发布2018-03-15 13:50:28
举报

在工作中,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都是不错的选择。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档