生产库中某些大表的分区异常,需要对现有表进行在线操作,以添加丢失分区,因为是生产库,还是谨慎点好,今天有空,针对add&split分区对global&local索引的影响进行了测试,测试版本为oracle11.2.0.4,过程如下:

首先,创建分区表:

CREATE TABLE TP1
(
C1 INT PRIMARY KEY,
C2 VARCHAR2(10),
C3 CHAR(10) 
)                       
partition by range (c1)

partition p1 values less than(6),
partition p2 values less than(11),
partition p3 values less than(16),
partition maxvalue values less than(maxvalue));
但在add partition时遇到了问题,报错如下:

ORA-14074: 分区界限必须调整为高于最后一个分区界限

根本原因是存在最后maxvalue分区,于是,再创建一个不带maxvalue的分区表:

CREATE TABLE TP2
(
C1 INT PRIMARY KEY,
C2 VARCHAR2(10),
C3 CHAR(10) 
)                       
partition by range (c1)

partition p1 values less than(6),
partition p2 values less than(11),
partition p3 values less than(16));

然后,创建local索引:

create index idx_tp2_c2 on tp2(c2) local;

因为主键就是个global索引,所以,不需要另外创建global index,我们insert数据:

insert into tp2 values(1,'aaa','aaa');
insert into tp2 values(2,'aaa','aaa');
insert into tp2 values(3,'aaa','aaa');
insert into tp2 values(4,'aaa','aaa');
insert into tp2 values(5,'aaa','aaa');
insert into tp2 values(6,'aaa','aaa');
insert into tp2 values(7,'aaa','aaa');
insert into tp2 values(8,'aaa','aaa');
insert into tp2 values(9,'aaa','aaa');
insert into tp2 values(10,'aaa','aaa');
insert into tp2 values(11,'aaa','aaa');
insert into tp2 values(12,'aaa','aaa');
insert into tp2 values(13,'aaa','aaa');
insert into tp2 values(14,'aaa','aaa');
insert into tp2 values(15,'aaa','aaa');
commit;

我们add partition:

ALTER TABLE tp2 add PARTITION p10 values less than(51);

add partition成功,因为不存在maxvalue分区。检查主键和索引:

select index_name,status from user_indexes where table_name='TP2';

select index_name,partition_name,status from user_ind_partitions where index_name='IDX_TP2_C2' order by partition_name;

经检查,add partition对global和local索引均无影响,如下图:

那么,split partition:

ALTER TABLE tp2 SPLIT PARTITION p1 AT (3) INTO (PARTITION p1, PARTITION p13);

发现split分区会导致golbal索引不可用,而local索引的相应分区也不可用,如下图:

重建主键索引:

ALTER INDEX SYS_C0027745 REBUILD ONLINE;

重建主键索引后,global索引及local索引状态如下:

为split分区命令添加update indexes选项:

ALTER TABLE tp2 SPLIT PARTITION p2 AT (8) INTO (PARTITION p2, PARTITION p28) update indexes;

检查本次split分区对global&local索引均无影响,如下图:

rebuild local索引不可用的分区:

alter index idx_tp2_c2 rebuild partition p1 online;

alter index idx_tp2_c2 rebuild partition p13 online;

检查local索引状态如下:

以上为测试过程和结果,记录于此,以便今后其他同学和自己参考。

oracle11.2中分区功能测试之add&split partition对global&local index的影响的更多相关文章

  1. Oracle12c中分区(Partition)新特性之TRUNCATEPARTITION和EXCHANGE PARTITION级联功能

    TRUNCATE [SUB]PARTITION和EXCHANGE [SUB]PARTITION命令如今可以包括CASCADE子句,从而允许参照分区表向下级联这些操作.为确保该选项正常,相关外键也必须包 ...

  2. Oracle12.2中新增的分区功能

    Oracle 12.2已经发布一段时间,公网上也可以下载试用.针对12.2,partitioning(分区)也有了不少增强. 自动列表分区 多字段列表分区 只读分区 分区维护时允许过滤 在线转换非分区 ...

  3. mysql分区功能详细介绍,以及实例

    一,什么是数据库分区 前段时间写过一篇关于mysql分表的 的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下 ...

  4. mysql数据库分区功能及实例详解

    分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解   一,什么是数据库分区 前段时间写过一篇 ...

  5. mysql分区功能(三个文件储存一张表)(分区作用)(分区方式)

    mysql分区功能(三个文件储存一张表)(分区作用)(分区方式) 一.总结 1.mysql数据表的存储方式(三个文件储存一张表): 一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放 ...

  6. Qt调用dll中的功能函数

    声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的.并且用我前两篇有关DLL文章里面的方法,从dll中导出了导入库(.lib)文件,dll中有两个函数,原型如下:   ...

  7. Dockerfile 中的 COPY 与 ADD 命令

    Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景. Build 上下文的概念 在使用 docker ...

  8. 大数据系列之数据仓库Hive中分区Partition如何使用

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  9. 细聊MySQL的分区功能

    此篇主要介绍下MySQL的分区功能.我们分别从分区的概念.分区对于MySQL应用的优点.分区的类别及设置来和大家一起探讨下MySQL的分区. 什么是分区? MySQL在未启用分区功能时,数据库的单个表 ...

随机推荐

  1. 模拟select选中option的效果

    大致情况如下:网页上有一个表单,表单中有一个select类型的控件,我要选择option后,表单相对应的input部分会option自动填充选中数据. 我想要的是:实现一个网页上的效果,在这个页面被打 ...

  2. 将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程

    授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限等等. 一.用户权限模型 为实现一个较为灵活的用户权限数据模 ...

  3. nginx日志切割配置

    编辑虚拟主机文件 /etc/nginx/conf.d/default.conf  在server段添加如下配置 if ($time_iso8601 ~ "^(\d{4})-(\d{2})-( ...

  4. 爬虫(BeautifulSoup--select--class的选择)

    <div class="item name" title="中央公园"> <a href="/Attraction_Review-g ...

  5. 解决Oracle登录时出现无法处理服务名问题

    1.首先找到客户端的tnsnames.ora文件,打开看看里面有没有配置相应的服务器名,服务器名就是你的数据库名: 2.如果有相应的服务器名,那就检查一下配置信息是否错误,如果没有就添加: 3.配置信 ...

  6. 分享:docker swarm集群搭建

    [Y_H]实践原创 三台虚拟机:1台centOS , 2台ubuntu.   网上有用docker-machine创建虚拟机做的例子.   这里直接用VMware创建这三台虚拟机,然后用xshell连 ...

  7. VS2017调试器无法附加到IIS进程(w3wp.exe)

    问题描述: 当使用VS2017-> 调试->附加到进程来调试IIS进程(w3wp.exe)时,报错"无法附加到进程,已附加了一个调试器" 为了解决这个问题花了不少时间, ...

  8. 201621123062《java程序设计》第14周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 思维导图: 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的 ...

  9. 18-TypeScript模板方法模式

    在有些情况下,一个功能在基础功能上是不会变的,算法的基本骨架也是确定的,但是在某些场景下算法的具体实现有些差异.应对这种问题,可以采用模板方法模式: abstract class Salary{ ab ...

  10. 【问题解决】jhipster-registry-master空白页

    问题概述: 刚从github拉下来的jhipster-registry-master直接运行,访问http://localhost:8761会发现会空白页,但是网页的title显示正常,本文目的是解决 ...