日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据泵并行parallel参数问题

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据泵并行parallel参数问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景:

某現(xiàn)場(chǎng)遷移RB庫(kù)時(shí)發(fā)現(xiàn)數(shù)據(jù)泵(expdp)導(dǎo)出某張表加parallel并不能完全生效,導(dǎo)出的dmp文件大小不平均,數(shù)據(jù)全部集中在某個(gè)dmp文件上,如下圖所示:

導(dǎo)出命令如下:

nohup expdp rb/*** directory=MIGRATE tables=event_usage_2985 dumpfile=event_usage_2985%U.dump CONTENT=DATA_ONLY PARALLEL=4 logfile=expdp_event_usage_2985.log &

可以由上圖看出,雖然加了parallel=4,dmp文件只生成了4個(gè),且數(shù)據(jù)幾乎全部集中在某個(gè)dmp文件里,這種不均衡的數(shù)據(jù)分布不是我們期望的。

問題復(fù)現(xiàn):

1、找一張大表

col owner for a10

col segment_name for a40

set lines 400 pages 9999

select * from (select owner,segment_name,sum(bytes/1024/1024/1024) from dba_segments group by segment_name,owner order by sum(bytes/1024/1024/1024) desc) where rownum<10;

2、按照常規(guī)parallel的命令導(dǎo)出

expdp rbc/******** directory=DIR_DP tables=rbc.EVENT_USAGE_C_10570 parallel=8 dumpfile=EVENT_USAGE_C_10570_%U.dmp logfile=EVENT_USAGE_C_10570.log metrics=y

發(fā)現(xiàn)導(dǎo)出的dmp文件大小不均勻,且使用parallel 8,只生成3個(gè)dmp文件,復(fù)現(xiàn)了此問題

問題排查:

1、分區(qū)表分析

查看日志發(fā)現(xiàn)數(shù)據(jù)分布不均,懷疑是一個(gè)expdp woker進(jìn)程只負(fù)責(zé)一個(gè)partition的導(dǎo)出,導(dǎo)致dmpfile大小不一樣

使用filesize限制每個(gè)dumpfile的大小,效果顯現(xiàn):

expdp rbc/******** directory=DIR_DP tables=rbc.EVENT_USAGE_C_10570 parallel=8 filesize=2G dumpfile=EVENT_USAGE_C_2_10570_%U.dmp logfile=EVENT_USAGE_C_2_10570.log metrics=y

但是dmpfile是一個(gè)個(gè)增長(zhǎng)的,而不是并行增長(zhǎng)(懷疑是分區(qū)數(shù)據(jù)不均導(dǎo)致)

2、構(gòu)造非分區(qū)表測(cè)試

create table rbc.EVENT_USAGE_C_10570_TEST as select * from rbc.EVENT_USAGE_C_10570;

expdp rbc/******** directory=DIR_DP tables=rbc.EVENT_USAGE_C_10570_test parallel=8 dumpfile=EVENT_USAGE_C_10570_test_%U.dmp logfile=EVENT_USAGE_C_10570_test.log metrics=y

測(cè)試發(fā)現(xiàn)普通表指定了parallel,也無法均勻產(chǎn)生相應(yīng)數(shù)量的dmpfile,排除了分區(qū)分布不均的懷疑

仔細(xì)觀察此日志,發(fā)現(xiàn)真正用戶數(shù)據(jù)導(dǎo)出的worker進(jìn)程只有W-7,其他worker要么在處理其他(statisctics等),要么沒有用到(W-4,W-6等)

懷疑一張表只能由一個(gè)worker導(dǎo)出

3、導(dǎo)出整個(gè)schema測(cè)試

expdp rbc/******** directory=DIR_DP schemas=rbc parallel=8 dumpfile=EVENT_USAGE_C_10570_test_%U.dmp logfile=EVENT_USAGE_C_10570_test.log metrics=y exclude=statistics

根據(jù)導(dǎo)出的結(jié)果可以看出,以schema導(dǎo)出的dmp文件仍然不均勻,應(yīng)該是用戶下面有兩張大表各自落在這兩個(gè)dmp文件導(dǎo)致

結(jié)論

由測(cè)試結(jié)果可以暫時(shí)得出結(jié)論,一張表只能由一個(gè)worker導(dǎo)出數(shù)據(jù),且此worker導(dǎo)出的數(shù)據(jù)會(huì)集中在一個(gè)dmpfile。所以導(dǎo)出單表時(shí),只加parallel無法生成對(duì)應(yīng)的dmpfile個(gè)數(shù)(最多3個(gè))要想生成多個(gè)dmpfile,可以加filesize限制一個(gè)dmpfile大小,這樣會(huì)生成多個(gè)dmpfile(但是并不是同時(shí)生成,而是一個(gè)個(gè)生成,所以加parallel只能生成多個(gè)dmpfile,而不能減少導(dǎo)出時(shí)間)

附:

導(dǎo)出過程:

https://download.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/datapump11gr2_parallel_1106.pdf

filesize的解釋:

filesize限制生成的dmpfile的最大值,建議與parallel共同使用,使用filesize,dumpfile要加%U才行,否則導(dǎo)出的數(shù)據(jù)超出filesize指定的值,會(huì)報(bào)錯(cuò)如下:

如果導(dǎo)出的dmpfile很大,大于parallel*filesize的值,dmpfile會(huì)繼續(xù)增加;建議導(dǎo)出前先預(yù)估下導(dǎo)出的量,盡量使得parallel*filesize的值小于dmpfile,避免expdp worker進(jìn)程idle

導(dǎo)出導(dǎo)入時(shí)間對(duì)比:

參數(shù)

parallel=8

filesize=2G

parallel+filesize

兩個(gè)參數(shù)都不加

導(dǎo)出時(shí)間

1min33s

1min47s

1min40s

1min50s

導(dǎo)入時(shí)間

5min57s

5min29s

6min8s

5min29s

總結(jié)

以上是生活随笔為你收集整理的数据泵并行parallel参数问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。