【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)創建導出邏輯目錄

  用sys管理員登錄sqlplus

復制代碼
 

[oracle@shdb02 ~]$ export ORACLE_SID=fp2
[oracle@shdb02 ~]$ echo $ORACLE_SID
 fp2

[oracle@shdb02 ~]$ sqlplus

 SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 19 21:53:42 2022

 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, Real Application Clusters, Automatic Storage Management, OLAP,
 Data Mining and Real Application Testing options

 SQL>

 如果提示:Connected to an idle instance. //這個就是錯誤的信息。

 創建導出邏輯目錄;

SQL> create directory data_dir as '/home/oracle/expdir'; 
Directory created.

創建對應的實際導出目錄

[oracle@shdb02 expdir]$ mkdir -p /home/oracle/expdir

 查看邏輯目錄;

SQL> select * from dba_directories;

OWNER  DIRECTORY_NAME         DIRECTORY_PATH
SYS    EXPDIR              /home/oracle/expdir/
SYS    OUTDIR            /home/oracle/expdir2/
//你可以按照需求創建不同的目錄放置不用內容。

 用sys管理員給你的指定用戶(例如sh)賦予在該目錄的操作權限。

SQL> grant read,write on directory EXPDIR to sh;

Grant succeeded.

 

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

 第一種:全量導出數據庫;

//這里注意user/passwd 連接方式,請看我的 https://www.cnblogs.com/aozhejin/p/16032959.html  還是有點說道的

expdp user/passwd dumpfile=導出的名字.dmp directory=EXPDIR full=y logfile=導出過程記錄.log;  //expdp.log是記錄導出過程的日志

 第二種:schemas按用戶導出;

expdp username/passwd schemas=user dumpfile=expdp.dmp directory=EXPDIR logfile=expdp.log;  //EXPDIR就是我們上面創建邏輯目錄

 第三種:按表空間導出;

//MALL就是我要導出的表空間
[oracle@shdb02 expdir]$ expdp sh/shdbukin tablespaces=MALL dumpfile=MALL.dmp directory=EXPDIR logfile=mallexport.log; Export: Release 11.2.0.4.0 - Production on Sat Mar 19 22:45:59 2022 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Starting "SH"."SYS_EXPORT_TABLESPACE_01": sh/******** dumpfile=MALL.dmp tablespaceS=MALL directory=EXPDIR logfile=mallexport.log Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 3.192 GB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/COMMENT Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Processing object type TABLE_EXPORT/TABLE/TRIGGER Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "MALL"."DS_ER" 1.390 GB 11901211 rows . . exported "MALL"."DS_DS" 1.259 GB 4536553 rows . . exported "MALL"."ES_DS" 40.28 KB 9 rows . . exported "MALL"."DS_DS_HIS1124" 4.386 MB 15055 rows . . exported "MALL"."CHEMA_01" 3.807 MB 2560 rows .....

 第四種:導出多個表;

expdp user/passwd tables=table1,table2 dumpfile=expdp.dmp directory=EXPDIR logfile=expdp.log;

 第五種:按查詢條件導出數據;

expdp user/passwd tables=table1='where number=1' dumpfile=expdp.dmp directory=EXPDIR logfile=expdp.log;


三、impdp導入步驟

  前提是驗證 在sqlplus 環境里面執行  conn username/password 是否能正常在數據庫登錄,否則impdp命令會出錯。 

(1)如果導入導出不是同一台服務器,需要先將導出的dmp文件傳到目標服務器上的導入目錄內 

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

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

 第一種:全量導入數據庫;

impdp user/passwd directory=IMPDIR dumpfile=expdp.dmp full=y;  //expdp.dmp是利用expdp導出的dmp文件

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

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

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

impdp B/passwd tables=A.table1,A.table2 remap_schema=A:B directory=IMPDIR dumpfile=expdp.dmp logfile=impdp.log;

 ②將表空間A01、A02、A03導入到表空間E,將用戶B的數據導入到A,並生成新的oid防止沖突;

impdp A/passwd remap_tablespace=A01:E,A02:E,A03:E remap_schema=B:A FULL=Y transform=oid:n 
directory=IMPDIR dumpfile=expdp.dmp logfile=impdp.log  //expdp.dmp是導入文件.

 第四種:導入表空間;

impdp username/passwd tablespaces=sh directory=IMPDIR dumpfile=之前導出的.dmp logfile=過程記錄.log;

 第五種:追加數據;

impdp username/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log; 

 table_exists_action:導入對象已存在時執行的操作
 skip     是如果已存在表,則跳過並處理下一個對象;
 append   是為表增加數據;
 truncate 是截斷表,然后為其增加新數據;
 replace  是刪除已存在表,重新建表並追加數據;

 實際語句舉例:

在oracle用戶下執行

oracle@prod:/home/oracle$impdp sh/sh12 remap_schema=shfp:sh2 table_exists_action=replace remap_tablespace=SH:SH directory=IMPDIR dumpfile=SH.dmp logfile=implog.log

......
...... 
//可以中斷顯示 ctrl+c ,但是job不等於執行完畢。

Import> status  //查看狀態

Job: SYS_IMPORT_FULL_02
Operation: IMPORT
Mode: FULL
State: EXECUTING
Bytes Processed: 19,044,467,760
Percent Done: 99
Current Parallelism: 1
Job Error Count: 0
Dump File: /home/oracle/impdir/SHFP.dmp

Worker 1 Status:
Process Name: DW00
State: EXECUTING
Object Schema: SHFPFPMAI
Object Name: ADD_ADMINISTRATOR
Object Type: SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Worker Parallelism: 1


Import> stop_job  //停止job運行
Are you sure you wish to stop this job ([yes]/no): yes

 

四、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 將立即關閉數據泵作業。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM