來(lái)源:我自由我心 發(fā)布時(shí)間:2018-11-21 13:57:26 閱讀量:1086
在使用命令行進(jìn)行數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出時(shí),經(jīng)常會(huì)使用到exp和imp兩個(gè)命令。當(dāng)然,在數(shù)據(jù)量小的時(shí)候用這兩個(gè)是無(wú)可厚非的,但是當(dāng)數(shù)據(jù)量比較大,多字段百萬(wàn)級(jí)數(shù)據(jù)量的時(shí)候,你會(huì)發(fā)現(xiàn)使用exp和imp導(dǎo)入導(dǎo)出數(shù)據(jù)是一個(gè)讓人抓狂的事情。干著急,進(jìn)度條就是不動(dòng)。后來(lái)偶然看到環(huán)境配置組同事寫導(dǎo)出命令的時(shí)候使用了expdp導(dǎo)出的,剛來(lái)時(shí)說(shuō)這什么玩意?難道是服務(wù)器系統(tǒng)特有的命令?后來(lái)百度了一下發(fā)現(xiàn),我去,居然有這么牛掰的命令而我卻不知道。。。。。。自此以后就果斷拋棄了exp和imp,寵幸expdp和impdp去了。
expdp和impdp是oracle 10g版本出的一個(gè)新功能,使用數(shù)據(jù)泵導(dǎo)入導(dǎo)出數(shù)據(jù),據(jù)官方推薦說(shuō)使用數(shù)據(jù)泵導(dǎo)入導(dǎo)出會(huì)比普通的導(dǎo)入導(dǎo)出快十倍,可以說(shuō)是非常強(qiáng)大了,下面來(lái)詳細(xì)說(shuō)下數(shù)據(jù)泵的具體使用方法以及和普通導(dǎo)入導(dǎo)出的區(qū)別。
1、exp導(dǎo)出
exp userid='sys/admin@orcl as sysdba' file=D:/Backup/oracle/expfull.dmp tables=(skate.testbind,skate.testbind_tmp,skate.test_idx)
buffer=409600000 & time
這是最普通的導(dǎo)出方法
2、expdp導(dǎo)出
C:/Documents and Settings/Administrator>expdp 'sys/aibo@test as sysdba' director
y=dpdump dumpfile=expdpp.dp tables=(skate.testbind,skate.testbind_tmp,skate.test_idx) parallel=2 & time
參數(shù)說(shuō)明:
SCOTT/TIGER:用戶/密碼(*)
DUMPFILE:導(dǎo)出后的文件名(*)
DIRECTORY:導(dǎo)出文件存放位置(位于服務(wù)器端)(*)
CONTENT:導(dǎo)出文件中包含的內(nèi)容(默認(rèn)為:ALL,可選DATA_ONLY/METADATA_ONLY)
FILESIZE:指定導(dǎo)出文件大小(單位為bytes).
JOB_NAME:此次導(dǎo)出進(jìn)程使用的名稱,方便跟蹤查詢(可選)
LOGFILE:日志文件名(默認(rèn)為:export.log)
INCLUDE:導(dǎo)出時(shí)包含指定的類型(例:INCLUDE=TABLE_DATA,INCLUDE=TABLE:"LIKE 'TAB%'"INCLUDE=TABLE:”NOT LIKE ‘TAB%’”…)
EXCLUDE:導(dǎo)出時(shí)排除的數(shù)據(jù)類型(例:EXCLUDE=TABLE:EMP)
FULL:全庫(kù)導(dǎo)出時(shí)使用(同EXP的FULL,默認(rèn)為N)
SCHEMA:導(dǎo)出某一個(gè)SCHEMA下的所有數(shù)據(jù)
TABLES:按表導(dǎo)出(這里的方法和EXP一樣)
TABLESPACE:指定一個(gè)表空間導(dǎo)出.
QUERY:按表導(dǎo)出時(shí),使用條件語(yǔ)句限定導(dǎo)出范圍(同exp中的QUERY)
TRANSPORT_FULL_CHECK:
TRANSPORT_TABLESPACES:
FLASHBACK_SCN:
FLASHBACK_TIME:
PARALLEL:并行操作
PARFILE:
NETWORK_LINK:
這是使用數(shù)據(jù)泵導(dǎo)出,數(shù)據(jù)泵導(dǎo)出有以下優(yōu)點(diǎn):
<1>數(shù)據(jù)泵導(dǎo)出可以使用parallel屬性指定并行任務(wù)導(dǎo)出,parallel=2就是并行2個(gè)任務(wù)導(dǎo)出。當(dāng)然,這個(gè)并不是越多越好,需要考慮服務(wù)器的性能和cpu的個(gè)數(shù)等等因素。還可以通過(guò)導(dǎo)出多個(gè)文件的方式提高性能,即使用dumpfile=expdp.dp1,expdp.dp2這種方式提高性能。需要用戶根據(jù)實(shí)際情況設(shè)置
<2>exp導(dǎo)出時(shí)讀取的是sql,通過(guò)加載sql查詢結(jié)果到緩存,然后在寫進(jìn)目標(biāo)文件,而expdp是直接讀取的數(shù)據(jù)塊,直接從數(shù)據(jù)塊寫進(jìn)目標(biāo)文件。
<3>expdp是服務(wù)端程序,直接在數(shù)據(jù)庫(kù)服務(wù)端使用。而exp是客戶端使用,要收到網(wǎng)速的影響,因此會(huì)比較慢。
3、imp導(dǎo)入
imp system/manager@TEST file=d:\daochu.dmp
4、impdp導(dǎo)入
imp aichannel/aichannel@TEST full=y file=d:\datanewsmgnt.dmp ignore=y
區(qū)別:
1、empdp導(dǎo)出的文件只能用impdp導(dǎo)入,exp導(dǎo)出的文件只能用imp導(dǎo)入,不能互通。
2、在使用empdp之前,需要首先創(chuàng)建directory來(lái)確定導(dǎo)出的文件路徑,而不能在導(dǎo)出時(shí)指定文件的導(dǎo)出路徑。
CREATE DIRECTORY dump_dir AS '/u01/app/dump';
GRANT READ,WRITE ON DIRECTORY dump_dir to scott;
3、當(dāng)想把一個(gè)用戶的表導(dǎo)到明一個(gè)用戶名下時(shí)
[sql] view plain copy
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;
4、更換表空間,用exp/imp的時(shí)候,要想更改表所在的表空間,需要手工去處理一下,
如alter table xxx move tablespace_new之類的操作。
用impdp只要用remap_tablespace='tabspace_old':'tablespace_new'
5、當(dāng)指定一些表的時(shí)候,使用exp/imp 時(shí),tables的用法是 tables=('table1','table2','table3')。
expdp/impdp的用法是tables='table1','table2','table3'
6、是否要導(dǎo)出數(shù)據(jù)行
exp (ROWS=Y 導(dǎo)出數(shù)據(jù)行,ROWS=N 不導(dǎo)出數(shù)據(jù)行)
expdp content(ALL:對(duì)象+導(dǎo)出數(shù)據(jù)行,DATA_ONLY:只導(dǎo)出對(duì)象,METADATA_ONLY:只導(dǎo)出數(shù)據(jù)的記錄)
---------------------
在線
客服
服務(wù)時(shí)間:周一至周日 08:30-18:00
選擇下列產(chǎn)品馬上在線溝通:
客服
熱線
7*24小時(shí)客服服務(wù)熱線
關(guān)注
微信
關(guān)注官方微信