zoukankan      html  css  js  c++  java
  • Oracle Expdp/Impdp 进行数据迁移的 几点注意事项

    关于Expdp/Impdp 命令的具体使用,在之前的blog里有说明,参考:

    Oracle expdp/impdp 使用示例

    http://blog.csdn.net/tianlesoftware/article/details/6260138

    exp/imp 与 expdp/impdp 对比 及使用中的一些优化事项

    http://blog.csdn.net/tianlesoftware/article/details/6093973

    Oracle 客户端 使用expdp/impdp 示例 说明

    http://blog.csdn.net/tianlesoftware/article/details/7075188

    这里列几点注意事项:

    1.根据用户来进行迁移

    只需要把相关的表空间创建好就可以了。不需要创建用户,数据泵在导入的过程中会自动的创建相关的用户,及赋权,即使我们不知道用户的密码,数据泵也能把原始的密码导入。这个可以简化我们的工作。

    如:

    expdp directory=backupdumpfile=dave.dmp logfile= dave.log schemas= user1,user2,user3;

    impdp directory=backupdumpfile=dave.dmp logfile=dave.log schemas= user1,user2,user3;

    2.  使用数据泵时,如果使用它的并行特性,那么并行数就要和对应的dump 文件数一致。

    如:

      expdp full=ydirectory=backup dumpfile=dave_%U.dmp parallel=4

      那么expdp将为parallel 创建4个文件:dave_01.DMP,dave _02.DMP,dave _03.DMP,dave _04.DMP。 每个进程一个文件。 这样的话,每个文件的大小会因进程而不同。 可能某个文件很大,某个文件却很小。 要解决这个问题,就是设置filesize 参数。 来指定每个文件的最大值。 这样当一个文件达到最大值的之后,就会创建一个新的文件。

    如:

    expdp full=ydirectory=dump dumpfile=dave_%U.dmp parallel=4 filesize=1G

    导出的dump文件和paralle有关系,那么导入也有关系。 paralle要小于dump文件数。 如果paralle 大于dump文件的个数,就会因为超过的那个进程获取不到文件,就不能对性能提高。

    3.  在迁移中,注意2种类型的对象

    一般来说,在迁移之前要注意一下信息:

    (1)    待迁移对象的总数和具体信息

    SQL>select count(*) from all_objectswhere owner in ('user1',’user2’)

    SQL> select object_type,count(1) as"NUM" from all_objects where owner in ('user1’,’user2’) group byobject_type;

    OBJECT_TYPE                NUM

    ------------------- ----------

    SEQUENCE                    85

    PROCEDURE                   74

    PACKAGE                      6

    PACKAGE BODY                 6

    TRIGGER                      5

    TABLE                      219

    INDEX                      229

    SYNONYM                      1

    VIEW                         4

    FUNCTION                     3

    TYPE                         2

    11 rows selected.

    (2)无效对象信息

    SQL> select count(*) from all_objectswhere owner in ('user1','user2') and status='INVALID';

    SQL> select owner,object_name fromall_objects where owner in ('user1','user2') and status='INVALID';

      迁移完成后,比较一下迁移前后的对象数和无效对象数。这里要注意的2种对象就是DBLINK 和 JOB。在我的测试中,这2类对象基本是不会自动导入,需要在导入完成后,手工的重新创建这些对象。

    查看DBLINK 信息:

    SQL> select owner,object_name,object_type from dba_objects where object_type='DATABASELINK';

    查看JOB 信息:

    SQL>select count(*) from dba_jobs where schema_user in ('user1',’user2’);

    -------------------------------------------------------------------------------------------------------

    版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

    Email:   tianlesoftware@gmail.com

    Skype: tianlesoftware

    Blog:     http://www.tianlesoftware.com

    Weibo: http://weibo.com/tianlesoftware

    Twitter: http://twitter.com/tianlesoftware

    Facebook: http://www.facebook.com/tianlesoftware

    -------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

    DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

    DBA 超级群:63306533(满);  DBA4 群:83829929   DBA5群: 142216823

    DBA6 群:158654907    DBA7 群:172855474  

  • 相关阅读:
    波段是金牢记六大诀窍
    zk kafka mariadb scala flink integration
    Oracle 体系结构详解
    图解 Database Buffer Cache 内部原理(二)
    SQL Server 字符集介绍及修改方法演示
    SQL Server 2012 备份与还原详解
    SQL Server 2012 查询数据库中所有表的名称和行数
    SQL Server 2012 查询数据库中表格主键信息
    SQL Server 2012 查询数据库中所有表的索引信息
    图解 Database Buffer Cache 内部原理(一)
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609402.html
Copyright © 2011-2022 走看看