问题背景:
在批量从ORACLE迁移到DWS的场景中,经常会结构迁移过程中,只迁移了表结构而没有根据ORACLE源库情况同时设置分布列字段的问题,这样会导致所有的表均自动使用第一个字段(可用作为分布列类型)作为默认分布列,但是很多时候使用默认第一个字段作为分布列会导致严重的数据倾斜,这个时候就需要批量修改分布列字段,但是DWS并不支持直接修改分布列字段,手工去修改每个表会非常麻烦。
Hash分布表的分布列设置不合理,会导致严重的数据倾斜,进而导致查询性能严重劣化,而且个别dn性能下降造成的短板效应会阻塞整个集群的计算能力明显下降。
从实际经验来看,对ORACLE进行整库迁移以后,使用源库的主键和唯一健作为分布列字段是一个比较好的方法,能够快速且相对比较合理的解决大部分表的数据倾斜问题。
首先,将ORACLE源库的主键或唯一健导出:
expdp数据泵导出索引方法:
expdp sys/passwd directory=data_dir dumpfile=expdp.dmp CONTENT=metadata_only include=index sqlfile=expidx.sql
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp include=index sqlfile=expidx.sql
生成导出SQL
-- CONNECT SYSTEM
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET E
最后
以上就是怕孤独网络最近收集整理的关于oracle 分布键,DWS使用技巧:根据ORACLE主键和唯一健批量修改DWS分布列字段的方法...的全部内容,更多相关oracle内容请搜索靠谱客的其他文章。
发表评论 取消回复