要重新定义大量分区表。



首先看 SQL Reference 大致了解了 Oracle 的分区修改操作。Alter table 语句的alter_table_partitioning 子句可以分为以下几类:



全局:modify_table_default_attrs

分区:Modify, Move, Add, Coalesce, Drop, Rename, Truncate, Split, Merge, Exchange

子分区:Set Template, Modify, Move, Drop, Rename, Truncate, Split, Merge, Exchange



    Move: 将分区、子分区移动到新的表空间。

    Coalesce: 只适用于 hash 分区的表。作用是减少一个 hash 分区;方法是将最后一个分区的数据分布到前面的分区中,再删除此分区。

    Merge: 将两个分区、子分区合并为一个新分区,并删除两个旧分区。Merge 可以合并 List 和相邻的 Range 分区,只能合并属于同一分区的 List 子分区。

    Exchange: 交换表分区。



我要做的是添加 List 分区、List 子分区、修改子分区模板。



1. 添加 List 分区



如果表使用 List 分区,且创建了 Default 分区,则此表上无法执行 Add 分区操作,必须 Split 此表的 Default 分区。Alter table 语句提供了 split_table_partition 子句。此子句的功能是创建两个新分区(新建 Segment,可以指定新的物理属性),移动 partition 指定的分区的数据,满足 values 条件的放入 into 的第一个分区,其余的放入第二个分区,之后原分区。Oracle 将自动 Split Local Index,因此需要重建索引。



下面的语句为表 A_CHECKBILL_MONTH 添加了一个分区 P_6230000,将原有 P_OTHERS 分区中 COMPANY_ID = 6230000 的数据存储到新分区 P_6230000 ,剩余数据存储到 P_OTHERS。

alter table A_CHECKBILL_MONTH
split partition P_OTHERS values (6230000) into (
partition P_6230000,
partition P_OTHERS
)
update indexes;

2. 添加 List 子分区:



Oracle 没有提供子分区 Add 操作,因此添加子分区必须使用 Split 操作。Alter table 语句提供了 split_table_subpartition 子句,此子句的功能是将一个 List 子分区 Split 为两个。原理跟 List 分区类似。



下面的语句为表 A_BATCH_TURNDAYS 添加了一个子分区 P_6230000,将原有 P_OTHERS 分区中 COMPANY_ID = 6230000 的数据存储到新分区 P_6230000 ,剩余数据存储到 P_OTHERS。

alter table A_BATCH_TURNDAYS
split subpartition P_200401_SP_OTHERS values (6230000) into (
subpartition P_200401_SP_6230000,
subpartition P_200401_SP_OTHERS
)
update indexes;

3. 修改子分区模板:



Alter table 语句的 set_subpartition_template 子句,作用是重新定义(或新建、清除)复合分区表的 list 或 hash 子分区模板。执行 set_subpartition_template 操作后,表中已创建的子分区不受影响,本地、全局索引也不受影响。在此之后的分区操作(例如 add、merge 操作)将使用新的模板。



以下语句更新表 A_CHECKBILL_DAY 的子分区模板

alter table A_CHECKBILL_DAY
set subpartition template (
subpartition SP_2000000 values (2000000),
subpartition SP_6280000 values (6280000),
subpartition SP_6010000 values (6010000),
subpartition SP_6020500 values (6020500),
subpartition SP_6050000 values (6050000),
subpartition SP_6070000 values (6070000),
subpartition SP_6080400 values (6080400),
subpartition SP_6090000 values (6090000),
subpartition SP_6110000 values (6110000),
subpartition SP_6170000 values (6170000),
subpartition SP_6200000 values (6200000),
subpartition SP_6300000 values (6300000),
subpartition SP_6250000 values (6250000),
subpartition SP_6130000 values (6130000),
subpartition SP_6140000 values (6140000),
subpartition SP_6160000 values (6160000),
subpartition SP_6180000 values (6180000),
subpartition SP_6230000 values (6230000),
subpartition SP_OTHERS values (default)
);

