本文参考来自作者:蓝紫

详细内容请阅读原文 : http://www.cnblogs.com/lanzi/archive/2013/01/24/2875838.html

在oracle 11.2环境下测试

--drop table tab_a purge;

--创建分区表

create table tab_a

(

r_id number(19) primary key,

r_name varchar2(300),

r_pat  integer

)

partition by list (r_pat)

(

partition p_value1 values(1),

partition p_value2 values(2),

partition p_value3 values(3),

partition p_def values(default)

)

;

--创建普遍表

create table tab_b as select * from tab_a;

--创建主键

alter table tab_b add primary key(r_id);

---插入测试数据

insert into tab_a

(r_id,r_name,r_pat)

select a.OBJECT_ID,a.OBJECT_NAME,1 from all_objects a;

insert into tab_a select  99199999,'test',1 from dual;

commit;

--测试分区交换

----1.分区表,创建了主键索引,普通表没有创建,则

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation

--ORA-14097: ALTER TABLE EXCHANGE PARTITION 中的列类型或大小不匹配

---2.分区表,创建了主键索引,普通表也创建全局索引则

alter table tab_b add primary key(r_id);

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation update global indexes;

--ORA-14098: ALTER TABLE EXCHANGE PARTITION 中的表索引不匹配

--3.分区表,创建了主键索引,普通表也创建主键索引则,且不包含索引交换

alter table tab_a exchange partition p_value1 with table tab_b /*including indexes*/ without validation /*update global indexes*/;

--成功---

--但是 insert into tab_a select  99199999,'test',1 from dual;

--ORA-01502: 索引 'SCOTT.SYS_C0012090' 或这类索引的分区处于不可用状态

---这时需要重建索引才能更新数据 ----

alter index SCOTT.SYS_C0012090 rebuild;

insert into tab_a select  99399999,'test',1 from dual;

---成功,,,

--4.分区表,创建了主键索引,普通表也创建主键索引则,且不包含索引交换,更新全局索引

truncate table tab_a;(/*清理分区不行*/)

insert into tab_a select  99199999,'test',1 from dual;

commit;

alter table tab_a exchange partition p_value1 with table tab_b /*including indexes*/ without validation update global indexes;

insert into tab_a select  99399999,'test',1 from dual;

---成功,,,

---但是更新普通表数据时,insert into tab_b select  99399999,'test',1 from dual 时,

--ORA-01502: 索引 'SCOTT.SYS_C0012090' 或这类索引的分区处于不可用状态

--------------------------

---5.在分区表的非分区表键上建立全局索引,普通表也建立全局索引

alter table tab_a drop primary key;

alter table tab_b drop primary key;

create index idx_a_r_id on tab_a(r_id) ;

create index idx_b_r_id on tab_b(r_id) ;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

-----ORA-14098: ALTER TABLE EXCHANGE PARTITION 中的表索引不匹配

---6.在分区表的非分区表键上建立全局索引,普通表不建立全局索引

drop index idx_b_r_id;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

---成功

-----7.在分区表的非分区键上建立本地索引,普通表不创建索引

drop index idx_a_r_id;

create index idx_a_r_id on tab_a(r_id) local;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

--ORA-14098: ALTER TABLE EXCHANGE PARTITION 中的表索引不匹配

-----8.在分区表的非分区键上建立本地索引,普通表创建索引

create index idx_b_r_id on tab_b(r_id) ;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

---成功

---9.在分区表的分区键上创建全局索引,普通表创建索引

drop index idx_a_r_id;

drop index idx_b_r_id;

create index idx_a_r_pat on tab_a(r_pat) ;

create index idx_b_r_pat on tab_b(r_pat) ;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

--ORA-14098: ALTER TABLE EXCHANGE PARTITION 中的表索引不匹配

---10.在分区表的分区键上创建全局索引,普通表不创建索引

drop index idx_a_r_pat;

drop index idx_b_r_pat;

create index idx_a_r_pat on tab_a(r_pat) ;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

---成功

-----11.在分区表的分区键上创建本地索引,普通表不创建索引

drop index idx_a_r_pat;

create index idx_a_r_pat on tab_a(r_pat) local;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

--ORA-14098: ALTER TABLE EXCHANGE PARTITION 中的表索引不匹配

----12.在分区表的分区键上创建本地索引,普通表创建索引

create index idx_b_r_pat on tab_b(r_pat) ;

alter table tab_a exchange partition p_value1 with table tab_b including indexes without validation;

---成功

---

---13.在分区表上的分区键和非分区键上创建全局索引,普通表上创建索引

drop index idx_a_r_id;

drop index idx_b_r_id;

create index idx_a_r_id on tab_a (r_id,r_pat);

create index idx_b_r_id on tab_b (r_id,r_pat);

alter table tab_a exchange partition p_value1 with table  tab_b including indexes without validation;

--报错

---14.在分区表上的分区键和非分区键上创建全局索引,普通表不创建索引

drop index idx_b_r_id;

alter table tab_a exchange partition p_value1 with table  tab_b including indexes without validation;

---成功

--15.在分区表上的分区键和非分区键上创建本地索引,普通表不创建索引

drop index idx_a_r_id;

create index idx_a_r_id on tab_a(r_id,r_pat) local;

alter table tab_a exchange partition p_value1 with table  tab_b including indexes without validation;

---报错

--16.在分区表上的分区键和非分区键上创建本地索引,普通表创建索引

create index idx_b_r_id on tab_b(r_id,r_pat) ;

alter table tab_a exchange partition p_value1 with table  tab_b including indexes without validation;

---成功

---17.在分区表上的分区键和非分区键上创建本地索引a,同时又在非分区键上创全局建索引b,普通表对应字段上都创建索引

