Oracle表分区合并
在看一篇介绍表分区的文章时,产生了一个疑问,如何表的分区处于不同表空间,那么合并后的分区是属于哪个表空间的?
下面进行实验:
实验1:
创建不同表空间的hash分区
SQL> CREATE TABLE HASH_TABLE
2 (
3 COL NUMBER(8),
4 INF VARCHAR2(100)
5 )
6 PARTITION BY HASH (COL)
7 ( PARTITION PART01 TABLESPACE users,
8 PARTITION PART02 TABLESPACE test)
9 ;
SQL> select PARTITION_NAME,PARTITION_POSITION, TABLESPACE_NAME from USER_TAB_PARTITIONS where table_name='HASH_TABLE';
PARTITION_NAME PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
PART01 1 USERS
PART02 2 TEST
SQL>ALTER TABLE HASH_TABLE MERGE PARTITIONS PART01,PART02 INTO PARTITION PART02;
SQL> ALTER TABLE HASH_TABLE MERGE PARTITIONS PART01,PART02 INTO PARTITION PART02;
ALTER TABLE HASH_TABLE MERGE PARTITIONS PART01,PART02 INTO PARTITION PART02
*
ERROR at line 1:
ORA-14255: table is not partitioned by Range, List, Composite Range or
Composite List method
结论:hash分区表不能进行合并。
实验2:
创建不同表空间的范围分区
CREATE TABLE CUSTOMER
(
CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY
)
PARTITION BY RANGE (CUSTOMER_ID)
(
PARTITION CUS_PART1 VALUES LESS THAN (10) TABLESPACE users,
PARTITION CUS_PART2 VALUES LESS THAN (20) TABLESPACE test
);
SQL> select PARTITION_NAME,PARTITION_POSITION, TABLESPACE_NAME from USER_TAB_PARTITIONS where table_name='CUSTOMER';
PARTITION_NAME PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
CUS_PART1 1 USERS
CUS_PART2 2 TEST
SQL> ALTER TABLE CUSTOMER MERGE PARTITIONS CUS_PART1,CUS_PART2 INTO PARTITION CUS_PART1;
ALTER TABLE CUSTOMER MERGE PARTITIONS CUS_PART1,CUS_PART2 INTO PARTITION CUS_PART1
*
ERROR at line 1:
ORA-14275: cannot reuse lower-bound partition as resulting partition
结论1:分区不能向小范围的分区合并,只能向大范围合并
SQL>ALTER TABLE CUSTOMER MERGE PARTITIONS CUS_PART1,CUS_PART2 INTO PARTITION CUS_PART2;
SQL> select PARTITION_NAME,PARTITION_POSITION, TABLESPACE_NAME from USER_TAB_PARTITIONS where table_name='CUSTOMER';
PARTITION_NAME PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
CUS_PART2 1 SYSTEM
结论2:未指定表空间分区合并后,生成的分区表空间为用户默认表空间
SQL> ALTER TABLE CUSTOMER MERGE PARTITIONS CUS_PART1,CUS_PART2 INTO PARTITION CUS_PART2 tablespace users;
SQL> select PARTITION_NAME,PARTITION_POSITION, TABLESPACE_NAME from USER_TAB_PARTITIONS where table_name='CUSTOMER';
PARTITION_NAME PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
CUS_PART2 1 USERS
结论3:通过语句修改为合并后的分区指定表空间
实验3:
测试非相邻分区是否可以合并
SQL> CREATE TABLE CUSTOMER
2 (
3 CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY
4 )
5 PARTITION BY RANGE (CUSTOMER_ID)
6 (
7 PARTITION CUS_PART1 VALUES LESS THAN (10) TABLESPACE users,
8 PARTITION CUS_PART2 VALUES LESS THAN (20) TABLESPACE test ,
9 PARTITION CUS_PART3 VALUES LESS THAN (30) TABLESPACE test
10 );
Table created.
SQL> select PARTITION_NAME,PARTITION_POSITION, TABLESPACE_NAME from USER_TAB_PARTITIONS where table_name='CUSTOMER';
PARTITION_NAME PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------ ------------------------------
CUS_PART1 1 USERS
CUS_PART2 2 TEST
CUS_PART3 3 TEST
SQL> ALTER TABLE CUSTOMER MERGE PARTITIONS CUS_PART1,CUS_PART3 INTO PARTITION CUS_PART3 tablespace users;
ALTER TABLE CUSTOMER MERGE PARTITIONS CUS_PART1,CUS_PART3 INTO PARTITION CUS_PART3 tablespace users
*
ERROR at line 1:
ORA-14274: partitions being merged are not adjacent
结论:非相邻表分区不能进行合并
Oracle表分区合并相关推荐
- Oracle表分区详细说明
Oracle表分区 自从oracle8i 开始可以把一个表分割为多个小的部分,这样可以对oracle的性能优化带来很大的好处~ 例如:改善表的查询性能,更加容易管理表数据,备份和恢复操作更方便 在or ...
- Oracle表分区和索引分区汇总
Oracle表分区和索引分区汇总 为了简化数据库大表的管理,例如在数据仓库中一般都是TB级的数量级.ORACLE8以后推出了分区选项.分区将表分离在若于不同的表空间上,用分而治之的方法来支撑元限膨胀的 ...
- 数据库表设计、 数据库分层、myslq水平拆分、oracle表分区
数据库表设计 数据库表结构设计方法及原则(li)数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的 ...
- Oracle表分区大全
废话少说,直接讲分区语法. Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: Sql****代码[[图片上传失 ...
- oracle表分区四种方式的含义,Oracle表分区详细说明
Oracle表分区 自从oracle8i 开始可以把一个表分割为多个小的部分,这样可以对oracle的性能优化带来很大的好处~ 例如:改善表的查询性能,更加容易管理表数据,备份和恢复操作更方便 在or ...
- Oracle系列之六:Oracle表分区
Oracle表分区 1. 基本概念 2. 范围分区 3. Hash分区(散列分区) 3. 复合分区 1. 基本概念 Oracle表分区是将一个大型表分割成更小.更易于管理的部分的技术.分区后的表被称为 ...
- oracle分区键使用教程,Oracle表分区学习笔记
第二电脑网导读:区,列表分区,索引分区)下面我们来慢慢介绍现在我们来建立一个索引也可以按照和表进行分区时使用的相同的值范围来分区create index IndexTable_indexon Inde ...
- oracle范围分区表,Oracle表分区之范围分区-Oracle
Oracle表分区之范围分区 以表中的一个列或一组列的值的范围分区 语法: [sql] PARTITION BY RANGE (column_name) ( www.2cto.com PARTI ...
- oracle ods平台建立,如何利用Oracle表分区技术建设ODS平台
龙源期刊网 http://www.wendangwang.com 如何利用Oracle表分区技术建设ODS平台作者:李永强 来源:<电脑知识与技术>2010年第11期 摘要:该单位目前要在 ...
- oracle 表分析 分区,细化解析:Oracle表分区
Oracle表分区里可以把一个表分割为多个小部分,这样可以对Oracle表分区的查询性能,管理表数据,备份和恢复操作的性能优化带来改善. Oracle表分区分为好几种的(范围分区,散列分区,子分区,列 ...
最新文章
- malloc 就是返回开辟内存空间的首地址
- Http响应码及其含义--摘自apache官网
- Spring的@bean注解
- vue 第十天 (组件的基本使用)
- 简支梁挠度计算公式推导_挠度公式推导与计算
- Matconvnet测试
- Android SystemServer 进程
- 苹果手机上网速度慢_手机为什么下载速度很慢(揭晓手机下载速度慢的原因)...
- 服务器误删除虚拟机数据恢复成功
- error: You must be logged in to the server (Unauthorized)
- WSTMart开发文档
- PaddlePaddle第二周学习笔记
- 跳一跳,python脚本原理
- Burpsuite抓包夜神模拟器
- 微信授权,修改本地 host
- 简单(静态)工厂模式
- Java web后端框架
- Codeforces 545D - Queue
- 土木工程C语言题目,土木工程级C语言课程设计任务书.doc
- 前程无忧将办海外留学生招聘会;中兴任命倪飞为终端事业部总裁 | 美通企业日报...