Oracle分区方法详解

下面我分别对这四种分区方法的概念,他们的使用场景,以及各种分区方法做一个性能比较。

一、概念

1、Range Partitioning

这是最常用的一种分区方法,基于COLUMN的值范围做分区,最常见的是基于时间字段的数据的范围的分区,比如:对于SALE表,可以对销售时间按照月份做一个Range Partitioning。这种分区在数据仓库里用的比较多,以下是

CREATE STATMENT

CREATE TABLE sales_range

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

sales_date DATE)

COMPRESS

PARTITION BY RANGE(sales_date)

(PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')),

PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')),

PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('04/01/2000','DD/MM/YYYY')),

PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY')));

对于COMPRESS关键字的理解,将在后续的压缩分区讲到

2、Hash Partitioning

Hash Partitioning映射数据到基于HASH算法的分区上,HASH算法将应用你指定的分区关键字,平均的分那些在Partitions中的行。给每一个分区近似相同的大小,要保证数据能平均分配,分区数一般是2N。比如说,需要insert sales_hash 一条数据,ORACLE会通过HASH算法处理salesman_id,然后找到对于的分区表进行insert。Hash Partitioning 是为跨越设备的分布式数据提供了一种理想的方法,HASH算法也很容易转化成RANGE分区方法,特别是当被分区的数据不是历史数据时。

CREATE TABLE sales_hash

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

week_no NUMBER(2))

PARTITION BY HASH(salesman_id)

PARTITIONS 4;

时间: 2024-08-02 18:14:21

Oracle分区方法详解的相关文章

Linux 自动备份oracle数据库详解_oracle

Linux 自动备份oracle数据: 曾经有个同事,来回操作开发和生产的数据库,结果误删了生产的数据库,那种心情我想不是一般人能理解的,虽然说oracle可以有方法还原,但并不是彻底的. 所以,在工作中,不管是开发还是维护,备份数据库是非常有必要. 简单实用的晚间自动备份数据库小案例 步骤一.创建备份脚本,暂且命名为orabak.sh #路径名,指定备份的路径 FILEPATH = /oracle/orabak #根据指定日期格式,定义备份数据库文件名 FILENAME = `date + %

oracle 临时表详解及实例_oracle

在Oracle8i或以上版本中,可以创建以下两种临时表: 1.会话特有的临时表 CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT PRESERVE ROWS:  2.事务特有的临时表 CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT DELETE ROWS: CRE

使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解

1,什么是ODF .NE,?就是Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数据访问 API . 详细解说 http://www.oracle.com/technetwork/cn/testcontent/o23odp-084525-zhs.html 对于官方的代码,已不存在了! ODP.NET你不需要安装Oracle,不需要配置oracle.key文件,不需要配置TnsNa

Oracle热备份详解

Oracle 热备份是指数据库处于open状态下,对数据库的数据文件.控制文件.参数文件.密码文件等进行一系列备份操作. 热备是基于用户管理备份恢复的一种方式,也是除了RMAN备份之外较为常用的一种备份方式. 一.热备的过程 冻结块头-->控制SCN在备份时不发生变化 进行物理拷贝 解冻块头-->让SCN可以变化(当对SCN解冻后,系统会自动更新SCN至最新的状态) 二.基于数据库的热备 alter database begin backup; 拷贝所有的datafile到备份目录 alter

oracle flashback详解2

这部分的内容,其实早在10年年初就学习过,也记录了相关的笔记.但很多知识不用就慢慢被遗忘了.今天无意中听到同事在讨论问题:为什么删除了一个占用空间大的表后,表空间并没有释放呢? 职业的原因,自己在想Oracle Drop table的过程是怎么实现的,是不是要做个跟踪看下.后来想起在10g后,Oracle有了Flashback的功能,删除表的时候会先放在RecycleBin中,并不真正的物理删除,所以表空间dba_free_space是不是不会有变化? 今天重新翻了下之前的笔记,并做了试验,发现

GoldentGate Oracle to Oracle 初始化详解

一.安装GoldenGate[源端,目标端] 1.创建ogg目录 [root@source ~]# mkdir /DBSoft/ogg [root@source ~]# cd /DBSoft/ogg/ 2.解压缩ogg安装介质 [root@source ogg]# unzip /root/OGG_v11_for_ora11g_linux64.zip Archive: /root/OGG_v11_for_ora11g_linux64.zip inflating: ggs_Linux_x64_ora

oracle flashback详解3

原文转自:http://www.askmaclean.com/archives/why-flashback-log-smaller-than-redolog.html 为什么Flashback Log产生量要远少于Redo Log? 有同学提问关于闪回数据库日志为什么远少于redo log?     RVWR( Recovery Writer)每3s检查flashback generate buffer中的block before image的具体算法是如何的? 是否每一次block chang

Java下使用Oracle存储过程(详解)第1/3页_JSP编程

任何转载,请尊重版权.(作者:iihero on csdn) 一.如何创建java存储过程? 通常有三种方法来创建java存储过程. 1. 使用oracle的sql语句来创建: e.g. 使用create or replace and compile java source named "<name>" as 后边跟上java源程序.要求类的方法必须是public static的,才能用于存储过程. 复制代码 代码如下: SQL> create or replace

Windows 10硬盘无损分区方法详解

有人说,对硬盘分区的时候,很多情况下会造成数据的损伤和丢失,所以就算需要也不敢轻易对硬盘进行分区,这成了许多人的烦恼.但其实,只要我们谨慎点,就能给硬盘进行无损分区.那么,Win10硬盘怎么无损分区呢?下面我们就一起来看看Win10硬盘无损分区的方法. 方法/步骤 1.右键点击"我的电脑",然后选择"管理"; 2.弹出的窗口中,选择"磁盘管理"; 3.在窗口的右下边可以看到磁盘,选择你要分区的磁盘,右键点击,然后选择"压缩卷"