expdp/impdp 使用總結

tolywang發表於2009-09-04


1.     使用expdp要先在資料庫中建立directory,並給相應的使用者read,write許可權.
SQL>create directory 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\'\)\

常用一些引數說明:


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

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:


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

3.     匯出過程中的監控

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

Export>

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

4.     並行操作(PARALLEL)

您可以透過 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 作業相關的開銷可能超過並行執行緒的效益,並因此而降低效能。並行方式只有在表的數量多於並行值並且表很大時才是有效的。

5.     資料庫監控

您還可以從資料庫檢視獲得關於執行的 Data Pump 作業的更多資訊。監控作業的主檢視是 DBA_DATAPUMP_JOBS,它將告訴您在作業上有多少個工作程式(列 DEGREE)在工作。

另一個重要的檢視是 DBA_DATAPUMP_SESSIONS,當它與上述檢視和 V$SESSION 結合時將給出主前臺程式的會話 SID。

select sid, serial#
from v$session s, dba_datapump_sessions d
where s.saddr = d.saddr;

這條指令顯示前臺程式的會話。更多有用的資訊可以從警報日誌中獲得。當程式啟動時,MCP 和工作程式在警報日誌中顯示如下:

kupprdp:master process DM00 started with pid=23, OS id=20530 to execute -
SYS.KUPM$MCP.MAIN('CASES_EXPORT', 'ANANDA');
kupprdp:worker process DW01 started with worker id=1, pid=24, OS id=20532 to execute -
SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');
kupprdp:worker process DW03 started with worker id=2, pid=25, OS id=20534 to execute -
SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');

它顯示為資料泵操作啟動的會話的 PID。您可以用以下查詢找到實際的 SID:

select sid, program from v$session where paddr in
(select addr from v$process where pid in (23,24,25));

PROGRAM 列將對應警報日誌檔案中的名稱顯示程式 DM (為主程式)或 DW (為工作程式)。如果一個工作程式使用了並行查詢,比如說 SID 23,您可以在檢視 V$PX_SESSION 中看到它,並把它找出來。它將為您顯示從 SID 23 代表的工作程式中執行的所有並行查詢會話:

select sid from v$px_session where qcsid = 23;

從檢視 V$SESSION_LONGOPS 中可以獲得其它的有用資訊來預測完成作業將花費的時間。

select sid, serial#, sofar, totalwork
from v$session_longops
where pname = 'CASES_EXPORT'
and sofar != totalwork;

列 totalwork 顯示總工作量,該列的 sofar 數量被加和到當前的時刻 — 因而您可以用它來估計還要花多長時間。

6.       處理特定物件

l         Data Pump 允許您只匯出特定型別的物件。

例如,以下命令只匯出過程,而不匯出其它任何東西(不匯出表、檢視、甚至函式):

expdp scott/tiger directory=dmpdir dumpfile=procedure.dmp include=PROCEDURE

l         要只匯出一些特定的物件(比如說,函式 FUNC1 和過程 PROC1)

expdp scott/tiger directory=dmpdir dumpfile=test.dmp
include=PROCEDURE:\"=\'PROC1\'\",FUNCTION:\"=\'FUNC1\'\"

l         可以用匯出的dmp檔案來建立dmp檔案中包含物件的 DDL 指令碼,以供之後使用。

一個稱為 SQLFILE(impdp引數)引數允許建立 DDL 指令碼檔案。

impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=expprocs.dmp SQLFILE=aa.sql

使用這種方法的impdp,可以從dp出來的dmp檔案中提取物件的DDL語句,這樣的impdp並不把資料匯入資料庫中,只是建立DDL語句檔案


轉自:垃圾廣告.com/blog/131169 

 

 


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

 

 

exp/imp和expdp/impdp的區別

A: exp/imp的使用 (伺服器端和客戶端都可以執行。並且備份檔案可以在客戶端產生。)

exp file=dump.dmp
imp fromuser=fuser touser=tuser file=dump.dmp


2: expdp/impdp的使用 (只能在伺服器端執行。備份檔案只能存在伺服器裡面。)


I:在使用expdp匯出時在Oracle需要定義目錄變數,在匯出的時候需要制定這個變數。如果可以,你可以為每個使用者都建立一個單獨的備份目錄。
SQL>create directory dmpdir_user1 as '/home/oracle/backup';
SQL>grant read,write on directory dmpdir_user1 to user1;
對了,作業系統內必須建立這個目錄。在SQL命令列下,並不會產生這個目錄的。
[oracle@kook ~]$ mkdir backup
如果你沒有制定這個目錄的話,預設exp匯出存放的目錄是$HOME/rdbms/log裡面。至少我的是這樣。很奇怪,為什麼在這裡。

II:執行匯出匯入命令
expdp schemas=user1 directory=dmpdir_user1 dumpfile=user1.dmp
impdp directory=dmpdir_user1 dumpfile=user1.dmp remap_schema=user1:user2 remap_tablespace=user1ts:user2ts
使用expdp/impdp最大的好處可以讓我轉換表空間。而exp/imp這個是不支援的。處理起來非常麻煩


速度方面,expdp/impdp 明顯快與exp/imp 好幾倍,及時exp採用direct=y 速度也明顯慢於expdp .   

http://hi.baidu.com/yyk0720/blog/item/ede8fc2b9052819d023bf650.html 

 

 

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

相關文章