天天看點

Oracle使用EXPDP和IMPDP資料泵進行導出導入方法

來源:Linux社群 作者:promise-x

一、expdp/impdp和exp/imp的差別

1、exp和imp是用戶端工具程式,它們既可以在用戶端使用,也可以在服務端使用。

2、expdp和impdp是服務端的工具程式,他們隻能在Oracle服務端使用,不能在用戶端使用。

3、imp隻适用于exp導出的檔案,不适用于expdp導出檔案;impdp隻适用于expdp導出的檔案,而不适用于exp導出檔案。

4、對于10g以上的伺服器,使用exp通常不能導出0行資料的空表,而此時必須使用expdp導出。

二、expdp導出步驟

(1)建立邏輯目錄:

第一步:在伺服器上建立真實的目錄;(注意:第三步建立邏輯目錄的指令不會在OS上建立真正的目錄,是以要先在伺服器上建立真實的目錄。如下圖:)

第二步:用sys管理者登入sqlplus;

[email protected]:/home/oracle/dmp/vechcore>sqlplus

SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 5 09:20:49 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter user-name: sys as sysdba
Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>
           

第三步:建立邏輯目錄;

SQL> create directory data_dir as '/home/oracle/dmp/user';

Directory created.
           

第四步:檢視管理者目錄,檢查是否存在;

SQL> select * from dba_directories;

OWNER                          DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
SYS                            DATA_DIR
/home/oracle/dmp/user
           

第五步:用sys管理者給你的指定使用者賦予在該目錄的操作權限。

SQL> grant read,write on directory data_dir to user;

Grant succeeded.
           

(2)用expdp導出dmp,有五種導出方式:

第一種:“full=y”,全量導出資料庫;

expdp user/[email protected] dumpfile=expdp.dmp directory=data_dir full=y logfile=expdp.log;
           

第二種:schemas按使用者導出;

expdp user/[email protected] schemas=user dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
           

第三種:按表空間導出;

expdp sys/[email protected] tablespace=tbs1,tbs2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
           

第四種:導出表;

expdp user/[email protected] tables=table1,table2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
           

第五種:按查詢條件導;

expdp user/[email protected] tables=table1='where number=1234' dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
           

三、impdp導入步驟

(1)如果不是同一台伺服器,需要先将上面的dmp檔案下載下傳到目标伺服器上,具體指令參照:http://www.cnblogs.com/promise-x/p/7452972.html

(2)參照“expdp導出步驟”裡的前三步,建立邏輯目錄;

(3)用impdp指令導入,對應五種方式:

第一種:“full=y”,全量導入資料庫;

impdp user/passwd directory=data_dir dumpfile=expdp.dmp full=y;
           

第二種:同名使用者導入,從使用者A導入到使用者A;

impdp A/passwd schemas=A directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
           

第三種:①從A使用者中把表table1和table2導入到B使用者中;

impdp B/passwdtables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
           

②将表空間TBS01、TBS02、TBS03導入到表空間A_TBS,将使用者B的資料導入到A,并生成新的oid防止沖突;

impdp A/passwdremap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n 
directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
           

第四種:導入表空間;

impdp sys/passwd tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
           

第五種:追加資料;

impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log; 
--table_exists_action:導入對象已存在時執行的操作。有效關鍵字:SKIP,APPEND,REPLACE和TRUNCATE
           

四、expdp關鍵字與指令

