如何使用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",所以抛出一个错误。

原文地址:https://www.cnblogs.com/dll102/p/15766136.html