ORACLE數據庫 數據泵 核心參數全解析
ORACLE expdp 命令使用詳解
1.ATTACH=[schema_name.]job_name
Schema_name 用于指定方案名,job_name 用于指定導出作業名.注意,如果使用 ATTACH
選項,在命令行除了連接字符串和 ATTACH 選項外,不能指定任何其他選項,示例如下:
expdp hr/hr ATTACH=hr.export_job
2.CONTENT
該選項用于指定要導出的內容.默認值為 ALL CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
當設置 CONTENT
為 ALL 時,將導出對象定義及其所有數據.
為 DATA_ONLY 時,只導出對象數據,
為 METADATA_ONLY 時,只導出對象定義
expdp hr/hr DIRECTORY=dump DUMPFILE=a.dump CONTENT=METADATA_ONLY
3.DIRECTORY
指定轉儲文件和日志文件所在的目錄 DIRECTORY=directory_object
Directory_object 用于指定目錄對象名稱.需要注意,目錄對象是使用 CREATE DIRECTORY
語句建立的對象,而不是 OS 目錄
sys用戶下建立
mkdir -p /home/oracle/dump --必須在ORACLE用戶下使用(操作系統)
create or replace directory dump as ‘/home/oracle/dump’;
普通用戶給他相應的權限
grant read, write on directory dump to hr;
grant exp_full_database to hr;
檢查目錄
desc dba_directories;
set lines 1000
set pages 100
col owner for a5
col DIRECTORY_NAME for a25
col DIRECTORY_PATH for a80
select * from dba_directories;
其他用戶需要有exp_full_database to hr權限;
expdp hr/hr DIRECTORY=dump DUMPFILE=hr.dump
4.DUMPFILE
用于指定轉儲文件的名稱,默認名稱為 expdat.dmp DUMPFILE=[directory_object:]file_name [,….]
Directory_object 用于指定目錄對象名,file_name 用于指定轉儲文件名.需要注意,如果不指
定 directory_object,導出工具會自動使用 DIRECTORY 選項指定的目錄對象
expdp hr/hr DIRECTORY=dump1 DUMPFILE=dump2:a.dmp
5.ESTIMATE
指定估算被導出表所占用磁盤空間分方法.默認值是 BLOCKS ESTIMATE={BLOCKS | STATISTICS}
設置為 BLOCKS 時,oracle 會按照目標對象所占用的數據塊個數乘以數據塊尺寸估算對象占用
的空間,設置為 STATISTICS 時,根據最近統計值估算對象占用空間
expdp hr/hr TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump
6.ESTIMATE_ONLY
指定是否只估算導出作業所占用的磁盤空間,默認值為 N EXTIMATE_ONLY={Y | N}
設置為 Y 時,導出作用只估算對象所占用的磁盤空間,而不會執行導出作業,為 N 時,不僅估算對
象所占用的磁盤空間,還會執行導出操作.
expdp hr/hr ESTIMATE_ONLY=y NOLOGFILE=y
7.EXCLUDE
該選項用于指定執行操作時釋放要排除對象類型或相關對象 EXCLUDE=object_type[:name_clause] [,….]
Object_type 用于指定要排除的對象類型,name_clause 用于指定要排除的具體對象
EXCLUDE 和 INCLUDE 不能同時使用
expdp hr/hr DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW
常用排除命令:
EXCLUDE=SEQUENCE,VIEW --過濾所有的SEQUENCE,VIEW
EXCLUDE=INDEX --過濾所有的INDEX
EXCLUDE=TABLE:“IN (‘EMP’,‘DEPT’)” --過濾表對象EMP,DEPT
EXCLUDE=SEQUENCE,VIEW,TABLE:“IN (‘EMP’,‘DEPT’)” --過濾所有的SEQUENCE,VIEW以及表對象EMP,DEPT
EXCLUDE=INDEX:“= ‘INDX_NAME’” --過濾指定的索引對象INDX_NAME
INCLUDE=PROCEDURE:“LIKE ‘PROC_U%’” --包含以PROC_U開頭的所有存儲過程(_ 符號代表任意單個字符)
INCLUDE=TABLE:"> ‘E’ " --包含大于字符E的所有表對象
8.FILESIZE
指定導出文件的最大尺寸,默認為 0,(表示文件尺寸沒有限制)
9.指定導出特定 SCN 時刻的表數據
FLASHBACK_SCN=scn_value
Scn_value 用于標識 SCN 值.FLASHBACK_SCN 和 FLASHBACK_TIME 不能同時使用
expdp hr/hr DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_SCN=358523
10.FLASHBACK_TIME
指定導出特定時間點的表數據 FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”
expdp hr/hr 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] [,… ] 在導數據過程中有如下參數比較好用: TABLE_DATA 表中的數據
TABLE 表的定義,就是 create table 的語句,include 后只寫 table 參 數,將只創建表結構,exclude 后寫 table 參數導入過程將不執行 create table 命令。
OBJECT_GRANT 對象賦權操作
INDEX 索引定義,情況跟 table 一致
CONSTRAINT 約束 INDEX_STATISTICS 索引統計信息 TABLE_STATISTICS 表的統計信息
在未使用 parfile 文件的情形下,所有的符號都需要進行轉義,包括括號,雙引號,單引號等
expdp system/manager DIRECTORY=my_dir DUMPFILE=exp_tab.dmp
LOGFILE=exp_tab.log SCHEMAS=hr
INCLUDE=TABLE:\"IN \(\'EMPOLYEES\', \'DEPARTMENTS\'\)\"
14.JOB_NAME
指定要導出作用的名稱,默認為 SYS_XXX JOB_NAME=jobname_string
SELECT * FROM DBA_DATAPUMP_JOBS;–查看存在的 job
15.LOGFILE
指定導出日志文件文件的名稱,默認名稱為 export.log LOGFILE=[directory_object:]file_name
Directory_object 用于指定目錄對象名稱,file_name 用于指定導出日志文件名.如果不指定
directory_object.導出作用會自動使用 DIRECTORY 的相應選項值.
expdp hr/hr DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log
16.NETWORK_LINK
指定數據庫連接名,如果要將遠程數據庫對象導出到本地實例的轉儲文件中,必須設置該選項.
如:expdp hr/hr directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area dumpfile =p_street_area.dmp
logfile=p_street_area.log job_name=my_job igisdb 是目的數據庫與源數據的鏈接名,
dir_dp 是目的數據庫上的目錄
而如果直接用使用連接字符串(@orcl),expdp 屬于服務端工具,expdp 生成的文件默認是 存放在服務端的
17.NOLOGFILE
該選項用于指定禁止生成導出日志文件,默認值為 N.
18.PARALLEL
指定執行導出操作的并行進程個數,默認值為 1
注:并行度設置不應該超過 CPU 數的 2 倍,如果 cpu 為 2 個,可將 PARALLEL 設為 2,在導入時速度比 PARALLEL 為 1 要快
而對于導出的文件,如果 PARALLEL 設為 2,導出文件只有一個,導出速度提高不多,因為導出都是到同一個文件,會爭搶資源。所以可以設置導出文件為兩個,如下所示:
expdp hr/hr directory=d_test dumpfile=hrfile1.dmp,hrfile2.dp parallel=2
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 hr/hr directory=dump dumpfile=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 用于指定數據庫版本字符串.調用 expdp
導出的相關命令使用:
1)Ctrl+C 組合鍵:在執行過程中,可以按 Ctrl+C 組合鍵退出當前交互模式,退出之后, 導出操作不會停止
2)Export> status --查看當前 JOB 的狀態及相關信息
3)Export> stop_job --暫停 JOB(暫停 job 后會退出 expor 模式)
4)重新進入 export 模式下:C:\Documents and Settings\Administrator>expdp lttfm/lttfm attach=lttfm.my_job1 --語句后面不帶分號
5)Export> start_job --打開暫停的 JOB(并未開始重新執行)
6)Export> continue_client --通過此命令重新啟動 “LTTFM”.“MY_JOB”:
7)Export> kill_job --取消當前的 JOB 并釋放相關客戶會話(將 job 刪除同時 刪除 dmp 文件)
8)Export> exit_client --通過此命令退出 export 模式(通過 4)可再進入
export 模式下)
注:導出完成后 job 自動卸載
數據泵導出的各種模式:
1)導出用戶及其對象
expdp hr/hr schemas=hr dumpfile=expdp.dmp directory=dump logfile=expdp.log;
2)導出指定表
expdp hr/hr tables=employees,departments dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
3)按查詢條件導
expdp hr/hr directory=dump dumpfile=expdp.dmp tables=empquery=‘where deptno=20’ logfile=expdp.log;
4)按表空間導
expdp system/oracle directory=dump dumpfile=tablespace.dmp tablespaces=temp,example logfile=expdp.log;
5)導整個數據庫
expdp system/oracle directory=dump dumpfile=ly.dmp full=y logfile=expdp.log;
IMPDP 介紹
IMPDP 命令行選項與 expdp 有很多相同的,不同的有:
1、REMAP_DATAFILE
該選項用于將源數據文件名轉變為目標數據文件名,在不同平臺之間遷移表空間時可能需要該選項.
REMAP_DATAFIEL=source_datafie:target_datafile
2、REMAP_SCHEMA
該選項用于將源方案的所有對象裝載到目標方案中. REMAP_SCHEMA=source_schema:target_schema
3、REMAP_TABLESPACE
將源表空間的所有對象導入到目標表空間中
REMAP_TABLESPACE=source_tablespace:target:tablespace
4、REUSE_DATAFILES
該選項指定建立表空間時是否覆蓋已存在的數據文件.默認為 N REUSE_DATAFIELS={Y | N}
5、SKIP_UNUSABLE_INDEXES
指定導入是是否跳過不可使用的索引,默認為 N
6、SQLFILE
指定將導入要指定的索引 DDL 操作寫入到 SQL 腳本中
SQLFILE=[directory_object:]file_name
Impdp hr/hr DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql
7、STREAMS_CONFIGURATION
指定是否導入流元數據(Stream Matadata),默認值為 Y.
8、TABLE_EXISTS_ACTION
該選項用于指定當表已經存在時導入作業要執行的操作,默認為 SKIP
TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }
當設置該選項為 SKIP 時,導入作業會跳過已存在表處理下一個對象;當設置為 APPEND 時,會 追加數據,為 TRUNCATE 時,導入作業會截斷表,然后為其追加新數據;當設置為 REPLACE 時, 導入作業會刪除已存在表,重建表病追加數據,注意,TRUNCATE 選項不適用與簇表和 NETWORK_LINK 選項
9、TRANSFORM
該選項用于指定是否修改建立對象的 DDL 語句
TRANSFORM=transform_name:value[:object_type]
Transform_name 用于指定轉換名,其中 SEGMENT_ATTRIBUTES 用于標識段屬性(物理屬 性,存儲屬性,表空間,日志等信息),STORAGE 用于標識段存儲屬性,VALUE 用于指定是否包含 段屬性或段存儲屬性,object_type 用于指定對象類型.
Impdp hr/hr directory=dump dumpfile=tab.dmp Transform=segment_attributes:n:table
10、TRANSPORT_DATAFILES
該選項用于指定遷移空間時要被導入到目標數據庫的數據文件
TRANSPORT_DATAFILE=datafile_name
Datafile_name 用于指定被復制到目標數據庫的數據文件
Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp TRANSPORT_DATAFILES=’/user01/data/tbs1.f’調用 IMPDP
impdp 導入模式:
1、按表導入
p_street_area.dmp 文件中的表,此文件是以 hr 用戶按 schemas=hr 導出的:
impdp hr/hr dumpfile=p_street_area.dmp logfile=imp_p_street_area.log directory=dir_dp tables=p_street_area
2、按用戶導入(可以將用戶信息直接導入,即如果用戶信息不存在的情況下也可以直接導入)
impdp hr/hr schemas=hr dumpfile=expdp_test.dmp logfile=expdp_test.log directory=dump
3、不通過 expdp 的步驟生成 dmp 文件而直接導入的方法:
–從源數據庫中向目標數據庫導入表 p_street_area
impdp hr/hr directory=dump NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log
igisdb 是目的數據庫與源數據的鏈接名,dir_dp 是目的數據庫上的目錄
4、更換表空間
采用 remap_tablespace 參數
–導出 hr 用戶下的所有數據
expdp system/oracle directory=dump dumpfile=hr.dmp SCHEMAS=hr
注:如果是用 sys 用戶導出的用戶數據,包括用戶創建、授權部分,用自身用戶導出則不含這 些內容
–以下是將 hr 用戶下的數據全部導入到表空間 gcomm(原來為 gmapdata 表空間下)下
impdp system/oracle directory=dump dumpfile=hr.dmp remap_tablespace=gmapdata:gcomm
##################################
簡化用法
1)導入用戶(從用戶hr導入到用戶hr)
impdp hr/hr directory=dump dumpfile=expdp.dmp schemas=hr logfile=impdp.log;
導入用戶(從hr導入到用戶hr1)
impdp hr/hr directory=dump dumpfile=expdp.dmp remap_schema=hr:hr1 logfile=impdp.log;
2)導入表(從hr用戶中把表dept和emp導入到system用戶中)
impdp system/oracle directory=dump dumpfile=expdp.dmp tables=hr.dept,hr.emp remap_schema=hr:system logfile=impdp.log table_exists_action=replace (表空間已存在則替換);
3)導入表空間
impdp system/oracle directory=dump dumpfile=tablespace.dmp tablespaces=example logfile=impdp.log;
4)導入整個數據庫
impdb system/oracle directory=dump dumpfile=full.dmp full=y logfile=impdp.log;