使用expdp導出數據

http://blog.sina.com.cn/s/blog_62f8bf9b0100w9ux.html



Data Pump是服務端工具,只能在服務器上使用。這與exp工具不同。

 

Data Pump有以下些優點:

1.PARALLEL 並行

2.START_JOB 可控制job進行import作業

3.ATTACH

4.NETWORK_LINK 可以直接通過網絡dblink導入到備庫

5.REMAP_DATAFILE 轉換數據文件的名字

6.REMAP_TABLESPACE  轉換數據所在表空間的名字

7.INCLUDE and EXCLUDE 過濾要導入或不導入的數據

8.可使用交互命令監控expdp和impdp作業過程

9.ESTIMATE_ONLY 空間的估計而不實際導出數據

10.VERSION data pump的版本可兼容的

 

用戶需要有EXP_FULL_DATABASE或IMP_FULL_DATABASE權限

 

 

使用expdp進行導出:

5種模式:

全庫模式(full export)

用戶模式(schema)

表模式(table)

表空間模式(tablespace)

傳輸表空間模式(transportable tablespace)

 

網絡需要考慮的(Network Considerations)

1.通過@tnsnames連接字符串導出遠程的數據庫,directory使用源數據庫創建的,生成的文件存放在服務端。

expdp hr/hr@inst1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees

2.通過database link導出遠程的數據庫到本地(創建directory及授權,然後expdp)

 

導出操作中的過濾選項:

數據過濾:

QUERY 和SAMPLE

元數據(對象定義等)過濾:

EXCLUDE 和INCLUDE

 

1、創建DIRECTORY

create directory dir_dp as '/oradata/expdp';

2、授權

Grant read,write on directory dir_dp to yeyj;

 

參數:

ATTACH

重新登錄到後臺進行的job操作。

如果使用ATTACH選項,在命令行除了連接字符串和ATTACH選項外,不能指定任何其他選項,示例如下:

Expdp hr/hr ATTACH=hr.export_job

例:

impdp ggs/ggs@oramview network_link=oracl schemas=HZ logfile=imp_tmp1.log

退出界面後可以重新登錄進去

SQL> select job_name from DBA_DATAPUMP_JOBS;

JOB_NAME

------------------------------

SYS_IMPORT_SCHEMA_01

impdp ggs/ggs attach=SYS_IMPORT_SCHEMA_01

 

COMPRESSION

Default: METADATA_ONLY

可選:METADATA_ONLY /  NONE

導出的時候會對元數據進行壓縮

 

CONTENT

Default: ALL

可選:CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

ALL:將導出對象定義及其所有數據

DATA_ONLY:只導出對象數據

METADATA_ONLY:只導出對象定義  (相當於export裏的ROWS=N)

 

DIRECTORY

Default: DATA_PUMP_DIR

指定轉儲文件和日誌文件所在的目錄,目錄對象是使用CREATE DIRECTORY語句建立的對象

建立目錄:

CREATE DIRECTORY dump as '/home/oracle/expdp/';

查詢創建了那些子目錄:

SELECT * FROM dba_directories;

 

DUMPFILE

用於指定轉儲文件的名稱,默認名稱爲expdat.dmp

DUMPFILE=[directory_object:]file_name [, ...]

Directory_object用於指定目錄對象名,file_name用於指定轉儲文件名。

需要注意,如果不指定directory_object,導出工具會自動使用DIRECTORY選項指定的目錄對象

如果指定[directory_object:],會以該DIRECTORY位置爲準。

expdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=dpump_dir2:exp1.dmp,exp2%U.dmp PARALLEL=3(dmp文件會放在dpump_dir2目錄下)

 

ENCRYPTION_PASSWORD

Default: none

ENCRYPTION_PASSWORD = password

給導出的dmp文件中的行數據加密

 

ESTIMATE

Default: BLOCKS

ESTIMATE={BLOCKS | STATISTICS}

指定估算被導出表所佔用磁盤空間的方法(bytes)

設置爲BLOCKS時,oracle會按照目標對象所佔用的數據塊個數乘以數據塊尺寸估算對象佔用的空間,

設置爲STATISTICS時,根據最近統計值估算對象佔用空間

限制:當數據庫包含壓縮表時,ESTIMATE=BLOCKS得出的結果會不準確,此時建議使用ESTIMATE=STATISTICS

 

ESTIMATE_ONLY

Default: n

ESTIMATE_ONLY={y | n}

指定是否只估算導出作業所佔用的磁盤空間

