ITPub博客

首页 > 数据库 > Oracle > ORACLE中impdp的总结

ORACLE中impdp的总结

Oracle 作者:bitifi 时间:2015-10-26 09:29:05 0 删除 编辑
    数据的导入导出时数据库经常处理的作业之一,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: Release 10.2.0.1.0 - Production on 星期一9月20 20:50:35 2010
 
        Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
        Connected to:
        Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
        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: Release 11.2.0.1.0 - Production on Fri Jun 8 08:01:22 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
;;; 
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
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: Release 11.2.0.1.0 - Production on Mon Jun 8 09:48:48 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
;;; 
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
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

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

请登录后发表评论 登录
全部评论

注册时间:2015-09-21

  • 博文量
    211
  • 访问量
    279788