expdp impdp 用法詳解

2021-07-08 08:56:26 字數 4290 閱讀 8006

【注】本文全部摘自:對相關概念講解的非常詳細,所以儲存以備日後查閱。

一  關於expdp和impdp     使用expdp和impdp時應該注意的事項:

exp和imp是客戶端工具程式,它們既可以在客戶端使用,也可以在服務端使用。

expdp和impdp是服務端的工具程式,他們只能在oracle服務端使用,不能在客戶端使用。

imp只適用於exp匯出的檔案,不適用於expdp匯出檔案;impdp只適用於expdp匯出的檔案,而不適用於exp匯出檔案。

expdp或impdp命令時,可暫不指出使用者名稱/密碼@例項名 as 身份,然後根據提示再輸入,如:

expdp schemas=scott dumpfile=expdp.dmp directory=dpdata1;

一、建立邏輯目錄,該命令不會在作業系統建立真正的目錄,最好以system等管理員建立。

create directory dpdata1 as 'd:\test\dump';

二、檢視管理理員目錄(同時檢視作業系統是否存在,因為oracle並不關心該目錄是否存在,如果不存在,則出錯)

select * from dba_directories;

三、給scott使用者賦予在指定目錄的操作許可權,最好以system等管理員賦予。

grant read,write on directory dpdata1 to scott;

四、匯出資料

1)按使用者導

expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp directory=dpdata1;

2)並行程序parallel

expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

3)按表名導

expdp scott/tiger@orcl tables=emp,dept dumpfile=expdp.dmp directory=dpdata1;

4)按查詢條件導

expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp tables=emp query='where deptno=20';

5)按表空間導

expdp system/manager directory=dpdata1 dumpfile=tablespace.dmp tablespaces=temp,example;

6)導整個資料庫

expdp system/manager directory=dpdata1 dumpfile=full.dmp full=y;

五、還原資料

1)導到指定使用者下

impdp scott/tiger directory=dpdata1 dumpfile=expdp.dmp schemas=scott;

2)改變表的owner

impdp system/manager directory=dpdata1 dumpfile=expdp.dmp tables=scott.dept remap_schema=scott:system;

3)匯入表空間

impdp system/manager directory=dpdata1 dumpfile=tablespace.dmp tablespaces=example;

4)匯入資料庫

impdb system/manager directory=dump_dir dumpfile=full.dmp full=y;

5)追加資料

impdp system/manager directory=dpdata1 dumpfile=expdp.dmp schemas=system table_exists_action

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

資料庫監控

您還可以從資料庫檢視獲得關於執行的 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 opname = 'cases_export' and sofar != totalwork;

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

三 oracle 10g 和11g的互相匯入和匯出    1) 可以用10g的client連線11個匯出11g的資料庫,即可匯入10g   2)用expdp,impdp,如:

在11g伺服器上,使用expdp命令備份資料

expdp userid='sys/cuc2009@cuc as sysdba' schemas=sybj directory=data_pump_dir dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0

在10g伺服器上,使用impdp命令恢復資料

準備工作:1.建庫2.建表空間3.建使用者並授權4.將aa.dmp拷貝到10g的dpdump目錄下

impdp userid='sys/cuc2009@cucf as sysdba' schemas=sybj directory=data_pump_dir dumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0

expdp impdp 用法詳解

一 關於expdp和impdp 使用expdp和impdp時應該注意的事項 exp和imp是客戶端工具程式,它們既可以在客戶端使用,也可以在服務端使用。expdp和impdp是服務端的工具程式,他們只能在oracle服務端使用,不能在客戶端使用。imp只適用於exp匯出的檔案,不適用於expdp匯出...

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.d...

expdp impdp匯出匯入資料

expdp匯出資料步驟 1 建立目錄 create directory dir expdp as syjkccs dir expdp 2 授權 grant read,write on directory dir expdp to tpl 3 檢視目錄及許可權 select from dba dire...