Oracle10g 資料泵匯出命令 expdp 使用總結

eric0435發表於2011-10-26
 expdp使用

使用EXPDP工具時,其轉儲檔案只能被存放在DIRECTORY物件對應的OS目錄中,而不能直接指定轉儲檔案所在的OS目錄.因此使用EXPDP工具時,必須首先建立DIRECTORY物件.並且需要為資料庫使用者授予使用DIRECTORY物件許可權.

首先得建DIRECTORY:
SQL> conn /as sysdba
SQL> CREATE OR REPLACE DIRECTORY dir_dump  AS '/u01/backup/';
SQL> GRANT read,write ON DIRECTORY dir_dump TO public;

1) 匯出scott整個schema
--預設匯出登陸賬號的schema
$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott_full.dmp
    LOGFILE=scott_full.log
--其他賬號登陸, 在引數中指定schemas
$ expdp system/oracle@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott_full.dmp
    LOGFILE=scott_full.log
    SCHEMAS=SCOTT

2) 匯出scott下的dept,emp表
$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott.dmp
    LOGFILE=scott.log
    TABLES=DEPT,EMP

3) 匯出scott下除emp之外的表
$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott.dmp
    LOGFILE=scott.log
    EXCLUDE=TABLE:"='EMP'"

4) 匯出scott下的儲存過程
$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott.dmp
    LOGFILE=scott.log
    INCLUDE=PROCEDURE

5) 匯出scott下以'E'開頭的表
$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott.dmp
    LOGFILE=scott.log
    INCLUDE=TABLE:"LIKE 'E%'"   //可以改成NOT LIKE,就匯出不以E開頭的表

6) 帶QUERY匯出
$ expdp scott/tiger@db_esuite parfile=/orahome/expdp.par
expdp.par內容:
    DIRECTORY=dir_dump
    DUMPFILE=scott.dmp
    LOGFILE=scott.log
    TABLES=EMP,DEPT
    QUERY=EMP:"where empno>=8000"
    QUERY=DEPT:"where deptno>=10 and deptno<=40"
注: 處理這樣帶查詢的多表匯出, 如果多表之間有外健關聯, 可能需要注意查詢條件所篩選的資料是否符合這樣的外健約束, 比如 EMP中有一欄位是 deptno, 是關聯dept中的主鍵, 如果"where empno>=8000"中得出的deptno=50的話, 那麼, 你的dept的條件"where deptno>=10 and deptno<=40"就不包含deptno=50的資料, 那麼在匯入的時候就會出現錯誤.

 expdp選項


