ORACLE expdp與impdp用法整理及高導低版本問題的解決

一、 首先是高版本導入低版本問題的解決,

 產生的現象:如,expdp 導出11g數據,impdp導入到10g數據庫時,正常會報錯,無法導入!

 

解決方法:

  expdp 導出時,需要加version=目標庫具體的版本號即可,

 如: test/test@sss CONTENT=DATA_ONLY DUMPFILE=2013-01.JGDMP LOGFILE=2013-01.EXP.LOG DIRECTORY=DIR_TESTDMP version=10.2.0.1.0 QUERY='WHERE    id=1' 

 

二、expdp與impdp用法整理

expdp介紹

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

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
ESTIMATE={BLOCKS | STATISTICS}
設置爲BLOCKS時,oracle會按照目標對象所佔用的數據塊個數乘以數據塊尺寸估算對象佔用的空間,設置爲STATISTICS時,根據最近統計值估算對象佔用空間
Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS DIRECTORY=dump DUMPFILE=a.dump

6. ESTIMATE_ONLY
指定是否只估算導出作業所佔用的磁盤空間,默認值爲N
EXTIMATE_ONLY={Y | N}
設置爲Y時,導出作用只估算對象所佔用的磁盤空間,而不會執行導出作業,爲N時,不僅估算對象所佔用的磁盤空間,還會執行導出操作.
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y

7. EXCLUDE(具體見2、Exclude導出用戶中指定類型的指定對象)
該選項用於指定執行操作時釋放要排除對象類型或相關對象
EXCLUDE=object_type[:name_clause] [,….]
Object_type用於指定要排除的對象類型,name_clause用於指定要排除的具體對象.EXCLUDE和INCLUDE不能同時使用
Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW

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-200414: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(具體見1、Include導出用戶中指定類型的指定對象)
指定導出時要包含的對象類型及相關對象
INCLUDE = object_type[:name_clause] [,… ]

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 scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log

16. NETWORK_LINK
指定數據庫鏈名,如果要將遠程數據庫對象導出到本地例程的轉儲文件中,必須設置該選項.
如:expdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdbtables=p_street_area dumpfile =p_street_area.dmplogfile=p_street_area.log     job_name=my_job
igisdb是目的數據庫與源數據的鏈接名,
dir_dp是目的數據庫上的目錄
而如果直接用使用連接字符串(@fgisdb),expdp屬於服務端工具,expdp生成的文件默認是存放在服務端的

17. NOLOGFILE
該選項用於指定禁止生成導出日誌文件,默認值爲N.

18. PARALLEL
指定執行導出操作的並行進程個數,默認值爲1
注:並行度設置不應該超過CPU數的2倍,如果cpu爲2個,可將PARALLEL設爲2,在導入時速度比PARALLEL爲1要快
    而對於導出的文件,如果PARALLEL設爲2,導出文件只有一個,導出速度提高不多,因爲導出都是到同一個文件,會爭搶資源。所以可以設置導出文件爲兩個,如下所示:
    expdp gwm/gwm directory=d_testdumpfile=gwmfile1.dp,gwmfile2.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 scott/tiger directory=dump dumpfile=a.dmp Tables=emp query=’WHEREdeptno=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、創建DIRECTORY
create directory dir_dp as 'D:\oracle\dir_dp';
2、授權
Grant read,write on directory dir_dp to lttfm;
--查看目錄及權限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t,all_directories d
 WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
3、執行導出
expdp lttfm/lttfm@fgisdb schemas=lttfm directory=dir_dp dumpfile=expdp_test1.dmp logfile=expdp_test1.log;

連接到: Oracle Database 10g Enterprise Edition Release10.2.0.1
With the Partitioning, OLAP and Data Mining options
啓動"LTTFM"."SYS_EXPORT_SCHEMA_01":  lttfm/********@fgisdbsch
ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;  */
備註:
   1、directory=dir_dp必須放在前面,如果將其放置最後,會提示ORA-39002: 操作無效
                                                            ORA-39070:無法打開日誌文件。
                                                            ORA-39087:目錄名DATA_PUMP_DIR; 無效
     
   2、在導出過程中,DATA DUMP 創建並使用了一個名爲SYS_EXPORT_SCHEMA_01的對象,此對象就是DATA DUMP導出過程中所用的JOB名字,如果在執行這個命令時如果沒有指定導出的JOB名字那麼就會產生一個默認的JOB名字,如果在導出過程中指定JOB 名字就爲以指定名字出現
     如下改成:
     expdp lttfm/lttfm@fgisdbschemas=lttfm directory=dir_dp dumpfile =expdp_test1.dmplogfile=expdp_test1.log,job_name=my_job1;
   3、導出語句後面不要有分號,否則如上的導出語句中的job表名爲‘my_job1;’,而不是my_job1。因此導致expdp lttfm/lttfm attach=lttfm.my_job1執行該命令時一直提示找不到job表
   4、創建的目錄一定要在數據庫所在的機器上。否則也是提示:

 ORA-39002: 操作無效
 ORA-39070: 無法打開日誌文件。
 ORA-39087: 目錄名 DATA_PUMP_DIR;無效

 這裏是最愛犯錯誤的地方!!!

 

 

