expdp / impdp 用法详解
生活随笔
收集整理的這篇文章主要介紹了
expdp / impdp 用法详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一? 關(guān)于expdp和impdp ??? 使用EXPDP和IMPDP時(shí)應(yīng)該注意的事項(xiàng):
EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務(wù)端使用。
EXPDP和IMPDP是服務(wù)端的工具程序,他們只能在ORACLE服務(wù)端使用,不能在客戶端使用。
IMP只適用于EXP導(dǎo)出的文件,不適用于EXPDP導(dǎo)出文件;IMPDP只適用于EXPDP導(dǎo)出的文件,而不適用于EXP導(dǎo)出文件。
expdp或impdp命令時(shí),可暫不指出用戶名/密碼@實(shí)例名 as 身份,然后根據(jù)提示再輸入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、創(chuàng)建邏輯目錄,該命令不會(huì)在操作系統(tǒng)創(chuàng)建真正的目錄,最好以system等管理員創(chuàng)建。
create directory dpdata1 as 'd:\test\dump';
二、查看管理理員目錄(同時(shí)查看操作系統(tǒng)是否存在,因?yàn)镺racle并不關(guān)心該目錄是否存在,如果不存在,則出錯(cuò))
select * from dba_directories;
三、給scott用戶賦予在指定目錄的操作權(quán)限,最好以system等管理員賦予。
grant read,write on directory dpdata1 to scott;
四、導(dǎo)出數(shù)據(jù)
1)按用戶導(dǎo)
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行進(jìn)程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導(dǎo)
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查詢條件導(dǎo)
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導(dǎo)
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導(dǎo)整個(gè)數(shù)據(jù)庫(kù)
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、還原數(shù)據(jù)
1)導(dǎo)到指定用戶下
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)導(dǎo)入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)導(dǎo)入數(shù)據(jù)庫(kù)
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加數(shù)據(jù)
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
二? 附加說(shuō)明 ???? 并行操作(PARALLEL)?
您可以通過(guò) PARALLEL 參數(shù)為導(dǎo)出使用一個(gè)以上的線程來(lái)顯著地加速作業(yè)。每個(gè)線程創(chuàng)建一個(gè)單獨(dú)的轉(zhuǎn)儲(chǔ)文件,因此參數(shù) dumpfile 應(yīng)當(dāng)擁有和并行度一樣多的項(xiàng)目。您可以指定通配符作為文件名,而不是顯式地輸入各個(gè)文件名,例如:?
expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export?
注意:dumpfile 參數(shù)擁有一個(gè)通配符 %U,它指示文件將按需要?jiǎng)?chuàng)建,格式將為expCASES_nn.dmp,其中nn 從 01 開始,然后按需要向上增加。?
在并行模式下,狀態(tài)屏幕將顯示四個(gè)工作進(jìn)程。(在默認(rèn)模式下,只有一個(gè)進(jìn)程是可見的)所有的工作進(jìn)程同步取出數(shù)據(jù),并在狀態(tài)屏幕上顯示它們的進(jìn)度。?
分離訪問數(shù)據(jù)文件和轉(zhuǎn)儲(chǔ)目錄文件系統(tǒng)的輸入/輸出通道是很重要的。否則,與維護(hù) Data Pump 作業(yè)相關(guān)的開銷可能超過(guò)并行線程的效益,并因此而降低性能。并行方式只有在表的數(shù)量多于并行值并且表很大時(shí)才是有效的。?
數(shù)據(jù)庫(kù)監(jiān)控?
您還可以從數(shù)據(jù)庫(kù)視圖獲得關(guān)于運(yùn)行的 Data Pump 作業(yè)的更多信息。監(jiān)控作業(yè)的主視圖是 DBA_DATAPUMP_JOBS,它將告訴您在作業(yè)上有多少個(gè)工作進(jìn)程(列 DEGREE)在工作。?
另一個(gè)重要的視圖是 DBA_DATAPUMP_SESSIONS,當(dāng)它與上述視圖和 V$SESSION 結(jié)合時(shí)將給出主前臺(tái)進(jìn)程的會(huì)話 SID。?
select sid, serial# from v$session s, dba_datapump_sessions d where s.saddr = d.saddr;?
這條指令顯示前臺(tái)進(jìn)程的會(huì)話。更多有用的信息可以從警報(bào)日志中獲得。當(dāng)進(jìn)程啟動(dòng)時(shí),MCP 和工作進(jìn)程在警報(bào)日志中顯示如下:?
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');?
它顯示為數(shù)據(jù)泵操作啟動(dòng)的會(huì)話的 PID。您可以用以下查詢找到實(shí)際的 SID:?
select sid, program from v$session where paddr in (select addr from v$process where pid in (23,24,25));?
PROGRAM 列將對(duì)應(yīng)警報(bào)日志文件中的名稱顯示進(jìn)程 DM (為主進(jìn)程)或 DW (為工作進(jìn)程)。如果一個(gè)工作進(jìn)程使用了并行查詢,比如說(shuō) SID 23,您可以在視圖 V$PX_SESSION 中看到它,并把它找出來(lái)。它將為您顯示從 SID 23 代表的工作進(jìn)程中運(yùn)行的所有并行查詢會(huì)話:?
select sid from v$px_session where qcsid = 23;?
從視圖 V$SESSION_LONGOPS 中可以獲得其它的有用信息來(lái)預(yù)測(cè)完成作業(yè)將花費(fèi)的時(shí)間。?
select sid, serial#, sofar, totalwork from v$session_longops where opname = 'CASES_EXPORT' and sofar != totalwork;?
列 totalwork 顯示總工作量,該列的 sofar 數(shù)量被加和到當(dāng)前的時(shí)刻 — 因而您可以用它來(lái)估計(jì)還要花多長(zhǎng)時(shí)間。?
三 oracle 10g 和11g的互相導(dǎo)入和導(dǎo)出 ?? 1) 可以用10g的client連接11個(gè)導(dǎo)出11g的數(shù)據(jù)庫(kù),即可導(dǎo)入10g ? 2)用expdp,impdp,如:
在11g服務(wù)器上,使用expdp命令備份數(shù)據(jù)
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服務(wù)器上,使用impdp命令恢復(fù)數(shù)據(jù)
準(zhǔn)備工作:1.建庫(kù)2.建表空間3.建用戶并授權(quán)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
EXP和IMP是客戶端工具程序,它們既可以在客戶端使用,也可以在服務(wù)端使用。
EXPDP和IMPDP是服務(wù)端的工具程序,他們只能在ORACLE服務(wù)端使用,不能在客戶端使用。
IMP只適用于EXP導(dǎo)出的文件,不適用于EXPDP導(dǎo)出文件;IMPDP只適用于EXPDP導(dǎo)出的文件,而不適用于EXP導(dǎo)出文件。
expdp或impdp命令時(shí),可暫不指出用戶名/密碼@實(shí)例名 as 身份,然后根據(jù)提示再輸入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、創(chuàng)建邏輯目錄,該命令不會(huì)在操作系統(tǒng)創(chuàng)建真正的目錄,最好以system等管理員創(chuàng)建。
create directory dpdata1 as 'd:\test\dump';
二、查看管理理員目錄(同時(shí)查看操作系統(tǒng)是否存在,因?yàn)镺racle并不關(guān)心該目錄是否存在,如果不存在,則出錯(cuò))
select * from dba_directories;
三、給scott用戶賦予在指定目錄的操作權(quán)限,最好以system等管理員賦予。
grant read,write on directory dpdata1 to scott;
四、導(dǎo)出數(shù)據(jù)
1)按用戶導(dǎo)
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行進(jìn)程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導(dǎo)
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查詢條件導(dǎo)
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導(dǎo)
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導(dǎo)整個(gè)數(shù)據(jù)庫(kù)
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
五、還原數(shù)據(jù)
1)導(dǎo)到指定用戶下
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)導(dǎo)入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)導(dǎo)入數(shù)據(jù)庫(kù)
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加數(shù)據(jù)
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
二? 附加說(shuō)明 ???? 并行操作(PARALLEL)?
您可以通過(guò) PARALLEL 參數(shù)為導(dǎo)出使用一個(gè)以上的線程來(lái)顯著地加速作業(yè)。每個(gè)線程創(chuàng)建一個(gè)單獨(dú)的轉(zhuǎn)儲(chǔ)文件,因此參數(shù) dumpfile 應(yīng)當(dāng)擁有和并行度一樣多的項(xiàng)目。您可以指定通配符作為文件名,而不是顯式地輸入各個(gè)文件名,例如:?
expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export?
注意:dumpfile 參數(shù)擁有一個(gè)通配符 %U,它指示文件將按需要?jiǎng)?chuàng)建,格式將為expCASES_nn.dmp,其中nn 從 01 開始,然后按需要向上增加。?
在并行模式下,狀態(tài)屏幕將顯示四個(gè)工作進(jìn)程。(在默認(rèn)模式下,只有一個(gè)進(jìn)程是可見的)所有的工作進(jìn)程同步取出數(shù)據(jù),并在狀態(tài)屏幕上顯示它們的進(jìn)度。?
分離訪問數(shù)據(jù)文件和轉(zhuǎn)儲(chǔ)目錄文件系統(tǒng)的輸入/輸出通道是很重要的。否則,與維護(hù) Data Pump 作業(yè)相關(guān)的開銷可能超過(guò)并行線程的效益,并因此而降低性能。并行方式只有在表的數(shù)量多于并行值并且表很大時(shí)才是有效的。?
數(shù)據(jù)庫(kù)監(jiān)控?
您還可以從數(shù)據(jù)庫(kù)視圖獲得關(guān)于運(yùn)行的 Data Pump 作業(yè)的更多信息。監(jiān)控作業(yè)的主視圖是 DBA_DATAPUMP_JOBS,它將告訴您在作業(yè)上有多少個(gè)工作進(jìn)程(列 DEGREE)在工作。?
另一個(gè)重要的視圖是 DBA_DATAPUMP_SESSIONS,當(dāng)它與上述視圖和 V$SESSION 結(jié)合時(shí)將給出主前臺(tái)進(jìn)程的會(huì)話 SID。?
select sid, serial# from v$session s, dba_datapump_sessions d where s.saddr = d.saddr;?
這條指令顯示前臺(tái)進(jìn)程的會(huì)話。更多有用的信息可以從警報(bào)日志中獲得。當(dāng)進(jìn)程啟動(dòng)時(shí),MCP 和工作進(jìn)程在警報(bào)日志中顯示如下:?
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');?
它顯示為數(shù)據(jù)泵操作啟動(dòng)的會(huì)話的 PID。您可以用以下查詢找到實(shí)際的 SID:?
select sid, program from v$session where paddr in (select addr from v$process where pid in (23,24,25));?
PROGRAM 列將對(duì)應(yīng)警報(bào)日志文件中的名稱顯示進(jìn)程 DM (為主進(jìn)程)或 DW (為工作進(jìn)程)。如果一個(gè)工作進(jìn)程使用了并行查詢,比如說(shuō) SID 23,您可以在視圖 V$PX_SESSION 中看到它,并把它找出來(lái)。它將為您顯示從 SID 23 代表的工作進(jìn)程中運(yùn)行的所有并行查詢會(huì)話:?
select sid from v$px_session where qcsid = 23;?
從視圖 V$SESSION_LONGOPS 中可以獲得其它的有用信息來(lái)預(yù)測(cè)完成作業(yè)將花費(fèi)的時(shí)間。?
select sid, serial#, sofar, totalwork from v$session_longops where opname = 'CASES_EXPORT' and sofar != totalwork;?
列 totalwork 顯示總工作量,該列的 sofar 數(shù)量被加和到當(dāng)前的時(shí)刻 — 因而您可以用它來(lái)估計(jì)還要花多長(zhǎng)時(shí)間。?
三 oracle 10g 和11g的互相導(dǎo)入和導(dǎo)出 ?? 1) 可以用10g的client連接11個(gè)導(dǎo)出11g的數(shù)據(jù)庫(kù),即可導(dǎo)入10g ? 2)用expdp,impdp,如:
在11g服務(wù)器上,使用expdp命令備份數(shù)據(jù)
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服務(wù)器上,使用impdp命令恢復(fù)數(shù)據(jù)
準(zhǔn)備工作:1.建庫(kù)2.建表空間3.建用戶并授權(quán)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
總結(jié)
以上是生活随笔為你收集整理的expdp / impdp 用法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE EXPDP命令使用详细
- 下一篇: [面向对象] ABAP中类重构助手Ref