1. ATTACH
該選項用於在客戶會話與已存在匯出作用之間建立關聯.語法如下:
ATTACH=[schema_name.]job_name
schema_name用於指定方案名,job_name用於指定匯出作業名.注意,如果使用ATTACH選項,在命令列除了連線字串和ATTACH選項外,不能指定任何其他選項,示例如下:
expdp scott/tiger ATTACH=scott.export_job
2. CONTENT
該選項用於指定要匯出的內容.預設值為ALL.語法如下:
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
當設定CONTENT為ALL 時,將匯出物件定義及其所有資料; 為DATA_ONLY時,只匯出物件資料; 為METADATA_ONLY時,只匯出物件定義,示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump CONTENT=METADATA_ONLY
3. DIRECTORY
指定轉儲檔案和日誌檔案所在的目錄.語法如下:
DIRECTORY=directory_object
directory_object用於指定目錄物件名稱.需要注意,目錄物件是使用CREATE DIRECTORY語句建立的物件,而不是OS 目錄,示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump
建立目錄:
CREATE DIRECTORY dump as 'd:\dump';
查詢建立了那些子目錄:
SELECT * FROM dba_directories;
4. DUMPFILE
用於指定轉儲檔案的名稱,預設名稱為expdat.dmp.語法如下:
DUMPFILE=[directory_object:]file_name[,….]
directory_object用於指定目錄物件名,file_name用於指定轉儲檔名.需要注意,如果不指定directory_object,匯出工具會自動使用DIRECTORY選項指定的目錄物件,示例如下:
expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp
5. ESTIMATE
指定估算被匯出表所佔用磁碟空間的方法.預設值是BLOCKS.語法如下:
EXTIMATE={BLOCKS | STATISTICS}
設定為BLOCKS時,oracle會按照目標物件所佔用的資料塊個數乘以資料塊尺寸估算物件佔用的空間,設定為STATISTICS時,根據最近統計值估算物件佔用空間,示例如下:
expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump
一般情況下, 當用預設值(blocks)時, 日誌中估計的檔案大小會比實際expdp出來的檔案大, 用statistics時會跟實際大小差不多.
6. EXTIMATE_ONLY
指定是否只估算匯出作業所佔用的磁碟空間,預設值為N.語法如下:
EXTIMATE_ONLY={Y | N}
設定為Y時,匯出作用只估算物件所佔用的磁碟空間,而不會執行匯出作業,為N時,不僅估算物件所佔用的磁碟空間,還會執行匯出操作,示例如下:
expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y
7. EXCLUDE
該選項用於指定執行操作時要排除的物件型別或相關物件.語法如下:
EXCLUDE=object_type[:name_clause][,….]
object_type用於指定要排除的物件型別,name_clause用於指定要排除的具體物件.EXCLUDE和INCLUDE不能同時使用,示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW
在EXPDP的幫助檔案中, 可以看到存在EXCLUDE和INCLUDE引數, 這兩個引數文件中介紹的命令格式存在問題, 正確用法是:
EXCLUDE=OBJECT_TYPE[:name_clause][,...]
INCLUDE=OBJECT_TYPE[:name_clause][,...]
示例:
expdp   schema=scott exclude=sequence,table:"in('EMP','DEPT')"
impdp   schema=scott include=function,package,procedure,table:"='EMP'"
有了這些還不夠, 由於命令中包含了多個特殊字元, 在不同的作業系統下需要透過跳脫字元才能使上面的命令順利執行,
如:
EXCLUDE=TABLE:\"IN('BIGTALE')\"
8. FILESIZE
指定匯出檔案的最大尺寸,預設為0(表示檔案尺寸沒有限制).
9. FLASHBACK_SCN
指定匯出特定SCN時刻的表資料.語法如下:
FLASHBACK_SCN=scn_value
scn_value用於標識SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同時使用,示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523
10. FLASHBACK_TIME
指定匯出特定時間點的表資料.語法如下:
FLASHBACK_TIME="TO_TIMESTAMP(time_value)"
示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME="TO_TIMESTAMP('25-08-2004 14:35:00','DD-MM-YYYY HH24:MI:SS')"
11. FULL
指定資料庫模式匯出,預設為N.語法如下:
FULL={Y | N}
為Y時,標識執行資料庫匯出.
12. HELP
指定是否顯示EXPDP命令列選項的幫助資訊,預設為N. 當設定為Y時,會顯示匯出選項的幫助資訊,示例如下:
expdp help=y
13. INCLUDE
指定匯出時要包含的物件型別及相關物件.語法如下:
INCLUDE=object_type[:name_clause][,… ]
示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp INCLUDE=trigger

