1. 程式人生 > >【Oracle】匯入和匯出 EXP / IMP 和 EXPDP / IMPDP 資料泵匯出匯入的方法

【Oracle】匯入和匯出 EXP / IMP 和 EXPDP / IMPDP 資料泵匯出匯入的方法

 

【Oracle】EXPDP和IMPDP資料泵進行匯出匯入的方法

一、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/passwd remap_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

https://www.cnblogs.com/promise-x/p/7477360.html

 

 

 

Oracle匯入和匯出exp/imp/expdp/impdp

2017年03月30日 16:39:06 chichuduxing 閱讀數:3581

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chichuduxing/article/details/68489687

匯出

exp

將資料庫完全匯出,使用者名稱system 密碼manager 匯出到exp_export.dmp中

exp system/[email protected]:1521/ora11g file=exp_export.dmp full=y log=exp_export.log

 

將資料庫中system使用者與sys使用者的表匯出

exp system/[email protected]:1521/ora11g file=exp_export.dmp owner=(system,sys) log=exp_export.log

 

將資料庫中的表inner_notify、notify_staff_relat匯出

exp aichannel/[email protected]:1521/ora11g file=exp_export.dmp tables=inner_notify,notify_staff_relat log=exp_export.log

 

將資料庫中的表table1中的欄位filed1以"00"打頭的資料匯出

exp system/[email protected]:1521/ora11g file=exp_export.dmp tables=(table1) query=\" where filed1 like '00%'\" log=exp_export.log

 

匯出密碼帶有特殊字元的,密碼雙引號,連線串單引號

exp 'testuser/"test/15/!&/57"@localhost:1521/ora11g'  tables=inner_notify file=exp_export.dmp log=exp_export.log

 

在上面命令後面 加上 compress=y  就可以對匯出的檔案進行壓縮了

 

 

其他

Oracle 11G在用EXP匯出時,空表不能匯出,出現“EXP-00003”錯誤,再用IMP匯入時就會出現“IMP-00003”和“ORA-00942: 表或檢視不存在”等錯誤,這是英文Oracle 11g 新增了一個引數“deferred_segment_creation”,含義是段延遲建立,預設是true。如果這個引數設定為true,你新建了一個表T1,並且沒有向其中插入資料,那麼這個表不會立即分配extent,也就是不佔資料空間,只有當你insert資料後才分配空間。

expdp

建立邏輯目錄

create directory DUMP_DIR as '/oracle/DUMP_DIR';

 

在伺服器上建立該目錄,因為Oracle並不會自動建立,如果目錄不存在匯出會報錯

mkdir -p /oracle/DUMP_DIR

 

給使用者授予在該目睹讀取的許可權

grant read,write on directory DUMP_DIR to scott;

 

按使用者導

expdp scott/[email protected]:1521/ora11g schemas=scott dumpfile=expdp_export.dmp DIRECTORY=DUMP_DIR;

 

並行程序parallel

expdp scott/[email protected]:1521/ora11g directory=DUMP_DIR dumpfile=expdp_export.dmp parallel=40 job_name=expdp40

 

按表名導

expdp scott/[email protected]:1521/ora11g TABLES=emp,dept dumpfile=expdp_export.dmp DIRECTORY=DUMP_DIR;

 

按查詢條件導

expdp scott/[email protected]:1521/ora11g directory=DUMP_DIR dumpfile=expdp_export.dmp tables=emp query='WHERE deptno=20';

 

按表空間導

expdp system/manager DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp TABLESPACES=temp,example;

 

導整個資料庫

expdp system/manager DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp FULL=y;

 

 

匯入

imp

將exp_export.dmp 中的資料匯入 TEST資料庫中。

imp system/[email protected]:1521/ora11g file=exp_export.dmp



上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
在後面加上 ignore=y 就可以了,但是這樣匯入的資料可能會出現重複現象

imp system/[email protected]:1521/ora11g full=y file=exp_export.dmp ignore=y

 

將exp_export.dmp 中的表table1,table2匯入

imp system/[email protected]:1521/ora11g file=將exp_export.dmp tables=table1,table2

 

 

 

impdp

導到指定使用者下

impdp scott/tiger DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp SCHEMAS=scott;

 

改變表的owner

impdp system/manager DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

 

匯入表空間

impdp system/manager DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp TABLESPACES=example;

 

匯入資料庫

impdb system/manager DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp FULL=y;

 

追加資料

impdp system/manager DIRECTORY=DUMP_DIR DUMPFILE=expdp_export.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append

 

使用impdp完成資料庫匯入時,若表已經存在,有四種的處理方式:

1)  skip:預設操作
2)  replace:先drop表,然後建立表,最後插入資料
3)  append:在原來資料的基礎上增加資料
4)  truncate:先truncate,然後再插入資料

 

總結

EXP和IMP是客戶端工具程式,它們既可以在客戶端使用,也可以在服務端使用。
EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在客戶端使用。
IMP只適用於EXP匯出的檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出的檔案,而不適用於EXP匯出檔案。

EXP不能匯出分割槽表,而EXPDP可以

https://blog.csdn.net/chichuduxing/article/details/68489687