博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法
阅读量:6989 次
发布时间:2019-06-27

本文共 1921 字,大约阅读时间需要 6 分钟。

一. 分区表理论知识

Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。

Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。

When to Partition a Table什么时候需要分区表,官网的2个建议如下:

  • Tables greater than 2GB should always be considered for partitioning.
  • Tables containing historical data, in which new data is added into the newest partition. A typical example is a historical table where only the current month's data is updatable and the other 11 months are read only.

在oracle 10g中最多支持:1024k-1个分区:

Tables can be partitioned into up to 1024K-1 separate partitions
联机文档上有关分区表和索引的说明:
Partitioned Tables and Indexes

分区提供以下优点:

(1)由于将数据分散到各个分区中,减少了数据损坏的可能性;

(2)可以对单独的分区进行备份和恢复;
(3)可以将分区映射到不同的物理磁盘上,来分散IO;
(4)提高可管理性、可用性和性能。

Oracle 10g提供了以下几种分区类型:

(1)范围分区(range);

(2)哈希分区(hash);
(3)列表分区(list);
(4)范围-哈希复合分区(range-hash);
(5)范围-列表复合分区(range-list)。

Range分区:

Range分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中。

如按照时间划分,2010年1月的数据放到a分区,2月的数据放到b分区,在创建的时候,需要指定基于的列,以及分区的范围值。
在按时间分区时,如果某些记录暂无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在分区中。
如:

create table pdba (id number, time date) partition by range (time) ( partition p1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')), partition p2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')), partition p3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')), partition p4 values less than (maxvalue) )

Hash分区:

对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区会将表中的数据平均分配到你指定的几个分区中,列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中,hash分区也可以支持多个依赖列。

如:

create table test ( transaction_id number primary key, item_id number(8) not null ) partition by hash(transaction_id) ( partition part_01 tablespace tablespace01, partition part_02 tablespace tablespace02, partition part_03 tablespace tablespace03 );

在这里,我们指定了每个分区的表空间。

本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/5847207.html  ,如需转载请自行联系原作者

你可能感兴趣的文章
DNS负载均衡
查看>>
正则表达式和通配符
查看>>
回收站的东西如何恢复?教你几个实用的
查看>>
Mysql和Oracle数据库concat()函数
查看>>
研究显示AI正创造更多工作岗位
查看>>
DB2 SQL statement too long or complex.
查看>>
OpenGL 版本升级
查看>>
纯做技术是自娱自乐,抛开技术做技术才是出路
查看>>
mySQL练习题
查看>>
常用安装rpm包--必备命令
查看>>
表单验证 018
查看>>
Java字节码3-使用ByteBuddy实现一个Java-Agent
查看>>
程序有没有可能输出y=2而x!=1的情况?如果可能,x可能会是什么值?如果不可能,为什么?...
查看>>
[笔记] mysql-proxy 实现主从读写分离
查看>>
给GRUB中的菜单加入密码。
查看>>
保留原有插件,快速升级Eclipse发行版本
查看>>
7月第1周国内域名商TOP10:万网DNSPOD差距缩小
查看>>
debian配置sambd
查看>>
整理grep实战文本搜索过滤技巧
查看>>
Samba通过Openldap统一认证
查看>>