14. JOB_NAME
指定要匯出作用的名稱,預設為SYS_XXX.語法如下:
JOB_NAME=jobname_string
示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp INCLUDE=trigger JOB_NAME=exp_trigger
後面想臨時停止expdp任務時可以按Ctrl+C組合鍵,退 出當前互動模式,退出之後匯出操作不會停止,這不同於Oracle以前的EXP. 以前的EXP,如果退出互動式模式,就會出錯終止匯出任務. 在 Oracle10g中,由於EXPDP是資料庫內部定義的任務,已經與客戶端無關. 退出互動之後,會進入export的命令列模式,此時支援 status等檢視命令:
Export> status
如果想停止改任務,可以發出stop_job命令:
Export> stop_job
如果有命令列提示: "是否確實要停止此作業([Y]/N):" 或 "Are you sure you wish to stop this job ([yes]/no):", 回答應是yes或者no, 回答是YES以後會退出當前的export介面.
接下來可以透過命令列再次連線到這個任務:
expdp test/test@acf attach=expfull
透過start_job命令重新啟動匯出:
Export> start_job
Export> status
15. LOGFILE
指定匯出日誌檔案檔案的名稱,預設名稱為export.log.語法如下:
LOGFILE=[directory_object:]file_name
directory_object用於指定目錄物件名稱,file_name用於指定匯出日誌檔名.如果不指定directory_object.匯出作用會自動使用DIRECTORY的相應選項值,示例如下:
expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16. NETWORK_LINK
指定資料庫鏈名,如果要將遠端資料庫物件匯出到本地例程的轉儲檔案中,必須設定該選項.
expdp中使用連線字串和network_link的區別:
expdp屬於服務端工具,而exp屬於客戶端工具,expdp生成的檔案預設是存放在服務端的,而exp生成的檔案是存放在客戶端.
expdp username/password@connect_string //對於使用這種格式來說,directory使用源資料庫建立的,生成的檔案存放在服務端。
如何將生成的檔案放在目標資料庫而不放在源資料庫呢,在expdp中使用network_link. 比如在本機expdp遠端伺服器的資料庫,先在本機建立到服務端的dblink,然後建立directory及授權,然後expdp.
a) 建立到服務端的dblink
conn aa/aacc
create database link link_name connect to bb identified by password using 'connect_string';
b) 建立directory
conn / as sysdba
create or replace directory dir as 'directory';
grant read,write on directory dir to bb;
c) 透過network_link匯出
expdp aa/aacc directory=dir network_link=link_name ...
17. NOLOGFILE
該選項用於指定禁止生成匯出日誌檔案,預設值為N.
18. PARALLEL
指定執行匯出操作的並行程式個數,預設值為1
19. PARFILE
指定匯出引數檔案的名稱.語法如下:
PARFILE=[directory_path:]file_name
20. QUERY
用於指定過濾匯出資料的where條件.語法如下:
QUERY=[schema.][table_name:]query_clause
schema 用於指定方案名,table_name用於指定表名,query_clause用於指定條件限制子句.QUERY選項不能 與 CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等選項同時使用,示例如下:
expdp scott/tiger directory=dump dumpfiel=a.dmp Tables=emp query='WHERE deptno=20'
21. SCHEMAS
該方案用於指定執行方案模式匯出,預設為當前使用者方案.
22. STATUS
指定顯示匯出作用程式的詳細狀態,預設值為0.
23. TABLES
指定表模式匯出.語法如下:
TABLES=[schema_name.]table_name[:partition_name][,…]
schema_name用於指定方案名,table_name用於指定匯出的表名,partition_name用於指定要匯出的分割槽名.
24. TABLESPACES
指定要匯出表空間列表.
25. TRANSPORT_FULL_CHECK
該選項用於指定被搬移表空間和未搬移表空間關聯關係的檢查方式,預設為N.
當設定為Y時,匯出作用會檢查表空間直接的完整關聯關係,如果表所在表空間或其索引所在的表空間只有一個表空間被搬移,將顯示錯誤資訊.
當設定為N時,匯出作用只檢查單端依賴,如果搬移索引所在表空間,但未搬移表所在表空間,將顯示出錯資訊,如果搬移表所在表空間,未搬移索引所在表空間,則不會顯示錯誤資訊.
26. TRANSPORT_TABLESPACES
指定執行表空間模式匯出.
27. VERSION
指定被匯出物件的資料庫版本,預設值為COMPATIBLE.語法如下:
VERSION={COMPATIBLE | LATEST | version_string}
為COMPATIBLE時,會根據初始化引數COMPATIBLE生成物件後設資料;為LATEST時,會根據資料庫的實際版本生成物件後設資料.version_string用於指定資料庫版本字串.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-747046/,如需轉載,請註明出處,否則將追究法律責任。

相關文章