exp/imp與expdp/impdp區別

來源:互聯網
上載者:User

exp/imp與expdp/impdp區別

在平常備庫和資料庫遷移的時候,當遇到大的資料庫的時候在用exp的時候往往是需要好幾個小時,耗費大量時間。Oracle10g以後可以用expdp來匯出資料庫花費的時間要遠小於exp花費的時間,而且檔案也要小很多。

1.使用expdp要先在資料庫中建立directory,並給相應的使用者read,write許可權.

SQL>create dexp和empdp的區別irectory dmpdir as ‘/u01/dmdir’;

SQL>grant read,write on directory to test;

2.常用匯出方法

$expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=test

$expdp scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY=dmpdir TABLES=(tmp_test:p1,tmp_test:p2) JOB_NAME=tmp_dump LOGFILE=tmp_dump.log

$expdp scott/tiger DUMPFILE=full.dmp DIRECTORY=dmpdir FULL=Y JOB_NAME=full

$expdp scott/timer DUMPFILE=tmp_200703.dmp DIRECTORY=dmpdir TABLES=tmp QUERY=\”where to_char\(create_time,\’yyyy-mm-dd\’\)\<\'2007-04\'\"

常用一些參數說明:

SCOTT/TIGER:使用者/密碼(*)

DUMPFILE:匯出後的檔案名稱(*)

DIRECTORY:匯出檔案存放位置(位於伺服器端)(*)

CONTENT:匯出檔案中包含的內容(預設為:ALL,可選DATA_ONLY/METADATA_ONLY)

FILESIZE:指定匯出檔案大小(單位為bytes).

JOB_NAME:此次匯出進程使用的名稱,方便跟蹤查詢(可選)

LOGFILE:記錄檔名(預設為:export.log)

INCLUDE:匯出時包含指定的類型

(例:INCLUDE=TABLE_DATA,

INCLUDE=TABLE:"LIKE 'TAB%'"

INCLUDE=TABLE:”NOT LIKE ‘TAB%’”…)

EXCLUDE:匯出時排除的資料類型(例:EXCLUDE=TABLE:EMP)

FULL:全庫匯出時使用(同EXP的FULL,預設為N)

SCHEMA:匯出某一個SCHEMA下的所有資料

TABLES:按表匯出(這裡的方法和EXP一樣)

TABLESPACE:指定一個資料表空間匯出.

QUERY:按表匯出時,使用條件陳述式限定匯出範圍(同exp中的QUERY)

TRANSPORT_FULL_CHECK:

TRANSPORT_TABLESPACES:

FLASHBACK_SCN:

FLASHBACK_TIME:

PARALLEL:並行操作

PARFILE:

NETWORK_LINK:

當 Data Pump Export (DPE) 運行時,按 Control-C;它將阻止訊息在螢幕上顯示,但不停止匯出進程本身。相反,它將顯示 DPE 提示符(如下所示)。進程現在被認為處於“互動式”模式:

Export>

這種方法允許在這個 DPE 作業上輸入命令查詢及控制當前作業。

3.您可以通過 PARALLEL 參數為匯出使用一個以上的線程來顯著地加速作業。每個線程建立一個單獨的轉儲檔案,因此參數 dumpfile 應當擁有和並行度一樣多的項目。您可以指定萬用字元作為檔案名稱,而不是顯式地輸入各個檔案名稱,例如:

expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export

注意:dumpfile 參數擁有一個萬用字元 %U,它指示檔案將按需要建立,格式將為expCASES_nn.dmp,其中nn 從 01 開始,然後按需要向上增加。

在並行模式下,狀態螢幕將顯示四個背景工作處理序。(在預設模式下,只有一個進程是可見的)所有的背景工作處理序同步取出資料,並在狀態螢幕上顯示它們的進度。

分離訪問資料檔案和轉儲目錄檔案系統的輸入/輸出通道是很重要的。否則,與維護 Data Pump 作業相關的開銷可能超過並行線程的效益,並因此而降低效能。並行方式只有在表的數量多於並行值並且表很大時才是有效。

4.exp/imp與expdp/impdp區別:

(1) 把使用者usera的對象導到使用者userb,用法區別在於fromuser=usera touser=userb ,remap_schema=’usera’:'usera’ 。例如:imp system/passwd fromuser=usera touser=userb file=/oracle/exp.dmp log=/oracle/exp.log;

impdp system/passwd directory=expdp dumpfile=expdp.dmp remap_schema=’usera’:'userb’ logfile=/oracle/exp.log;

(2) 更換資料表空間,用exp/imp的時候,要想更改表所在的資料表空間,需要手工去處理一下,

如alter table xxx move tablespace_new之類的操作。

用impdp只要用remap_tablespace=’tabspace_old’:'tablespace_new’

(3) 當指定一些表的時候,使用exp/imp 時,tables的用法是 tables=(‘table1′,’table2′,’table3′)。

expdp/impdp的用法是tables=’table1′,’table2′,’table3′

(4) 是否要匯出資料行

exp (ROWS=Y 匯出資料行,ROWS=N 不匯出資料行)

expdp content(ALL:對象+匯出資料行,DATA_ONLY:只匯出對象,METADATA_ONLY:只匯出資料的記錄)

(5) expdp是[10g]的新特性而且只能在伺服器執行。而exp/imp是通用的。

(6) oracle11g中有個新特性,當表無資料時,不分配segment,以節省空間的,所以exp導不出空表。解決的辦法是用expdp, 當然也可以設定deferred_segment_creation 參數 或者 insert一行,再rollback,但是這樣很麻煩。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.