drop index idx_a_r_id;

drop index idx_b_r_id;

create index idx_a_r_id on tab_a(r_id);

create index idx_b_r_id on tab_b(r_id);

create index idx_a_r_id_loc on tab_a(r_id,r_pat) local;

create index idx_b_r_id_loc on tab_b(r_id,r_pat) ;

alter table tab_a exchange partition p_value1 with table  tab_b including indexes without validation;

--报错

---18.在分区表上的分区键和非分区键上创建本地索引a,同时又在非分区键上创建全局索引b,

--在普通表对应的分区表上的本地索引a的字段上创建索引,同时分区表的全局索引对应的字段上不创建索引

drop index idx_a_r_id;

drop index idx_b_r_id;

drop index idx_a_r_id _loc;

drop index idx_b_r_id _loc;

create index idx_a_r_id on tab_a(r_id);

create index i idx_a_r_id_loc on tab_a (r_id,r_pat) local;

create index idx_b_r_id _loc on tab_b (r_id,r_pat) ;

alter table tab_a exchange partition p_value1 with table  tab_b including indexes without validation;

--成功

----以上创建普通表的索引时,都是跟分区表的字段相对应

oracle 入门笔记---分区表的分区交换的更多相关文章

  1. Oracle入门笔记 ——启动进阶

    1.2 进阶内容: 两个概念:SCN 和 检查点  1.SCN的定义:     system change member ,系统改变号,是数据库中非常重要的一个数据结构.     SCN 用以标示数据 ...

  2. Oracle入门笔记 ——启动

    参考教材<深入浅出Oracle> 兴趣 + 勤奋 + 坚持 + 方法 ≍ 成功 DBA生存之四大守则 1.备份重于一切: 2.三思而后行: 3.rm是危险的: 4.你来制定规范: 第一章: ...

  3. oracle 入门笔记--v$sql和v$sqlarea视图(转载)

    转载于作者:dbtan 原文链接:http://www.dbtan.com/2009/12/vsql-and-vsqlarea-view.html v$sql和v$sqlarea视图: 上文提到,v$ ...

  4. oracle分区交换技术

    交换分区的操作步骤如下: 1. 创建分区表t1,假设有2个分区,P1,P2.2. 创建基表t11存放P1规则的数据.3. 创建基表t12 存放P2规则的数据.4. 用基表t11和分区表T1的P1分区交 ...

  5. 【三思笔记】 全面学习Oracle分区表及分区索引

    [三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...

  6. Oracle用分区表分区交换做历史数据迁移

    一. 说明: OLTP库中有些表数据量大,且每月有持续的大量数据添加.因为历史数据在此库中不再做訪问,而是在另1个OLAP库中做分析.所以会对历史数据迁移至OLAP库中.对这样的历史数据迁移的操作.较 ...

  7. 深入学习Oracle分区表及分区索引

    关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: •       Range(范围)分区 •       Has ...

  8. oracle 分区表和分区索引

    很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...

  9. ORACLE分区表、分区索引详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...

随机推荐

  1. log4j-over-slf4j.jar AND slf4j-log4j12.jar 依赖冲突解决方案

    使用maven构建项目时,如果项目中有log4j的依赖,在运行程序时可能会出现在同一个类中log4j-over-slf4j.jar和 slf4j-log4j12.jar冲突的问题: 项目报错内容为: ...

  2. 介绍css 的3D 变换(3D transform)

    https://desandro.github.io/3dtransforms/docs/card-flip.html ---------------------------------------- ...

  3. 操作系统——IO管理

    一.IO系统结构 在计算机系统中.cpu要和很多外设进行交互.比方鼠标,键盘,网卡等等. 1.IO是怎样协调工作的那? (1)对于设备来说,其有两部分组成,一部分是机械部分,还有一部分是电子控制部分. ...

  4. android 获取手机信息工具类

    package com.yqy.yqy_listviewheadview; import android.content.Context; import android.telephony.Telep ...

  5. [Other]面试复习笔记:线程与进程复习

    基本概念 1. 进程的基本概念 线程(thread)是进程(processes)中某个单一顺序的控制流,也被称为轻量进程(lightweight processes).进程是表示资源分配的基本单位,又 ...

  6. Bootstrap4 网格系统

    学习注意事项 col-*-* 第一个*是设备类型,第二个*是控件宽度的占比 屏幕被等分为12,col-1宽度是1/12,col-6宽度是50%,col-12宽度是100% 给应用了class的elem ...

  7. 【UVa 10881】Piotr's Ants

    Piotr's Ants Porsition:Uva 10881 白书P9 中文改编题:[T^T][FJUT]第二届新生赛真S题地震了 "One thing is for certain: ...

  8. Cocos2dx如何引用第三方SO文件(Android NDK)

    做项目的过程中发现,引用第三方的库lib3rdsdk.so,当直接把lib3rdsdk.so放进armeabi文件夹里,会被删除掉.查网上资料都说的不全,经过实验,最简单的方法就是在jni下的andr ...

  9. 第八周 Leetcode 44. Wildcard Matching 水题 (HARD)

    Leetcode 44 实现一种类似正则表达式的字符串匹配功能. 复杂度要求不高, 调代码稍微费点劲.. 好像跟贪心也不太沾边, 总之 *把待匹配串分成若干个子串, 每一个子串尽量在模式串中靠前的部分 ...

  10. JeePlus:Maven 安装配置

    ylbtech-JeePlus:Maven 安装配置 1.返回顶部 1. Maven 安装配置 1 Maven 由于Maven依赖Java运行环境,因此使用Maven之前需要配置Java的运行环境.下 ...