暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分区表新增分区

酒负盛名的笔记 2018-01-10
326

  又跨年了,作为DBA的第一反映是以时间作为分区键的分区表是否已经创建子分区。如果2018年的子分区没有创建,那么假如在11g以上的环境中,使用了interval分区技术,也不用担心。但如果没有采用interval分区(某些系统要求365*24,手动新增子分区可以提前校验,避免事故发生),那么当2018年数据插入的时候,会立刻报错,影响业务。

  添加范围分区的界限应该高于最后一个分区的上限;如果要在中间的分区或者MAX分区上添加新的分区, 应该使用拆分(split)分区。通过实验验证:

1.首先搭建环境,建立分区表

conn as sysdba

conn sh/sh

--无MAX分区

--MAX分区

2.给无MAX分区添加新分区

  添加分区前,分区表SALES_RANGE_1的分区情况

  添加两个分区,一个为2018年分区,一个为2019年分区:(注意语句:分区变更时,如果没有指定 UPDATE INDEXES,则相关分区的本地索引、及全局索引都将被标记为UNUSABLE,必须重建才能生效,所以加上update indexes很重要)

  查看分区结果:

  sh用户默认表空间

  (注意:sales_2018分区存储位置在sh用户的默认表空间里,而sales_2019存储位置在DW01,这里有坑,在生产环境一定要注意用类似sales_2019分区的语句进行添加分区。删除子分区语句:ALTER TABLE 表名 DROP PARTITION 子分区名)

3.给MAX分区添加新分区

  如果给MAX分区按照上面的方法进行分区添加,那就会遇到错误。

  oerr工具查看

  此时,需要对MAX分区进行拆分

  查看结果:


   总结:添加范围分区的界限应该高于最后一个分区的上限;如果要在中间的分区或者MAX分区上添加新的分区, 应该使用拆分(split)分区。分区变更时,如果没有指定 UPDATE INDEXES,则相关分区的本地索引、及全局索引都将被标记为UNUSABLE,必须重建才能生效,所以后面必须加上 UPDATE INDEXES。添加分区时,要注意指定添加分区的表空间,避免踩坑。


文章转载自酒负盛名的笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论