本节将介绍如何手动添加新的分区到分区表,并解释了为什么分区不能被指定添加到大部分分区索引。

添加分区

本节将介绍如何手动添加新的分区到分区表,并解释了为什么分区不能被指定添加到大部分分区索引。

向范围分区表添加一个分区

使用ALTER TABLE ... ADD PARTITION语句来添加一个新的分区到“高”端(表中最后一个分区的’HighValue’)。要在开始或在表的中间添加一个分区,使用SPLIT PARTITION子句。

例如,考虑这么一张表,sales,除了包含当前月份的数据,还包含之前12个月份的数据。 1999年1月1日,你增加一个分区月份,存储在表空间TSX。

ALTER TABLE sales

ADD PARTITION jan99 VALUES LESS THAN ( '01-FEB-1999' )

TABLESPACE tsx;

另外,和范围分区表相关的本地索引和全局索引仍然可用。

向哈希分区表添加一个分区

当你向一个哈希分区表添加分区时,数据库会对一个现有分区(由数据库选择)的所有数据行按照哈希函数进行重新排列,并将数据填充到新增的分区中。因此,如果表非空的话,添加一个哈希分区可能比较费时。

下面的语句显示了向scubagear表添加一个哈希分区的两种方式。选择第一条语句来添加哈希分区,分区名称由系统自动生成,并且分区存放在默认表空间。第二条语句同样也是增加一个分区,但是,明确指定了分区名称p_named和表空间名称gear5。

ALTER TABLE scubagear ADD PARTITION;

ALTER TABLE scubagear

ADD PARTITION p_named TABLESPACE gear5;

索引可能被标识为UNUSABLE,如下表所述:

表类型

索引操作

普通表(堆表)

索引组织表

对于本地索引,和普通表的处理方式一样。

所有全局索引保持可用;

向列表分区表添加一个分区

下面的语句说明了如何向列表分区表添加一个新的分区,在示例中,指定了新增分区的存储属性和NOLOGGING属性。

ALTER TABLE q1_sales_by_region

ADD PARTITION q1_nonmainland VALUES ('HI', 'PR')

STORAGE (INITIAL 20K NEXT 20K) TABLESPACE tbs_3

NOLOGGING;

描述新增分区的集合内的所有值不能存在于表的其他分区。

如果一个列表分区表包含默认分区,那么你不能给它添加新的分区,但是你可以拆分默认分区。通过这样做,你不仅有效地创建了一个你指定值的新分区,并且第二个分区保留为默认分区。

与列表分区表相关的本地和全局索引均保持可用。

向间隔分区表添加一个分区

你不能显式地向间隔分区表中添加一个分区,除非你西安锁定分区,这将触发创建分区。当该间隔的数据被插入时,数据库会自动创建一个间隔分区。一般情况下,只有在分区交换负载场景中,你才必须显式创建间隔分区。

要改变将来分区的间隔,我们可以在ALTER TABLE中使用SET INTERVAL子句。该子句将会改变超过当前最高边界的所有物化间隔分区的间隔。

你也可以使用SET INTERVAL子句来迁移一个存在的范围分区表或者符合范围分区表到间隔分区表或复合间隔分区表。如果要禁止创建新的分区,有效的恢复回一个范围分区表,在SET INTERVAL子句中指定一个空值即可。已创建的间隔分区将被转化为范围分区,对应的HighValue为当前最大值。

如果要提高日期的间隔范围,你必须确保你在新分区的相应边界。例如,在你的日常间隔分区表transactions的最高间隔分区边界是January 30, 2007,你想把间隔修改为一个月,那么下面的语句将会导致一个错误:

ALTER TABLE transactions SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH');

ORA-14767: Cannot specify this interval with existing high bounds

你必须创建另外一个以February 1, 2007为边界的日常间隔分区,这样才能成功修改间隔。

