设为首页 收藏本站
查看: 624|回复: 0

[经验分享] ORACLE中impdp的总结

[复制链接]

尚未签到

发表于 2015-12-19 15:33:56 | 显示全部楼层 |阅读模式
    数据的导入导出时数据库经常处理的作业之一,Oracle 提供了IMP和IMPDP以及SQL*Loader等工具来完成数据的导入工作,其中IMP服务于早期的9i之前的版本,在10g及后续版本,Oracle 提供了数据泵高速导入工具,本文主要介绍IMPDP的使用方法,关于高速导出工具请参照:数据泵EXPDP 导出工具的使用。SQL*Loader请参照:SQL*Loader使用方法。   
  一、数据泵的体系结构
      数据泵的体系结构在数据泵EXPDP 导出工具的使用已列出,再此不再赘述。
   
  二、IMPDP支持的接口及导入模式
      导入接口
          使用命令行带参数的
          使用命令行带参数文件
          使用命令行交互
          使用database console(GUI)
      几种常用的导入模式
          导入表
          导入方案
          导入表空间
          导入数据库
          传输表空间模式
                 
  三、演示如何导入
      1.关于查看impdp的帮助,使用以下命令
          [oracle@oradb ~]$ impdp -?  
          或[oracle@oradb ~]$ impdp -help  前者提供帮助信息并开启命令行交互模式
     
      2. 导入表
          --将表dept,emp导入到scott方案中
          impdp scott/tiger directory=dump_scott dumpfile=tab.dmp tables=dept,emp
   
          --将表dept和emp从scott方案导入到system方案中,对于方案的转移,必须使用remap_shcema参数
          impdp system/manage directory=dump_scott dumpfile=tab.dmp tables=scott.dept,scott.emp remap_schema=scott:system
   
      3.导入方案
          --将dump_scott目录下的schema.dmp导入到scott方案中
          impdp scott/tiger directory=dump_scott dumpfile=schema.dmp schemas=scott
         
          --将scott方案中的所有对象转移到system方案中
          impdp system/redhat directory=dump_scott dumpfile=schema.dmp schemas=scott remap_schema=scott:system
   
      4.导入表空间
          impdp system/redhat directory=dump_scott dumpfile=tablespace.dmp tablespaces=user01
         
      5.导入数据库
          impdp system/redhat directory=dump_scott dumpfile=full.dmp full=y      
         
      6.将数据对象原样导回(演示从Windows客户端来实现,数据库基于Linux系统)
          从Windows客户端来导出scott.emp表,导出后删除该表,再原样导回
          C:/>expdp scott/tiger@list2 directory=dump_scott dumpfile=emp.dmp tables=emp
         
          C:/>sqlplus scott/tiger@list2
   
          SQL*Plus:>
   
          Copyright (c) 1982, 2005, Oracle.  All rights reserved.
   
          Connected to:
          Oracle Database 10g Enterprise Edition>
          With the Partitioning, OLAP and Data Mining options
   
          SQL> drop table emp;
   
          Table dropped.
   
          SQL> commit;
   
          Commit complete.
          SQL> select count(1) from emp;
          select count(1) from emp
                               *
          ERROR at line 1:
          ORA-00942: table or view does not exist
          SQL> host impdp scott/tiger@list2 directory=dump_scott dumpfile=emp.dmp
   
          SQL> select count(1) from emp;
            COUNT(1)
          ----------
                  14     
   
      7.将导出的对象使用remap_schema参数转移到不同的方案
          a.将dept从scott用户导入到system用户下
              expdp scott/tiger directory=dump_scott dumpfile=dept.dmp tables=dept
                 
              方法一:
              impdp system/redhat tables=scott.dept directory=dump_scott dumpfile=dept.dmp remap_schema=scott:system
   
              方法二:
              sql>grant imp_full_database to scott;
              impdp scott/tiger directory=dump_scott dumpfile=dept.dmp tables=dept
                    remap_schema=scott:system table_exists_action=replace
     
          b.将scott方案下的所有对象导入到system方案下
              expdp scott/tiger directory=dump_scott dumpfile=allobj.dmp schemas=scott
              impdp scott/tiger directory=dump_scott dumpfile=allobj.dmp remap_schema=scott:system table_exists_action=replace
   
      8.使用remap_datafile参数转移到不同的数据文件(用于不同平台之间存在不同命名方式时)
          下面的示例首先创建了一个参数文件,参数文件名为payroll.par
              directory=pump_scott
              full=y
              dumpfile=datafile.dmp
              remap_datafile='db$:[hrdata.payroll]tbs2.f':'/db/hrdata/payroll/tbs2.f'  --指明重新映射数据文件
     
              impdp scott/tiger PARFILE=payroll.par
     
      9.使用remap_tablespace参数转移到不同的表空间
          impdp scott/scott remap_tablespace=users:tbs1 directory=dpump_scott dumpfile=users.dmp
         
      10.并行导入:
          expdp e/e directory=dump_e dumpfile=a_%u.dmp schemas=e parallel=3
   
          impdp e/e directory=dump_e dumpfile=a_%u.dmp schemas=e parallel=3 table_exists_action=replace
   
  四、数据泵impdp参数:
      1.REMAP_DATAFILE
          该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时需要该选项.
          REMAP_DATAFILE=source_datafie:target_datafile
   
      2.REMAP_SCHEMA
          该选项用于将源方案的所有对象装载到目标方案中.
          REMAP_SCHEMA=source_schema:target_schema
   
      3.REMAP_TABLESPACE
          将源表空间的所有对象导入到目标表空间中
          REMAP_TABLESPACE=source_tablespace:target:tablespace
   
      4.REUSE_DATAFILES
          该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N
          REUSE_DATAFIELS={Y | N}
   
      5.SKIP_UNUSABLE_INDEXES
          指定导入是是否跳过不可使用的索引,默认为N
   
      6,sqlfile  参数允许创建DDL 脚本文件
          impdp scott/tiger directory=dump_scott dumpfile=a1.dmp sqlfile=c.sql
          默认放在directory下,因此不要指定绝对路径
   
      7.STREAMS_CONFIGURATION
          指定是否导入流元数据(Stream Matadata),默认值为Y.
   
      8.TABLE_EXISTS_ACTION
          该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP
          TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE }
   
          当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;
          当设置为APPEND时,会追加数据
          当设置为TRUNCATE时,导入作业会截断表,然后为其追加新数据;
          当设置为REPLACE时,导入作业会删除已存在表,重建表并追加数据,
          注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项
   
      9.TRANSFORM
          该选项用于指定是否修改建立对象的DDL语句
          TRANSFORM=transform_name:value[:object_type]
          transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),
          STORAGE用于标识段存储属性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型.
   
          Impdp scott/tiger directory=dump dumpfile=tab.dmp transform=segment_attributes:n:table
   
      10.TRANSPORT_DATAFILES
          该选项用于指定搬移空间时要被导入到目标数据库的数据文件
          TRANSPORT_DATAFILE=datafile_name
          Datafile_name用于指定被复制到目标数据库的数据文件
          Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp
          TRANSPORT_DATAFILES=’/user01/data/tbs1.f’
   
  五、影响数据泵性能的相关参数
          对下列参数建议如下设置
          disk_asynch_io=true
          db_block_checking=false
          db_block_checksum=false
   
          对下列参数建议设置更高的值来提高并发
          processes                    
          sessions   
          parallel_max_servers                
         
          对下列参数应尽可能的调大空间大小
          shared_pool_size                   
          undo_tablespace 
  
   六、导入遇到的问题
  
  DIRECTORY
  SQL> select * from dba_directories;
   OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
   ------------------------------ ------------------------------ ---------------------------------------------------------------------
   SYS                            ORACLE_OCM_CONFIG_DIR          /u01/app/oracle/product/11.2.0/db_1/ccr/state
   SYS                            DATA_PUMP_DIR                  /u01/app/oracle/product/11.2.0/db_1/rdbms/log/
   SYS                            JX_DUMP                        /ZQN
  
  数据的介绍:
   源数据:
   用户名:emms_jx
   表名:send_task_logs
   表空间:tbs_emms
   说明:该表具有LOB字段在别的表空间上导入容易报错
  
   目标数据:
  
   用户名:scott
   表空间名:users
  
  导入出现的问题:
   导入语句:
  impdp scott/******** directory=JX_DUMP dumpfile=jx.dmp tables=emms_jx.send_task_logs remap_schema=emms_jx:scott logfile=log11.log
  
   Import:>
   Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
   ;;; 
   Connected to: Oracle Database 11g Enterprise Edition>
   With the Partitioning, OLAP, Data Mining and Real Application Testing options
   ;;; Legacy Mode Active due to the following parameters:
   ;;; Legacy Mode Parameter: "log=log11.log" Location: Command Line, Replaced with: "logfile=log11.log"
   Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
   Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=JX_DUMP dumpfile=jx.dmp tables=emms_jx.send_task_logs remap_schema=emms_jx:scott logfile=log11.log 
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
  ORA-39083: Object type TABLE:"SCOTT"."SEND_TASK_LOGS" failed to create with error:
  ORA-00959: tablespace 'TBS_EMMS' does not exist
   Failing sql is:
   CREATE TABLE "SCOTT"."SEND_TASK_LOGS" ("TASK_ID" NUMBER(19,0) NOT NULL ENABLE, "CUSTOMER_ID" NUMBER(38,0) NOT NULL ENABLE, "CUSTOMER_NAME" VARCHAR2(50 CHAR), "AGREEMENT_ID" NUMBER(38,0) NOT NULL ENABLE, "START_DATE" DATE, "END_DATE" DATE, "PRODUCT_ID" NUMBER(38,0), "SERVICE_NAME" VARCHAR2(30 CHAR), "SEND_TIME" TIMESTAMP (6), "SUBMIT_TIME" TIMESTAMP (6) NOT NULL
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/CONSTRAINT
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/COMMENT
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
   Job "SCOTT"."SYS_IMPORT_TABLE_01" completed with 1 error(s) at 16:03:22
  
   修改语句:
   impdp scott/tiger directory=JX_DUMP dumpfile=jx.dmp tables=emms_jx.send_task_logs remap_schema=emms_jx:scott remap_tablespace=tbs_emms:users table_exists_action=append logfile=log14.log
   Import:>
   Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
   ;;; 
   Connected to: Oracle Database 11g Enterprise Edition>
   With the Partitioning, OLAP, Data Mining and Real Application Testing options
   Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
   Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/******** directory=JX_DUMP dumpfile=jx.dmp tables=emms_jx.send_task_logs remap_schema=emms_jx:scott remap_tablespace=tbs_emms:users table_exists_action=append logfile=log14.log 
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
   . . imported "SCOTT"."SEND_TASK_LOGS"                    14.03 MB  119503 rows
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/INDEX
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/CONSTRAINT/CONSTRAINT
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/COMMENT
   Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
   Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 09:56:15

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-153409-1-1.html 上篇帖子: Oracle官方中文支持文档 下篇帖子: Oracle Database 12c新特性 In
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表