expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...
由于準(zhǔn)備做一個(gè)120G左右的數(shù)據(jù)庫的數(shù)據(jù)遷移,使用EXPDP和impdp做了一系列的測試
導(dǎo)出環(huán)境 4CPU AIX P4 -750M??16G 內(nèi)存
導(dǎo)入環(huán)境 4CPU AIX P6-4G 32G 內(nèi)存 4CPU可以虛擬出16個(gè)線程來,可以看到16個(gè)虛擬的CPU
存儲都是一樣的DS4300 24塊146G 15K ,都是使用裸設(shè)備,單機(jī)導(dǎo)入
導(dǎo)出測試
導(dǎo)出腳本,只修改PARALLEL=3的數(shù)字,導(dǎo)入相同
nohup expdp system/manager schemas=kdjm DIRECTORY=DUMP_FILES PARALLEL=3 dumpfile=KDJM2008-11-28_%U.dmp logfile=nnsiexp2008_12_28.log&
導(dǎo)出時(shí)間成績
1個(gè)并行文件 1:05
2個(gè)并行 0:56:36
3個(gè)并行 0:30:41
4個(gè)并行 0:51
6個(gè)并行 1:21
注意到?jīng)]有,不是什么數(shù)量的并行值都能快速的導(dǎo)出,期間使用sar -ud 5 1000,監(jiān)控磁盤I/O情況,發(fā)現(xiàn)在最快的3個(gè)管道的時(shí)侯I(lǐng)/O等待為40-50,1個(gè)管道的時(shí)侯I(lǐng)/O等待只有5-10個(gè),6個(gè)管道的時(shí)侯是70-80的I/O等待,因此我認(rèn)為無論是那種平臺導(dǎo)出要想更快,一定要壓榨I/O的能力,盡量使i/o等待在30-50之間,太多了I/O能力反而可能下降,看來在這個(gè)平臺上,3個(gè)管道是最好的呵呵,導(dǎo)出時(shí)的PARALLEL應(yīng)該是指生成的數(shù)據(jù)文件過程的I/O進(jìn)程數(shù),如果指定了%U參數(shù),也將是文件數(shù)。
導(dǎo)入時(shí)間:
導(dǎo)入腳本
nohup impdp system/manager schemas=kdjm DIRECTORY=DUMP_FILES PARALLEL=12 dumpfile=KDMJ2008-12-11_%U.dmp logfile=KDMJ2008-12-11.log&
導(dǎo)入時(shí)ORACLE參數(shù)配置,導(dǎo)出時(shí)好像配啥參數(shù)都沒有效果呵呵
alter system set db_file_multiblock_read_count=256 scope=spfile;
alter system set pga_aggregate_target=4G scope=spfile;
alter system set shared_pool_size=4G scope=spfile;
alter system set db_cache_size=18G??scope=spfile;
alter system set sga_max_size=24G scope=spfile;
alter system??set sga_target=24G scope=spfile;
alter system??set??processes=400 scope=spfile;
排序區(qū)=1.5G
alter system??set sort_area_size=1610612736 scope=spfile;
導(dǎo)入耗時(shí)成績
1個(gè)并行,1個(gè)導(dǎo)入文件 11:27:21
4個(gè)并行,4個(gè)導(dǎo)入文件6:12:32
8個(gè)并行,4個(gè)導(dǎo)入文件4:42:45
12個(gè)并行,3個(gè)導(dǎo)入文件3:42:27
14個(gè)并行,3個(gè)導(dǎo)入文件4:40:13
16個(gè)并行,2個(gè)導(dǎo)入文件4:39:07
看到?jīng)]有,導(dǎo)入選擇合理的參數(shù),從11個(gè)多小時(shí)降到3小時(shí)多一點(diǎn),差異非常巨大,這樣的差距,盡量在導(dǎo)入的時(shí)侯壓榨I/O的壓力,是說不通的。事實(shí)上到了導(dǎo)入后半程,SAR監(jiān)控到的I/O壓力并不大,是什么影響了導(dǎo)入的速度?我看到一個(gè)出錯(cuò)的語句幫助我解開了這個(gè)秘密,這個(gè)出錯(cuò)的語句是創(chuàng)建索引的語句
這是出錯(cuò)的語句,應(yīng)該是開發(fā)錯(cuò)誤地將創(chuàng)建索引的表空間指到了SYSAUX,從而導(dǎo)致出錯(cuò)了,注意最后的PARALLEL 8
ORA-31685: Object type INDEX:"DBSNMP"."DK_WERR" failed due to insufficient privileges. Failing sql is:
CREATE INDEX "DBSNMP"."DK_WERR" ON "KDMJ"."DK_WERR" ("SCY", "AWERR") PCTFREE 10 INITRANS 2 MAXTRANS 255??STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSAUX" PARALLEL 8
這個(gè)出錯(cuò),讓我們知道導(dǎo)入時(shí)指定PARALLEL值實(shí)際是用在創(chuàng)建索引的并行度上的,所以導(dǎo)入的時(shí)侯選擇較高的并行度是可以大幅度提高創(chuàng)建索引的速度,從而加快了導(dǎo)入的速度。其實(shí)從導(dǎo)入數(shù)據(jù)來看,無論你選擇多少個(gè)并行值,都是在1個(gè)小時(shí)左右數(shù)據(jù)就全部導(dǎo)入了,這時(shí)查詢數(shù)據(jù)能查詢到,但是沒有索引,無論那種導(dǎo)入方式浪費(fèi)時(shí)間,最多都是創(chuàng)建索引的時(shí)間,我們修改創(chuàng)建索引的并行度,使創(chuàng)建索引的速度大大增加了,當(dāng)然增加到更多的值,會產(chǎn)生的I/O和鎖之類的競爭,從而導(dǎo)致速度下降了,我們看到14個(gè)并行值和16個(gè)并行值還不如12個(gè)的,另外要特別指出一點(diǎn),導(dǎo)入的時(shí)侯PARALLEL值和導(dǎo)出時(shí)的PARALLEL值可以完全不同的,估計(jì)好多人和我以前的理解一樣,認(rèn)為導(dǎo)入導(dǎo)出的數(shù)量要嚴(yán)格相等的,但是手冊推薦導(dǎo)入數(shù)量要等于導(dǎo)出的數(shù)量罷了。
如果要給導(dǎo)入一個(gè)合理的PARALLEL值,通過測試,我認(rèn)為是可用的CPU數(shù)(不管你是虛擬的還是多核的)的60-70%左右的值是一個(gè)比較好的值。當(dāng)然如果有可能還是測試一下來決定一個(gè)最優(yōu)的值吧。
[本帖最后由 wwwlh 于 2008-12-31 07:55 編輯]
總結(jié)
以上是生活随笔為你收集整理的expdp oracle 并行_关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7开启vnc服务_Cento
- 下一篇: 甘特图 知乎_安利!拥有这5款甘特图工具