(1)關鍵字             說明 (預設)

 ATTACH               連接配接到現有作業, 例如 ATTACH [=作業名]。

 COMPRESSION             減小轉儲檔案内容的大小, 其中有效關鍵字  值為: ALL, (METADATA_ONLY), DATA_ONLY 和 NONE。

 CONTENT                指定要解除安裝的資料, 其中有效關鍵字  值為: (ALL), DATA_ONLY 和 METADATA_ONLY。

 DATA_OPTIONS              資料層标記, 其中唯一有效的值為: 使用CLOB格式的 XML_CLOBS-write XML 資料類型。

 DIRECTORY              供轉儲檔案和日志檔案使用的目錄對象,即邏輯目錄。

 DUMPFILE              目标轉儲檔案 (expdp.dmp) 的清單,例如 DUMPFILE=expdp1.dmp, expdp2.dmp。

 ENCRYPTION              加密部分或全部轉儲檔案, 其中有效關鍵字值為: ALL, DATA_ONLY, METADATA_ONLY,ENCRYPTED_COLUMNS_ONLY 或 NONE。

 ENCRYPTION_ALGORITHM      指定應如何完成加密, 其中有效關鍵字值為: (AES128), AES192 和 AES256。

 ENCRYPTION_MODE         生成加密密鑰的方法, 其中有效關鍵字值為: DUAL, PASSWORD 和 (TRANSPARENT)。

 ENCRYPTION_PASSWORD      用于建立加密列資料的密碼關鍵字。

 ESTIMATE              計算作業估計值, 其中有效關鍵字值為: (BLOCKS) 和 STATISTICS。

 ESTIMATE_ONLY             在不執行導出的情況下計算作業估計值。

 EXCLUDE               排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。例:EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] 。

 FILESIZE                以位元組為機關指定每個轉儲檔案的大小。

 FLASHBACK_SCN           用于将會話快照設定回以前狀态的 SCN。 -- 指定導出特定SCN時刻的表資料。

 FLASHBACK_TIME          用于擷取最接近指定時間的 SCN 的時間。-- 定導出特定時間點的表資料,注意FLASHBACK_SCN和FLASHBACK_TIME不能同時使用。

 FULL                  導出整個資料庫 (N)。  

 HELP                 顯示幫助消息 (N)。

 INCLUDE                包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。

 JOB_NAME               要建立的導出作業的名稱。

 LOGFILE                日志檔案名 (export.log)。

 NETWORK_LINK            連結到源系統的遠端資料庫的名稱。

 NOLOGFILE             不寫入日志檔案 (N)。

 PARALLEL               更改目前作業的活動 worker 的數目。

 PARFILE                指定參數檔案。

 QUERY                用于導出表的子集的謂詞子句。--QUERY = [schema.][table_name:] query_clause。

 REMAP_DATA              指定資料轉換函數,例如 REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。

 REUSE_DUMPFILES         覆寫目标轉儲檔案 (如果檔案存在) (N)。

 SAMPLE                要導出的資料的百分比。

 SCHEMAS               要導出的方案的清單 (登入方案)。  

 STATUS                在預設值 (0) 将顯示可用時的新狀态的情況下,要監視的頻率 (以秒計) 作業狀态。  

 TABLES                辨別要導出的表的清單 - 隻有一個方案。--[schema_name.]table_name[:partition_name][,…]

 TABLESPACES            辨別要導出的表空間的清單。

 TRANSPORTABLE           指定是否可以使用可傳輸方法, 其中有效關鍵字值為: ALWAYS, (NEVER)。

 TRANSPORT_FULL_CHECK      驗證所有表的存儲段 (N)。 

 TRANSPORT_TABLESPACES      要從中解除安裝中繼資料的表空間的清單。

 VERSION              要導出的對象的版本, 其中有效關鍵字為:(COMPATIBLE), LATEST 或任何有效的資料庫版本。

(2)指令            說明

 ADD_FILE             向轉儲檔案集中添加轉儲檔案。

 CONTINUE_CLIENT         傳回到記錄模式。如果處于空閑狀态, 将重新啟動作業。

 EXIT_CLIENT            退出客戶機會話并使作業處于運作狀态。

 FILESIZE              後續 ADD_FILE 指令的預設檔案大小 (位元組)。

 HELP               總結互動指令。

 KILL_JOB             分離和删除作業。

 PARALLEL               更改目前作業的活動 worker 的數目。PARALLEL=<worker 的數目>。

 _DUMPFILES             覆寫目标轉儲檔案 (如果檔案存在) (N)。

 START_JOB             啟動/恢複目前作業。

 STATUS                在預設值 (0) 将顯示可用時的新狀态的情況下,要監視的頻率 (以秒計) 作業狀态。STATUS[=interval]。

 STOP_JOB              順序關閉執行的作業并退出客戶機。STOP_JOB=IMMEDIATE 将立即關閉資料泵作業。
           

五、impdp關鍵字與指令

(1)關鍵字            說明 (預設)

ATTACH               連接配接到現有作業, 例如 ATTACH [=作業名]。

CONTENT                指定要解除安裝的資料, 其中有效關鍵字  值為: (ALL), DATA_ONLY 和 METADATA_ONLY。

DATA_OPTIONS              資料層标記,其中唯一有效的值為:SKIP_CONSTRAINT_ERRORS-限制條件錯誤不嚴重。

DIRECTORY             供轉儲檔案,日志檔案和sql檔案使用的目錄對象,即邏輯目錄。

DUMPFILE              要從(expdp.dmp)中導入的轉儲檔案的清單,例如 DUMPFILE=expdp1.dmp, expdp2.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                指定參數檔案。

 PARTITION_OPTIONS         指定應如何轉換分區,其中有效關鍵字為:DEPARTITION,MERGE和(NONE)。

 QUERY               用于導入表的子集的謂詞子句。

 REMAP_DATA            指定資料轉換函數,例如REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。

 REMAP_DATAFILE          在所有DDL語句中重新定義資料檔案引用。

 REMAP_SCHEMA           将一個方案中的對象加載到另一個方案。

 REMAP_TABLE             表名重新映射到另一個表,例如 REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。

 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。

 TRANSPORTABLE           用于選擇可傳輸資料移動的選項。有效關鍵字為: ALWAYS 和 (NEVER)。僅在 NETWORK_LINK 模式導入操作中有效。

 TRANSPORT_DATAFILES       按可傳輸模式導入的資料檔案的清單。

 TRANSPORT_FULL_CHECK     驗證所有表的��儲段 (N)。

 TRANSPORT_TABLESPACES     要從中加載中繼資料的表空間的清單。僅在 NETWORK_LINK 模式導入操作中有效。

  VERSION               要導出的對象的版本, 其中有效關鍵字為:(COMPATIBLE), LATEST 或任何有效的資料庫版本。僅對 NETWORK_LINK 和 SQLFILE 有效。

(2)指令            說明

 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 将立即關閉資料泵作業。 
           

更多Oracle相關資訊見Oracle 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新連結位址:http://www.linuxidc.com/Linux/2017-09/146764.htm

linux

繼續閱讀