oracle 入门笔记---分区表的分区交换
本文参考来自作者:蓝紫
详细内容请阅读原文 : 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 入门笔记---分区表的分区交换的更多相关文章
- Oracle入门笔记 ——启动进阶
1.2 进阶内容: 两个概念:SCN 和 检查点 1.SCN的定义: system change member ,系统改变号,是数据库中非常重要的一个数据结构. SCN 用以标示数据 ...
- Oracle入门笔记 ——启动
参考教材<深入浅出Oracle> 兴趣 + 勤奋 + 坚持 + 方法 ≍ 成功 DBA生存之四大守则 1.备份重于一切: 2.三思而后行: 3.rm是危险的: 4.你来制定规范: 第一章: ...
- oracle 入门笔记--v$sql和v$sqlarea视图(转载)
转载于作者:dbtan 原文链接:http://www.dbtan.com/2009/12/vsql-and-vsqlarea-view.html v$sql和v$sqlarea视图: 上文提到,v$ ...
- oracle分区交换技术
交换分区的操作步骤如下: 1. 创建分区表t1,假设有2个分区,P1,P2.2. 创建基表t11存放P1规则的数据.3. 创建基表t12 存放P2规则的数据.4. 用基表t11和分区表T1的P1分区交 ...
- 【三思笔记】 全面学习Oracle分区表及分区索引
[三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...
- Oracle用分区表分区交换做历史数据迁移
一. 说明: OLTP库中有些表数据量大,且每月有持续的大量数据添加.因为历史数据在此库中不再做訪问,而是在另1个OLAP库中做分析.所以会对历史数据迁移至OLAP库中.对这样的历史数据迁移的操作.较 ...
- 深入学习Oracle分区表及分区索引
关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: • Range(范围)分区 • Has ...
- oracle 分区表和分区索引
很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...
- ORACLE分区表、分区索引详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...
随机推荐
- jQuery—— jQuery get方法+一般处理程序处理文本框内容
网上常常看到这种交互方式,当去一个站点注冊username的时候,假设文本框内没有输入数据,或者数据输入的内容格式不正确.就会将文本框变成红色来提示你输入的内容有误. 自己将这个文本框验证的方式改变了 ...
- Android--Activity在跳转时携带数据
首先看看两种传递方法演示样例:(一个简单姻缘计算器) 主Activity import android.os.Bundle; import android.app.Activity; import a ...
- 使用Scroller制作滑块开关ToggleButton
Scroller这个类在自己定义view中使用的还算是非常频繁的,和它名字一样.我们通常是在控制滑动的时候使用Scroller,以便让view滑动起来不那么生硬.在官方的解释上,Scroller是一个 ...
- python 三维坐标图
绘制3D柱状图,其数据格式为,二维数组或三维数组. from numpy import * file=open('C:\\Users\\jyjh\\Desktop\\count.txt','r') a ...
- c# Java 微信红包算法
int total_money_cent = 1000; // 红包总金额 单位:分 int total_people = 8; // 抢红包总人数 int[] array = new int[tot ...
- mongodb AND查询遇到多个index时候可能会做交集——和复合索引不同
关于MongoDB中索引文档的一个问题? - To illustrate index intersection, consider a collection orders that has the f ...
- POJ1279 Art Gallery 多边形的核
POJ1279 给一个多边形 求它的核的面积 所谓多边形的核 是多边形中的一个点集 满足其中的点与多边形边上的点的连线全部在多边形中 用多边形的每一条边所在的直线去切整个坐标平面 得到的一个凸包就是核 ...
- python re正则表达式模块
模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等 复习一下基本的正则表达式吧 .:匹配除了换行符以为的任意单个字符 *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式 +:匹配 ...
- Java IO 字节流与字符流 (二)
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- [置顶][终极精简版][图解]Nginx搭建flv mp4流媒体服务器
花了我接近3周,历经了重重问题,今日终于把流媒体服务器搞定,赶紧的写个博文以免忘记... 起初是跟着网上的一些教程来的,但是说的很不全面,一些东西也过时不用了(比如jwplayer老版本).我这次是用 ...