Oracle子分区(sub partition)操作的更多相关文章

  1. Oracle 表分区partition(http://love-flying-snow.iteye.com/blog/573303)

    http://www.jb51.net/article/44959.htm Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库表中某一字段的值的范围来划 ...

  2. 转:Oracle表分区

    Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: 1. create table graderecord 2. ...

  3. Oracle表分区[转]

    废话少说,直接讲分区语法. Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: create table gra ...

  4. Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区(转载)

    一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: 1 create table graderecord 2 ( 3 sno varchar2(10), 4 sname varcha ...

  5. Oracle 12C 新特性之表分区或子分区的在线迁移

    Oracle 12c 中迁移表分区或子分区到不同的表空间不再需要复杂的过程.与之前版本中未分区表进行在线迁移类似,表分区或子分区可以在线或是离线迁移至一个不同的表空间.当指定了 ONLINE 语句,所 ...

  6. Oracle 表分区(Partition)

    表分区功能能够改善应用程序性能,提高数据库可管理性和可用性,是数据库管理非常关键的技术.数据库通过使用分区提高查询性能,简化日常管理维护工作. 1 分区优点 1) 减少维护工作量,独立管理每个表分区比 ...

  7. oracle表分区的,分区操作,分区查询,子分区查询

    一.摘要 有关表分区的一些维护性操作: 注:分区根据具体情况选择. 表分区有以下优点: 1.数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高. 2.数据修剪:保存历史数据非常的理想. ...

  8. [Oracle][Partition][Controlfile]Partition 操作是否和 Controlfile有关?

    Partition 操作是否和 Controlfile有关? 通过实验来判断: 对比 Partition 前后的操作,看看controlfile 的dump 信息中是否有记录,结果发现没有记录在 co ...

  9. oracle 分区表(子分区)收缩笔记

    思路1.首先移动子分区到别的表空间.2.收缩数据文件.3.再把子分区移回原表空间. ---------------------------------------------生成发送报告移动子分区语句 ...

随机推荐

  1. c语言实践 1/1-1/2+1/3-1/4+...

    其实这个题目和上面那个是一样的 /* 1/1-1/2+1/3-1/4+...1/n; */ int n = 1; double sum = 0; double frac = 0; int i = 1; ...

  2. Linux ekho

    一.简介 Ekho(余音)是一个免费.开源的中文语音合成软件.它目前支持粤语.普通话(国语).诏安客语.藏语.雅言(中国古代通用语)和韩语(试验中),英文则通过Festival间接实现.Ekho支持L ...

  3. [GO]append的扩容

    package main import "fmt" func main() { s := make([], ) oldcap := cap(s) ; i < ; i++{ s ...

  4. 第01章-Spring之旅

    一.简化Java开发 1. Spring的主要特性 依赖注入DI和面向切面编程AOP. 2. 关键策略 轻量级和最小侵入性编程:POJO 松耦合:DI和AOP 声明式编程:切面和惯例 减少样板式代码: ...

  5. Network in Network(NiN)

    - Mlpconv layer with "micronetwork" with each conv layer to compute more abstract features ...

  6. 编写高质量代码改善C#程序的157个建议——建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的

    建议51:具有可释放字段的类型或拥有本机资源的类型应该是可释放的 在建议50中,我们将C#中的类型分为:普通类型和继承了IDisposable接口的非普通类型.非普通类型除了包含那些托管资源的类型外, ...

  7. Bitmap压缩到指定尺寸大小,获取圆角、圆形图片

    /** * 使用Matrix将Bitmap压缩到指定大小 * @param bitmap * @param w * @param h * @return */ public static Bitmap ...

  8. Dapper ORM

    参考地址:https://www.cnblogs.com/lunawzh/p/6607116.html 1.连接语句 var conn = new SqlConnection(Configuratio ...

  9. Persistent and Transient Data Structures in Clojure

    此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近在项目中用到了Transient数据结构,使用该数据结构对程序执行效率会有一定的提高.刚刚接触Trans ...

  10. 汇编Shellcode的技巧

    汇编Shellcode的技巧 来源  https://www.4hou.com/technology/3893.html 本文参考来源于pentest 我们在上一篇提到要要自定义shellcode,不 ...