• 如何使用Oracle数据泵 expdp/impdp进行库的导出和导入


    第一步  用sys用户在源库建立数据目录,并将数据目录读写权限、数据库的导入与导出权限,赋给相应的数据库用户

    CREATE OR REPLACE DIRECTORY dir_dump AS '/opt/backup/';

     GRANT read,write ON DIRECTORY dir_dump TO lcsdb;

    grant EXP_FULL_DATABASE,IMP_FULL_DATABASE to lcsdb;

    第二步 检查tnsname.ora

    检查服务名配置文件中是否配置了要导出的库的实例名称,如没有配置全部加上

    第三步 使用expdp进行数据库的全库导出

     expdp 用户名/密码@库名称 directory=dir_dump dumpfile=rptdb_bck.dmp logfile=rptdb_bck.log FULL=y;

    第四步  用sys用户登陆目标库后,再目标库建立数据目录,并将数据目录读写权限、授权给普通用户数据库导出与到导入的角色权限

    CREATE OR REPLACE DIRECTORY dir_dump AS '/opt/backup/';

     grant EXP_FULL_DATABASE,IMP_FULL_DATABASE to lcsdb;

    第五步 使用impdp进行数据库的全库导入,可以映射表空间和用户

    impdp 用户名/密码@库名称 remap_schema=lcc:lcsdb directory=dir_dump dumpfile=fullbak.dmp logfile=fullimp_lc.log

    2:导入表结构定义时,要做好几件事情。

     

        2.1  原始表与目标表位于不同的SCHEMA,那么导入的时候,就必须完成这种转换,可以使用REMAP_SCHEMA参数将表和数据从一个SCHEMA转移到另外一个SCHEMA,其作用类似于老的imp工具中的fromuser和touser参数,impdp中将fromuser和touser参数合并成了REMAP_SCHEMA参数。该参数的使用方法REMAP_SCHEMA=source_schema:target_schema.

       

            注意事项:即使你指定的对应SCHEMA不存在,只要导入时连接的用户有足够的权限,就会使用DUMP文件中的CREATE USER的metadata来创建一个对应的用户。

         

       2.2  一般而言,对应SCHEMA(User)有默认的表空间,有可能不同SCHEMA默认的表空间不同,那么就必须用参数REMAP_TABLESPACE来解决导入数据更改表空间的情形,否则就会遇到ORA-01950: no privileges on tablespace 'xxxxx' 这种错误。

       

            注意事项:有可能原始表的数据和索引位于不同的表空间,所以可能需要匹配多个表空间,具体操作为REMAP_TABLESPACE=src1:dst1 REMAP_TABLESPACE=src2:dst2

     

       2.3 逻辑冲突,这个无关工具的关系,而是由于逻辑关系缘故。

     

            如下案例所示,例如原表"TEST"."INV_CARTONS"跟"TEST"."INV_STORE_CODES"有主外键关系。但是我们没有导出、导入"TEST"."INV_STORE_CODES",那么此时不存在"TEST_ARCH"."INV_STORE_CODES",所以抛出一个错误。

  • 相关阅读:
    银行代码
    c#第二章
    c#第一章
    S1304HTML内测测试分析
    HTML第九章
    HTML第八章
    HTML第七章
    Jupyter Notebook与Jupyterhub的安装与配置
    如果你要拍一部微电影
    针对Excel的vbs操作
  • 原文地址:https://www.cnblogs.com/dll102/p/15766136.html
Copyright © 2020-2023  润新知