ITPub博客

首页 > Linux操作系统 > Linux操作系统 > expdp impdp 使用补充说明:11g 导出导入10g 补充,导入用户和导出用户不同的处理

expdp impdp 使用补充说明:11g 导出导入10g 补充,导入用户和导出用户不同的处理

原创 Linux操作系统 作者:lucy_lxy 时间:2011-11-10 15:16:37 0 删除 编辑

测试了一下上面的11G 到10G里面的方式,可以正确导入有两个问题:

(1)在导入的时候,IMPDP 里面可以不用加version=xxxx这个参数,只在11g的EXPDP里面添加此参数就可以了

impdp userid=system/manager directory=db_bak dumpfile=11g_for_10g logfile=impdp_11g_to_10g schemas=zhtjgct 

(2)schemas所指定导入的用户,在导入执行之前,事先不用建立好,当然如果你设定了自己的表空间,需要首先建立相关的表空间。测试了下,导入之后使用的默认表空间、临时表空间都和源库里面的一致。如果没有该用户,impdp 会自动建立该用户,如果已经有该用户,impdp 会将DMP文件里面的表添加到该用户里。 

(3)如何实现IMP 里面的 fromuser=a1  touser=TEST1 两者不同的情况呢,即从一个用户要导入到另外一个用户里。

Expdp userid=system/manager schemas=a1 directory=db_bak dumpfile=expdp_a1 logfile=expdp_a1.log   

在用impdp导入数据时:

impdp userid=system/manager schemas=test1 directory=db_bak dumpfile=expdp_test1 logfile=expdp_test1.log   

直接在schemas里面设置和expdp 里面的schemas不同的用户,会出现:

ORA-39002: invalid operation

ORA-39165: Schema TEST1 was not found. 

不相信这种功能会无法实现,否则如何替代以前的exp  imp呢?查找其帮助信息,看到了remap_schema这个参数,看来可以实现我们所需的功能,其作用类似于老的imp工具中的fromuser和touser参数,impdp中将fromuser和touser参数合并成了remap_schema参数

查阅了网上的帖子,通过如下的格式指定:impdp … remap_schema=old_schema_name:new_schema_name 

impdp userid=system/manager directory=db_bak dumpfile=expdp_test1 logfile=expdp_test1.log  remap_schema=a1:test1   

test1用户也同样不必事先存在。只要导入时连接的用户有足够的权限,就会使用DUMP文件中的CREATE USER的metadata来创建一个对应的用户的。当然你导入时候userid 要有相应的权限,这里我用的是system 当然没事。 

REMAP_SCHEMA官方文档解释
多个REMAP_SCHEMA 行都可以被指定,但是每个源schema 必须不同. 然而,不同的源schemas可以映射到同一个目标schema中. 映射也可以不必100%的完成,因为有些特定 schema 引用, Import不能全能找到. 例如, Import 不能找到那些嵌入到types, views, procedures, and packages体内的schema 引用。

如果你正映射的schema不存在, import操作会创建它, 如果导出文件包含源schema必要的CREATE USER 源数据,并且你具有足够的权限导入的话.  

需要好好看下官方手册!还要自己动手做实验!

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7177735/viewspace-710753/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 使用expdp的心得
请登录后发表评论 登录
全部评论

注册时间:2010-09-27

  • 博文量
    124
  • 访问量
    391599