Oracle expdp/impdp 工具的使用

Oracle數據泵sql


注:高版本ORACLE向低版本的數據遷移還得加上VERSION
數據庫

1、數據泵的做用:網絡

        1.實現邏輯備份和邏輯恢復oracle

        2.在數據庫用戶之間移動對象工具

        3.在數據庫之間移動對象加密

        4.實現表空間轉移spa



二 、數據泵的特色與傳統導出導入的區別命令行

       1.EXP和IMP是客戶段工具程序, EXPDP和IMPDP是服務端的工具程序日誌

       2.EXP和IMP效率比較低. EXPDP和IMPDP效率高對象

       3.數據泵功能強大並行、過濾、轉換、壓縮、加密、交互等等

       4.數據泵不支持9i之前版本, EXP/IMP短時間內仍是比較適用

       5.同exp/imp數據泵導出包括導出表,導出方案,導出表空間,導出數據庫4種方式.


3、DATA PUMP的體系結構:


4、EXPDP語法介紹:


數據泵導出實用程序提供了一種用於在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可使用如下命令進行調用:

   示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您能夠控制導出的運行方式。具體方法是: 在 'expdp' 命令後輸入
各類參數。要指定各參數, 請使用關鍵字:

   格式:  expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
   示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
               或 TABLES=(T1:P1,T1:P2), 若是 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字               說明 (默認)
------------------------------------------------------------------------------
ATTACH                鏈接到現有做業, 例如 ATTACH [=做業名]。
COMPRESSION           減少有效的轉儲文件內容的大小
                      關鍵字值爲: (METADATA_ONLY) 和 NONE。
