ORACLE中impdp的總結

bitifi發表於2015-10-26
    資料的匯入匯出時資料庫經常處理的作業之一,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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章