LOCK TABLE transactions PARTITION FOR(TO_DATE('31-JAN-2007','dd-MON-yyyy') IN SHARE MODE;

ALTER TABLE transactions SET INTERVAL (NUMTOYMINTERVAL(1,'MONTH');

间隔分区表的第一个分区其实是一个范围分区,你可以拆分范围分区,在间隔分区表中添加更多的分区。

如果要禁用transactions表的间隔分区,使用以下语句:

ALTER TABLE transactions SET INTERVAL ();

向哈希复合分区表添加分区

可以在分区和哈希子分区两个级别来添加分区。

添加一个分区

向一个【范围|列表|间隔】-哈希复合分区表添加一个分区如前所述。对于一个间隔-哈希分区表,间隔分区是自动创建的。你可以指定SUBPARTITIONS子句来指定子分区的数量,或者指定SUBPARTITION子句来命名具体子分区。如果没有指定SUBPARTITIONS子句或者SUBPARTITION子句,那么分区将继承表级别的默认属性。对于一个间隔-哈希分区表,你只能向范围或者已经物化的间隔分区添加子分区。

这个例子向一个范围-哈希分区表sales添加了一个范围分区q1_2000,该分区用来存储2000年第一季度的数据。其中,有8个子分区存储在tbs5表空间。子分区不能显式使用表压缩。在这个例子中,子分区会继承分区级别的压缩属性并以压缩形式存储。

ALTER TABLE sales ADD PARTITION q1_2000

VALUES LESS THAN (2000, 04, 01) COMPRESS

SUBPARTITIONS 8 STORE IN tbs5;

添加一个子分区

你可以在ALTER TABLE语句中使用MODIFY PARTITION ... ADD SUBPARTITION子句来向一个【范围|列表|间隔】-哈希复合分区表添加一个哈希子分区。数据库将会根据哈希函数,对同一分区内的一个已有子分区的所有数据行重新进行哈希排列,并将其中部分数据填充到新增子分区中。对于一个间隔-哈希分区表,你只能向范围分区或者已经物化的间隔分区添加子分区。

在下面的示例中,一个存储在us1表空间的新哈希子分区us_loc5, 被添加到ping表的范围分区locations_us中。

ALTER TABLE ping MODIFY PARTITION locations_us

ADD SUBPARTITION us_locs5 TABLESPACE us1;

除非你指定了UPDATE INDEXES子句,否则,必须重建和新增子分区以及重新进行哈希排列子分区相关的索引子分区。

向列表复合分区表添加分区

可以在分区和列表子分区两个级别来添加分区。

添加一个分区

oracle11g分区表维护,Oracle11g维护分区(一)AddingPartitions相关推荐

  1. oracle删除建分区索引,Oracle分区表之创建维护分区表索引的详细步骤

    分区索引分为本地(local index)索引和全局索引(global index).局部索引比全局索引容易管理, 而全局索引比较快.与索引有关的表:dba_part_indexes 分区索引的概要统 ...

  2. Oracle分区表之创建维护分区表索引的详细步骤

    墨墨导读:本文来自墨天轮用户投稿,详细描述Oracle分区表之创建维护分区表索引的步骤. 分区索引分为本地(local index)索引和全局索引(global index).局部索引比全局索引容易管 ...

  3. 完全卸载oracle11g教程、Oracle11g的卸载方法和步骤

    原文地址:完全卸载oracle11g教程.Oracle11g的卸载方法和步骤 Oracle 11g是甲骨文公司在2007年年7月12日推出的最新数据库软件,Oracle 11g有400多项功能,经过了 ...

  4. linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...

    linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...

  5. 硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程...

    filex的文件系统看的云里雾里,还是先总结下FAT的一些基本知识吧. 硬盘结构 硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0 ...

  6. 光与夜之恋服务器维护中,光与夜之恋7月16日停服维护说明 维护详情一览

    光与夜之恋7月16日停服维护说明维护详情一览.光与夜之恋7月16日停服维护更新了哪些内容?我们去了解一下. [7月16日停服维护说明] 亲爱的设计师: 为了给设计师们提供更好的游戏体验,光启市将于7月 ...

  7. 修改主分区表给U盘分区

    最近在学习文件系统,突发奇想想给U盘分个区,发现用DiskGenius分出两Fat32的主分区发现只能显示一个 后来在百度知道找到一个比较靠谱的答案--windows下U盘只能显示第一个分区(原理没说 ...

  8. 硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区

    filex的文件系统看的云里雾里,还是先总结下FAT的一些基本知识吧. 硬盘结构 硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0 ...

  9. 自动化测试如何维护,维护过程中遇到哪些问题?

    目录 前言 需要维护的测试类型 测试失败时 依赖关系的变化 自动化测试维护的问题 开发如何支持测试自动化维护 及时维护测试自动化 前言 毫无疑问,自动化测试已改变了软件开发的工作方式.如果不是Sele ...

最新文章

  1. 常见的“公共标志和说明”英文表达
  2. mysql事务并发控制_mysql事务和多版本并发控制详解
  3. mormot解析天气预报JSON数据
  4. php ob_flush 和flush
  5. P2167 [SDOI2009]Bill的挑战
  6. 【转】Path.Combine (合并两个路径字符串)方法的一些使用细节
  7. mysql 优化rand_mysql优化--巧用rand(),with rollup,help__update2014.1.13
  8. ubuntu和centos 编译安装nginx及常用命令
  9. powershell_PowerShell图表功能概述
  10. java堆是gc管理_JVM内存管理及GC机制
  11. 新华三:竞奔不息,永立潮头
  12. 最佳的75个安全工具工具
  13. 计算机基本办公软件应用技能有哪些,办公人员应掌握哪些办公软件技能
  14. SlideBox 间隔滚动效果
  15. 【翻译】Computer Vision for Autonomous Vehicles:Problems,Datasets and State-of-Art
  16. Android项目接入魔窗SDK自定义使用
  17. 1 年原创 150+ 篇,这位前阿里 P9 牛批!
  18. (转)U-Boot启动过程--详细版的完全分析
  19. css 矩形切角,特殊border的样式 -- CSS3实现三种切角效果
  20. mysql 查询练习——计算总订单价格大于100的订单号和总订单价格

热门文章

  1. php二分法实力,php常见的几种排序以及二分法查找
  2. java模拟浏览器http请求_java使用HttpClient模拟浏览器请求
  3. java判断输入值是否在数组_java判断特定值是否在数组中的方法
  4. C++面试题-面向对象-构造函数和析构函数
  5. 16、Flutter Widget - PageView;
  6. linux下安装apache + subversionSVN_Subversion
  7. 14、DNS正反向解析、主从复制、子域授权、区域转发 学习笔记
  8. 要兼容ie时注意事项
  9. 【原创】开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式
  10. MVC的Filter应用小结