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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据泵并行parallel参数问题

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

背景:

某現場遷移RB庫時發現數據泵(expdp)導出某張表加parallel并不能完全生效,導出的dmp文件大小不平均,數據全部集中在某個dmp文件上,如下圖所示:

導出命令如下:

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個,且數據幾乎全部集中在某個dmp文件里,這種不均衡的數據分布不是我們期望的。

問題復現:

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、按照常規parallel的命令導出

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

發現導出的dmp文件大小不均勻,且使用parallel 8,只生成3個dmp文件,復現了此問題

問題排查:

1、分區表分析

查看日志發現數據分布不均,懷疑是一個expdp woker進程只負責一個partition的導出,導致dmpfile大小不一樣

使用filesize限制每個dumpfile的大小,效果顯現:

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是一個個增長的,而不是并行增長(懷疑是分區數據不均導致)

2、構造非分區表測試

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

測試發現普通表指定了parallel,也無法均勻產生相應數量的dmpfile,排除了分區分布不均的懷疑

仔細觀察此日志,發現真正用戶數據導出的worker進程只有W-7,其他worker要么在處理其他(statisctics等),要么沒有用到(W-4,W-6等)

懷疑一張表只能由一個worker導出

3、導出整個schema測試

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

根據導出的結果可以看出,以schema導出的dmp文件仍然不均勻,應該是用戶下面有兩張大表各自落在這兩個dmp文件導致

結論

由測試結果可以暫時得出結論,一張表只能由一個worker導出數據,且此worker導出的數據會集中在一個dmpfile。所以導出單表時,只加parallel無法生成對應的dmpfile個數(最多3個)要想生成多個dmpfile,可以加filesize限制一個dmpfile大小,這樣會生成多個dmpfile(但是并不是同時生成,而是一個個生成,所以加parallel只能生成多個dmpfile,而不能減少導出時間)

附:

導出過程:

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

filesize的解釋:

filesize限制生成的dmpfile的最大值,建議與parallel共同使用,使用filesize,dumpfile要加%U才行,否則導出的數據超出filesize指定的值,會報錯如下:

如果導出的dmpfile很大,大于parallel*filesize的值,dmpfile會繼續增加;建議導出前先預估下導出的量,盡量使得parallel*filesize的值小于dmpfile,避免expdp worker進程idle

導出導入時間對比:

參數

parallel=8

filesize=2G

parallel+filesize

兩個參數都不加

導出時間

1min33s

1min47s

1min40s

1min50s

導入時間

5min57s

5min29s

6min8s

5min29s

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。