expdp hr/hr ESTIMATE_ONLY=y NOLOGFILE=y

 

EXCLUDE

Default: none

指定執行操作時釋放要排除對象類型或相關對象

EXCLUDE=object_type[:name_clause] [, ...]

object_type用於指定要排除的對象類型

name_clause用於指定要排除的具體對象

舉例:EXCLUDE=INDEX:"LIKE 'EMP%'"   排除所有的以emp開頭的索引

可指定多個EXCLUDE語句,參考include

EXCLUDE和INCLUDE不能同時使用

 

FILESIZE

Default: 0 (unlimited)

FILESIZE=integer[B | K | M | G]

指定導出文件的最大尺寸

限制:指定的最小的size需要是Data Pump block size的10倍,即:4K*10

 

FLASHBACK_SCN

Default: none

指定導出到特定SCN時刻的表數據

FLASHBACK_SCN=scn_value

當使用NETWORK_LINK,SCN來源於源數據庫

例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632

 

FLASHBACK_TIME

Default: none

指定導出到特定時間的表數據

FLASHBACK_TIME="TO_TIMESTAMP(time-value)"

FLASHBACK_TIME和FLASHBACK_SCN不能共用。

例:

expdp hr/hr PARFILE=flashback.par

flashback.par:

DIRECTORY=dpump_dir1

DUMPFILE=hr_time.dmp

FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"

 

FULL

Default: n

指定是否進行全庫導出

FULL={y | n}

需要有EXP_FULL_DATABASE權限

 

HELP

Default: N

HELP = {y | n}

顯示幫助信息

expdp HELP = y

 

INCLUDE

Default: none

指定導出時要包含的對象類型及相關對象

object_type[:name_clause] [, ...]

參數可查詢DATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTS, 和 TABLE_EXPORT_OBJECTS

sys下的對象不會被導出。

例:

hr.par:

SCHEMAS=HR

DUMPFILE=expinclude.dmp

DIRECTORY=dpump_dir1

LOGFILE=expinclude.log

INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')"

INCLUDE=PROCEDURE

INCLUDE=INDEX:"LIKE 'EMP%'"

expdp hr/hr INCLUDE=TABLE DUMPFILE=dpump_dir1:exp_inc.dmp NOLOGFILE=y

 

JOB_NAME

Default: system-generated name of the form SYS_EXPORT_<mode>_NN  (SYS_XXX)

指定要導出作用的名稱

JOB_NAME=jobname_string

可以通過DBA_DATAPUMP_JOBS視圖來查看expdp的job_name,用於expdp的attach參數

 

LOGFILE

Default: export.log

指定導出日誌文件文件的名稱

LOGFILE=[directory_object:]file_name

只有當指定NOLOGFILE=y時,logfile纔不會被創建。

例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp LOGFILE=hr_export.log

 

NETWORK_LINK

Default: none

指定數據庫鏈名,如果要將遠程數據庫對象導出到本地例程的轉儲文件中,必須設置該選項

NETWORK_LINK=source_database_link

從dblink連接到遠程數據庫進行操作dba_db_links

create database link test connect to ad1 identified by ad1 using 'yeyj11g';

例:

expdp hr/hr DIRECTORY=dpump_dir1 NETWORK_LINK=source_database_link

  DUMPFILE=network_export.dmp LOGFILE=network_export.log

 

NOLOGFILE

Default: n

指定是否記錄日誌(禁止生成導出日誌文件),默認爲記錄,即:NOLOGFILE=n

NOLOGFILE={y | n}

 

PARALLEL

Default: 1

指定執行導出操作的並行進程個數,默認值爲1,必須小於或等於dump文件個數

例如:

expdp hr/hr DIRECTORY=dpump_dir1 LOGFILE=parallel_export.log

JOB_NAME=par4_job DUMPFILE=par_exp%u.dmp PARALLEL=4

 

PARFILE

Default: none

指定導出參數文件的名稱

PARFILE=[directory_path]file_name

例如hr.par內容:

SCHEMAS=HR

DUMPFILE=exp.dmp

DIRECTORY=dpump_dir1

LOGFILE=exp.log

 

QUERY

Default: none

指定過濾導出數據的where條件

QUERY = [schema.][table_name:] query_clause

例:QUERY=employees:'"WHERE department_id > 10 AND salary > 10000"'

不得與以下子句同時使用:

CONTENT=METADATA_ONLY

ESTIMATE_ONLY

