• 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  

  • 相关阅读:
    Typescript类、命名空间、模块
    TypeScript 基础类型、变量声明、函数、联合类型、接口
    JS中的单线程与多线程、事件循环与消息队列、宏任务与微任务
    wangEditor上传本地视频
    java版excel转pdf,word转pdf
    idea2019.3 没有 Autoscroll from Source
    mysql 实现类似oracle函数bitand功能
    spring boot 配置文件动态更新原理 以Nacos为例
    spring boot 发布自动生成svn版本号
    spring boot JPA 数据库连接池释放
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609401.html
Copyright © 2020-2023  润新知