CONTENT               指定要卸載的數據, 其中有效關鍵字爲:
                      (ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY             供轉儲文件和日誌文件使用的目錄對象。
DUMPFILE              目標轉儲文件 (expdat.dmp) 的列表,
                      例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD   用於建立加密列數據的口令關鍵字。
ESTIMATE              計算做業估計值, 其中有效關鍵字爲:
                      (BLOCKS) 和 STATISTICS。
ESTIMATE_ONLY         在不執行導出的狀況下計算做業估計值。
EXCLUDE               排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。
FILESIZE              以字節爲單位指定每一個轉儲文件的大小。
FLASHBACK_SCN         用於將會話快照設置回之前狀態的 SCN。
FLASHBACK_TIME        用於獲取最接近指定時間的 SCN 的時間。
FULL                  導出整個數據庫 (N)。
HELP                  顯示幫助消息 (N)。
INCLUDE               包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME              要建立的導出做業的名稱。
LOGFILE               日誌文件名 (export.log)。
NETWORK_LINK          連接到源系統的遠程數據庫的名稱。
NOLOGFILE             不寫入日誌文件 (N)。
PARALLEL              更改當前做業的活動 worker 的數目。
PARFILE               指定參數文件。
QUERY                 用於導出表的子集的謂詞子句。
SAMPLE                要導出的數據的百分比;
SCHEMAS               要導出的方案的列表 (登陸方案)。
STATUS                在默認值 (0) 將顯示可用時的新狀態的狀況下,
                      要監視的頻率 (以秒計) 做業狀態。
TABLES                標識要導出的表的列表 - 只有一個方案。
TABLESPACES           標識要導出的表空間的列表。
TRANSPORT_FULL_CHECK  驗證全部表的存儲段 (N)。
TRANSPORT_TABLESPACES 要從中卸載元數據的表空間的列表。
VERSION               要導出的對象的版本, 其中有效關鍵字爲:
                      (COMPATIBLE), LATEST 或任何有效的數據庫版本。

下列命令在交互模式下有效。
注: 容許使用縮寫

命令               說明
------------------------------------------------------------------------------
ADD_FILE              向轉儲文件集中添加轉儲文件。
CONTINUE_CLIENT       返回到記錄模式。若是處於空閒狀態, 將從新啓動做業。
EXIT_CLIENT           退出客戶機會話並使做業處於運行狀態。
FILESIZE              後續 ADD_FILE 命令的默認文件大小 (字節)。
HELP                  總結交互命令。
KILL_JOB              分離和刪除做業。
PARALLEL              更改當前做業的活動 worker 的數目。
                      PARALLEL=<worker 的數目>。
START_JOB             啓動/恢復當前做業。
STATUS                在默認值 (0) 將顯示可用時的新狀態的狀況下,
                      要監視的頻率 (以秒計) 做業狀態。
                      STATUS[=interval]
STOP_JOB              順序關閉執行的做業並退出客戶機。
                      STOP_JOB=IMMEDIATE 將當即關閉
                      數據泵做業。


5、IMPDP語法介紹:

數據泵導入實用程序提供了一種用於在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可使用如下命令進行調用:

     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

您能夠控制導入的運行方式。具體方法是: 在 'impdp' 命令後輸入
各類參數。要指定各參數, 請使用關鍵字:

     格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

USERID 必須是命令行中的第一個參數。

關鍵字               說明 (默認)
------------------------------------------------------------------------------
ATTACH                鏈接到現有做業, 例如 ATTACH [=做業名]。
CONTENT               指定要加載的數據, 其中有效關鍵字爲:
                      (ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY             供轉儲文件, 日誌文件和 sql 文件使用的目錄對象。
DUMPFILE              要從 (expdat.dmp) 中導入的轉儲文件的列表,
                      例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD   用於訪問加密列數據的口令關鍵字。
                      此參數對網絡導入做業無效。
ESTIMATE              計算做業估計值, 其中有效關鍵字爲:
                      (BLOCKS) 和 STATISTICS。
EXCLUDE               排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。
FLASHBACK_SCN         用於將會話快照設置回之前狀態的 SCN。
FLASHBACK_TIME        用於獲取最接近指定時間的 SCN 的時間。
FULL                  從源導入所有對象 (Y)。
HELP                  顯示幫助消息 (N)。
INCLUDE               包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME              要建立的導入做業的名稱。
LOGFILE               日誌文件名 (import.log)。
NETWORK_LINK          連接到源系統的遠程數據庫的名稱。
NOLOGFILE             不寫入日誌文件。
PARALLEL              更改當前做業的活動 worker 的數目。
PARFILE               指定參數文件。
QUERY                 用於導入表的子集的謂詞子句。
REMAP_DATAFILE        在全部 DDL 語句中從新定義數據文件引用。
REMAP_SCHEMA          將一個方案中的對象加載到另外一個方案。
REMAP_TABLESPACE      將表空間對象從新映射到另外一個表空間。
REUSE_DATAFILES       若是表空間已存在, 則將其初始化 (N)。
SCHEMAS               要導入的方案的列表。
SKIP_UNUSABLE_INDEXES 跳過設置爲無用索引狀態的索引。
SQLFILE               將全部的 SQL DDL 寫入指定的文件。
STATUS                在默認值 (0) 將顯示可用時的新狀態的狀況下,
                      要監視的頻率 (以秒計) 做業狀態。
STREAMS_CONFIGURATION 啓用流元數據的加載
TABLE_EXISTS_ACTION   導入對象已存在時執行的操做。
                      有效關鍵字: (SKIP), APPEND, REPLACE 和 TRUNCATE。
TABLES                標識要導入的表的列表。
TABLESPACES           標識要導入的表空間的列表。
TRANSFORM             要應用於適用對象的元數據轉換。
                      有效的轉換關鍵字: SEGMENT_ATTRIBUTES, STORAGE
                      OID 和 PCTSPACE。
TRANSPORT_DATAFILES   按可傳輸模式導入的數據文件的列表。
TRANSPORT_FULL_CHECK  驗證全部表的存儲段 (N)。
TRANSPORT_TABLESPACES 要從中加載元數據的表空間的列表。
                      僅在 NETWORK_LINK 模式導入操做中有效。
VERSION               要導出的對象的版本, 其中有效關鍵字爲:
                      (COMPATIBLE), LATEST 或任何有效的數據庫版本。
                      僅對 NETWORK_LINK 和 SQLFILE 有效。

下列命令在交互模式下有效。
注: 容許使用縮寫

命令               說明 (默認)
------------------------------------------------------------------------------
CONTINUE_CLIENT       返回到記錄模式。若是處於空閒狀態, 將從新啓動做業。
EXIT_CLIENT           退出客戶機會話並使做業處於運行狀態。
HELP                  總結交互命令。
KILL_JOB              分離和刪除做業。
PARALLEL              更改當前做業的活動 worker 的數目。
                      PARALLEL=<worker 的數目>。
START_JOB             啓動/恢復當前做業。
                      START_JOB=SKIP_CURRENT 在開始做業以前將跳過
                      做業中止時執行的任意操做。
STATUS                在默認值 (0) 將顯示可用時的新狀態的狀況下,
                      要監視的頻率 (以秒計) 做業狀態。
                      STATUS[=interval]
STOP_JOB              順序關閉執行的做業並退出客戶機。
                      STOP_JOB=IMMEDIATE 將當即關閉
                      數據泵做業。


6、實踐操做:

   1. 使用目錄:DATA_PUMP_DIR

[sql] view plaincopy

  1. SQL> select * from dba_directories;  

  2.   

  3. OWNER                          DIRECTORY_NAME  

  4. ------------------------------ ------------------------------  

  5. DIRECTORY_PATH  

  6. ----------------------------------------------------------------  

  7. SYS                            ADMIN_DIR  

  8. C:\ADE\aime_10.2_nt_push\oracle/md/admin  

  9.   

  10. SYS                            DATA_PUMP_DIR  

  11. E:\admin\orcl\dpdump\  

  12.   

  13. SYS                            WORK_DIR  

  14. C:\ADE\aime_10.2_nt_push\oracle/work  

  15. SQL> grant read, write on directory data_pump_dir to scott;  

  16.   

  17. 受權成功。  


   2.EXPDP用法舉例:

       

1)按用戶導

expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

2)並行進程parallel

expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

3)按表名導

expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

4)按查詢條件導

expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

5)按表空間導

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

6)導整個數據庫

expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

   3.IMPDP用法舉例:

         

1)導到指定用戶下

impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

2)改變表的owner

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

3)導入表空間

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

4)導入數據庫

impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

5)追加數據

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

 

  4. 案例:將數據庫A中HR用戶下全部對象導入到SCOTT用戶下:

     1)導出HR方案:

 

[sql] view plaincopy

  1. expdp system/admin@orcl schemas=hr dumpfile=hr.dmp DIRECTORY=data_pump_dir nologfle=y;  


    2)將hr.dmp導入SCOTT方案:

     

[sql] view plaincopy

  1. 啓動 "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** dumpfile=hr.dmp directory=data_pump_dir remap_schema=hr:scott   

  2. 處理對象類型 SCHEMA_EXPORT/USER  

  3. ORA-31684: 對象類型 USER:"SCOTT" 已存在  

  4. 處理對象類型 SCHEMA_EXPORT/SYSTEM_GRANT  

  5. 處理對象類型 SCHEMA_EXPORT/ROLE_GRANT  

  6. 處理對象類型 SCHEMA_EXPORT/DEFAULT_ROLE  

  7. 處理對象類型 SCHEMA_EXPORT/TABLESPACE_QUOTA  

  8. 處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA  

  9. 處理對象類型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE  

  10. 處理對象類型 SCHEMA_EXPORT/TABLE/TABLE  

  11. 處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA  

  12. . . 導入了 "SCOTT"."COUNTRIES"                         6.085 KB      25 行  

  13. . . 導入了 "SCOTT"."DEPARTMENTS"                       6.632 KB      27 行  

  14. . . 導入了 "SCOTT"."EMPLOYEES"                         15.76 KB     107 行  

  15. . . 導入了 "SCOTT"."JOBS"                              6.609 KB      19 行  

  16. . . 導入了 "SCOTT"."JOB_HISTORY"                       6.585 KB      10 行  

  17. . . 導入了 "SCOTT"."LOCATIONS"                         7.710 KB      23 行  

  18. . . 導入了 "SCOTT"."REGIONS"                           5.289 KB       4 行  

  19. 處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/INDEX  

  20. 處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT  

  21. 處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS  

  22. 處理對象類型 SCHEMA_EXPORT/TABLE/COMMENT  

  23. 處理對象類型 SCHEMA_EXPORT/PROCEDURE/PROCEDURE  

  24. 處理對象類型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE  

  25. 處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT  

  26. 處理對象類型 SCHEMA_EXPORT/TABLE/TRIGGER  

  27. 處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS  

  28. 做業 "SYSTEM"."SYS_IMPORT_FULL_01" 已經完成, 可是有 1 個錯誤 (於 15:32:01 完成)  


     3)效果就是HR下面的對象都複製到了SCOTT用戶下:

    

[sql] view plaincopy

  1. SQL> select * from scott.employees where rownum<10;  

  2.   

  3. EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL  

  4. ----------- -------------------- ------------------------- ------------------  

  5.         100 Steven               King                      SKING  

  6.         101 Neena                Kochhar                   NKOCHHAR  

  7.         102 Lex                  De Haan                   LDEHAAN  

  8.         103 Alexander            Hunold                    AHUNOLD  

  9.         104 Bruce                Ernst                     BERNST  

  10.         105 David                Austin                    DAUSTIN  

  11.         106 Valli                Pataballa                 VPATABAL  

  12.         107 Diana                Lorentz                   DLORENTZ  

  13.         108 Nancy                Greenberg                 NGREENBE  

  14.   

  15. 已選擇9行。  

相關文章
相關標籤/搜索