TRANSPORT_TABLESPACES

 

SAMPLE

Default: None

SAMPLE=[[schema_name.]table_name:]sample_percent

例:SAMPLE="HR"."EMPLOYEES":50

指50%的表HR.EMPLOYEES會被導出。

expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=sample.dmp SAMPLE=70

 

SCHEMAS

Default: current user's schema

用於指定執行方案模式導出,默認爲當前用戶方案

SCHEMAS=schema_name [, ...]

例:

expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe

 

STATUS

Default: 0

指定顯示導出作用進程的詳細狀態,默認值爲0

例:

expdp hr/hr DIRECTORY=dpump_dir1 SCHEMAS=hr,sh STATUS=300

expdp會每隔300秒界面上顯示導出的狀態。

 

TABLES

Default: none

指定表模式導出

TABLES=[schema_name.]table_name[:partition_name] [, ...]

Schema_name用於指定方案名,table_name用於指定導出的表名,partition_name用於指定要導出的分區名.

限制:

分區表(table partitions)不支持使用NETWORK_LINK進行導出

 

TABLESPACES

Default: none

指定要導出表空間列表

TABLESPACES=tablespace_name [, ...]

例:

expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tbs.dmp TABLESPACES=tbs_4, tbs_5, tbs_6

 

TRANSPORT_FULL_CHECK

Default: n

該選項用於指定被傳輸表空間和未傳輸表空間關聯關係的檢查方式,默認爲N.

當設置爲Y時,導出作用會檢查表空間直接的完整關聯關係,如果表空間所在表空間或其索引所在的表空間只有一個表空間被搬移,將顯示錯誤信息.當設置爲N時, 導出作用只檢查單端依賴,如果搬移索引所在表空間,但未搬移表所在表空間,將顯示出錯信息,如果搬移表所在表空間,未搬移索引所在表空間,則不會顯示錯誤信息

TRANSPORT_FULL_CHECK={y | n}

 

TRANSPORT_TABLESPACES

Default: none

指定表空間模式導出元數據

限制:導出job不能停止後再運行;併發(parallelism)只能爲1

例:expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tts.dmp TRANSPORT_TABLESPACES=tbs_1 TRANSPORT_FULL_CHECK=y LOGFILE=tts.log

 

VERSION

Default: COMPATIBLE

被導出對象的數據庫版本,默認值爲COMPATIBLE

VERSION={COMPATIBLE | LATEST | version_string}

爲COMPATIBLE時,會根據初始化參數COMPATIBLE生成對象元數據;爲LATEST時,會根據數據庫的實際版本生成對象元數據.version_string用於指定數據庫版本字符串

 

========================================================================================================

expdp和export工具相比除了速度上有了大幅度的提高外還有個更大的好處是交互式界面,可以更爲自由方便

交互式界面

1.從連接界面Ctrl+C

2.使用ATTACH子句連接進入job

交互式命令:

ADD_FILE

ADD_FILE=[directory_object]file_name [,...]

文件名可以包括替代變量%U

根據FILESIZE來自動控制

Export> ADD_FILE=hr2.dmp, dpump_dir2:hr3.dmp

 

CONTINUE_CLIENT

從交互式界面進入到登錄模式

Export> CONTINUE_CLIENT

 

EXIT_CLIENT

離開當前交互式界面。對expdp狀態可以從log日誌或者查詢USER_DATAPUMP_JOBS或V$SESSION_LONGOPS視圖

 

FILESIZE

FILESIZE=number

參見expdp命令FILESIZE

 

HELP

交互式界面的幫助信息

 

KILL_JOB

會殺死當前的job,同時離開expdp界面。job不能再重新開始,dmp文件會被自動刪除,但log日誌仍保留

 

PARALLEL

參見expdp命令PARALLEL

 

START_JOB

開始當前attach連接的job,一般在stop_job後使用

 

STOP_JOB

STOP_JOB[=IMMEDIATE]

 

STATUS

STATUS[=integer]

參見expdp命令STATUS

 

expdp導出的流程圖解

exp初始(ExpInit)

使用expdp導出數據
exp開始步驟(ExpStart)

使用expdp導出數據
exp導出模式設定(ExpModes)

使用expdp導出數據
exp導出選項(ExpOpts)

使用expdp導出數據
exp導出文件相關的選項(ExpFileOpts)
使用expdp導出數據
exp交互式界面的相關選項(CTRL+C)(ExpDynOpts)
使用expdp導出數據


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章