1. 首页
  2. IT资讯

将一个非分区表转换为分区表

/*功能:将一个非分区表转换为分区表基本思路:SST_DAY_TOTAL是(数据量上百万条,列比较多)一个非分区表,此时创建一个与SST_DAY_TOTAL同结构的分区表zhaozhenlong_partition,维护数据,删除SST_DAY_TOTAL表,将zhaozhenlong_partition更名为SST_DAY_TOTA,删除zhaozhenlong_partition*/–具体步骤:–1、查询非分区表数据selectto_char(rpt_date,’yyyymm’),count(*)fromSST_DAY_TOTALgroupbyto_char(rpt_date,’yyyymm’)orderbyto_char(RPT_DATE,’yyyymm’);

–2、创建分区表(结构和非分区表SST_DAY_TOTAL相同)createtablezhaozhenlong_partition(GAS_IDVARCHAR2(12)notnull,RPT_DATEDATEnotnull,INV_NOVARCHAR2(12),……)tablespacesdlgpartitionbyrange(rpt_date)(partitionrestvalueslessthan(maxvalue))

–3、交换数据(数据从非分区表到分区表)altertablezhaozhenlong_partitionexchangepartitionrestwithtableSST_DAY_TOTAL;

–4、查询分区表数据selectto_char(RPT_DATE,’mm-yyyy’),count(*)fromSST_DAY_TOTALgroupbyto_char(RPT_DATE,’mm-yyyy’);

–辅助脚本/*select’altertablezhaozhenlong_partitionsplitpartitionrestat(to_date(”’||to_char(RPT_DATE,’yyyymm’)||”’,”yyyymm”))into(partitionp’||to_char(RPT_DATE,’yyyymm’)||’,partitionrest);’fromzhaozhenlong_partitiongroupbyto_char(RPT_DATE,’yyyymm’)orderbyto_char(RPT_DATE,’yyyymm’)*/

–5、对rest分区进行拆分altertablezhaozhenlong_partitionsplitpartitionrestat(to_date(‘200608′,’yyyymm’))into(partitionp200608,partitionrest);altertablezhaozhenlong_partitionsplitpartitionrestat(to_date(‘200609′,’yyyymm’))into(partitionp200609,partitionrest);altertablezhaozhenlong_partitionsplitpartitionrestat(to_date(‘200610′,’yyyymm’))into(partitionp200610,partitionrest);altertablezhaozhenlong_partitionsplitpartitionrestat(to_date(‘200611′,’yyyymm’))into(partitionp200611,partitionrest);altertablezhaozhenlong_partitionsplitpartitionrestat(to_date(‘200612′,’yyyymm’))into(partitionp200612,partitionrest);

–6、删除非分区表droptableSST_DAY_TOTAL

–7、将分区表重命名为原非分区表名altertablezhaozhenlong_partitionrenametoSST_DAY_TOTAL

–8、删除中间处理过程的分区表droptablezhaozhenlong_partition

________________________________

–补充如果已存在分区表,要将某未分区表(与已分区表结构完全相同)加入到分区中:

altertableSST_DAY_TOTALexchangepartitionp200608withtablezhaozhenlong_1;altertableSST_DAY_TOTALexchangepartitionp200609withtablezhaozhenlong_2;

如果zhaozhenlong_2不符合分区规则,则会报错,则需要指定withoutvalidation来禁止检查altertableSST_DAY_TOTALexchangepartitionp200609withtablezhaozhenlong_2withoutvalidation;

当然,如果你确认zhaozhenlong_1表中的数据是符合分区规则的,那指定withoutvalidation之后,不会对zhaozhenlong_1进行全表扫描,则会缩短exchange时间

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-417534/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/194904.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code