在之前的章节中讨论过怎么把一个很大的分区表切分为若干的dump文件,在数据加载的时候能够同时做基于每个分区的数据导入,如果有些分区比较大,有几十个dump文件,那么这个分区做数据导入的时候是不能再进行并行切分了。
现在在准生产环境中先查找了如下的表,charge,memo,charge_rel数量级都过亿,而且memo表中还含有lob字段。其他两个分区尽管字段没有特殊之处,但是分区数很多。都在几百个左右。
charge
133036878
memo
186700029
CHARGE_REL
131419041
我把数据导入分成了10个并行的process,每个process里面处理对应的分区表数据。
比方说charge表
CHARGE 206..206 "partition(P30_C30)"
CHARGE 197..199 "partition(P29_C40)"
CHARGE 188..188 "partition(P28_C50)"
CHARGE 179..179 "partition(P27_C60)"
CHARGE 170..170 "partition(P26_C70)"
CHARGE 161..161 "partition(P25_C80)"
我定位了206号dump是归属分区P30_C30的,197~199号dump是归属分区P29_C40的
先来看看数据导入前的表空间。
Total MB Free MB Used MB
------------ ---------- -----------
sum 1,490,261 585,573 904,688
数据导入15分钟后。超大的memo表竟然都快完成了!
############################################################
CHARGE_REL 152 of TOTAL 222 completed, |--processing... from split_par_9_appendata.log
MEMO 401 of TOTAL 446 completed, |--processing... from split_par_9_appendata.log
CHARGE 175 of TOTAL 322 completed, |--processing... from split_par_9_appendata.log
另外两个大表也在继续。稍候,大部分的进程开始处理另外2个大表。
又过了10分钟
############################################################
CHARGE_REL 160 of TOTAL 222 completed, |--processing... from split_par_9_appendata.log
MEMO 405 of TOTAL 446 completed, |--processing... from split_par_9_appendata.log
CHARGE 224 of TOTAL 322 completed, |--processing... from split_par_9_appendata.log
表空间的信息如下:
Total MB Free MB Used MB
------------ ---------- -----------
sum 1,490,261 380,798 1,109,463
短时间内消耗了200g,速度提升不少。