導出的相關命令使用:
   1)Ctrl+C組合鍵:在執行過程中,可以按Ctrl+C組合鍵退出當前交互模式,退出之後,導出操作不會停止
   2)Export>status              --查看當前JOB的狀態及相關信息
   3)Export>stop_job            --暫停JOB(暫停job後會退出expor模式)
   4)重新進入export模式下:C:\Documentsand 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 lttfm/lttfm@fgisdb tables=lttfm.b$i_exch_info,lttfm.b$i_manhole_info dumpfile =expdp_test2.dmplogfile=expdp_test2.log directory=dir_dp job_name=my_job

2、按查詢條件導出:
expdp lttfm/lttfm@fgisdb  tables=lttfm.b$i_exch_info dumpfile=expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_jobquery='"where rownum<11"'

3、按表空間導出:
Expdp lttfm/lttfm@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBFlogfile=expdp_tablespace.log directory=dir_dp job_name=my_job

4、導出方案
Expdp lttfm/lttfm DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=lttfm,gwm

5、導出整個數據庫:
expdp lttfm/lttfm@fgisdb dumpfile =full.dmp full=y logfile=full.logdirectory=dir_dp job_name=my_job


使用exclude,include導出數據
1、Include導出用戶中指定類型的指定對象
--僅導出lttfm用戶下以B開頭的所有表,包含與表相關的索引,備註等。不包含過程等其它對象類型:
expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.logdirectory=dir_dp job_name=my_job include=TABLE:\"LIKE \'B%\'\"

--導出lttfm用戶下排除B$開頭的所有表:
expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmplogfile=include_1.log directory=dir_dp job_name=my_job include=TABLE:\"NOTLIKE \'B$%\'\"

--僅導出lttfm用戶下的所有存儲過程:
expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=include_1.dmplogfile=include_1.log directory=dir_dp job_name=my_job include=PROCEDURE;  

2、Exclude導出用戶中指定類型的指定對象
--導出lttfm用戶下除TABLE類型以外的所有對象,如果表不導出那麼與表相關的索引,約束等與表有關聯的對象類型也不會被導出:
expdp lttfm/lttfm@fgisdb schemas=lttfm dumpfile=exclude_1.dmplogfile=exclude_1.log directory=dir_dp job_name=my_job exclude=TABLE;

--導出lttfm用戶下排除B$開頭的所有表:
expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.logdirectory=dir_dp job_name=my_job exclude=TABLE:\"LIKE\'b$%\'\";

--導出lttfm用戶下的所有對象,但是對於表類型只導出以b$開頭的表:
expdp lttfm/lttfm@fgisdb dumpfile=include_1.dmp logfile=include_1.logdirectory=dir_dp job_name=my_job exclude=TABLE:\"NOT LIKE \'b$%\'\";


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 scott/tiger 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 scott/tiger directory=dump dumpfile=tab.dmpTransform=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文件中的表,此文件是以gwm用戶按schemas=gwm導出的:
impdp gwm/gwm@fgisdb  dumpfile =p_street_area.dmplogfile=imp_p_street_area.log directory=dir_dp tables=p_street_areajob_name=my_job

2、按用戶導入(可以將用戶信息直接導入,即如果用戶信息不存在的情況下也可以直接導入)
impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_test.dmplogfile=expdp_test.log directory=dir_dp job_name=my_job

3、不通過expdp的步驟生成dmp文件而直接導入的方法:
--從源數據庫中向目標數據庫導入表p_street_area
impdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_arealogfile=p_street_area.log  job_name=my_job
igisdb是目的數據庫與源數據的鏈接名,dir_dp是目的數據庫上的目錄

4、更換表空間
  採用remap_tablespace參數
  --導出gwm用戶下的所有數據
expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm
注:如果是用sys用戶導出的用戶數據,包括用戶創建、授權部分,用自身用戶導出則不含這些內容
--以下是將gwm用戶下的數據全部導入到表空間gcomm(原來爲gmapdata表空間下)下
impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmpremap_tablespace=gmapdata:gcomm

 

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