何剑敏 Oracle ACS华南区售后团队,首席技术工程师
曾供职于中国联通信息计费部、卓望数码、IBM。现供职于Oracle ACS华南区售后团队,首席技术工程师。多年从事一线的数据库运维工作,有丰富项目经验、维护经验和调优经验,专注于数据库的整体运维。
编者:Oracle的分区技术一直是对数据分而治之的重要手段,在12.2中,更加由这一技术演化出Sharding的新特性,那么回归分区技术本身,我们来看看在这一版本中,又有哪些分区功能上的增强。
Oracle database 12.2 有不少分区加强的特性,主要的特性如下列表:
一下通过几个举例列举几个分区特性。
1. multi-column list partition - 多列列表分区
支持多列组合作为列表分区的分区键值,最多支持16个列
2. auto-list partition - 自动的列表分区
当列表项数据到来之时,分区相应自动创建
3. interval subpartition
这是Interval分区的进一步扩展,子分区支持自动间隔的创建。
4.online DDL for partition
很多DDL操作支持在线进行,比如在线将表修改为分区表:
注 1:统计信息会收集
注 2:从10046的trace看,似乎是临时创建了 SYS_JOURNAL_ ,SYS_RMTAB$$_H ,SYS_RMTAB$$_I 以及上面的索引,在进行捣鼓,另外还有一堆数据字典的更新。没有看到类似 dbms_redefinition 在线重定义的功能的介入,没有看到在线重定义时关于物化视图 create snaphot,和 MLOG$_XXX 这样的关键字。
5. Filtered Partition on Maintenance Operations
在 MOVE,SPLIT,MERGE partition 的时候,可以进行过滤,这极大简化了分区维护操作:
注1:where 条件后面的字段千万不能写错,不然数据全没了。如错写成 INCLUDING ROWS WHERE channel = ‘CHINA’,MOVE 之后则分区4的数据全没了。因为 including row 表示留下的数据,而 channel = ‘CHINA’ 这样的数据一条都没有,所以就清空了分区。
6. Read only partition
只读分区可以将特定分区设置为只读