oracle 11g 分区

1、间隔分区

interval分区是范围分区的增强,可以实现范围分区的自动化,可以自动创建新的分区和本地索引。

测试例子:

先创建一个分区表,

写入不在分区范围内的数据

查看分区已经自动建立了,但是分区名无法指定,对于根据分区名进行备份清理来说,这个貌似还是不智能。

DROP TABLE EDU.TEST23 PURGE
/
CREATE TABLE EDU.TEST23
(ID NUMBER(12),
NAME VARCHAR2(20),
CREATE_DATE DATE
)
PARTITION BY RANGE(CREATE_DATE)
INTERVAL (NUMTOYMINTERVAL(1,‘MONTH‘))
(
PARTITION P201602 VALUES LESS THAN (TO_DATE(‘20160201‘,‘YYYYMMDD‘))

)
/
insert into edu.test23
values(1,‘1‘,sysdate)
/
CREATE TABLE EDU.TEST23
(
    ID          NUMBER(12)       NULL,
    NAME        VARCHAR2(20)     NULL,
    CREATE_DATE DATE             NULL
)
TABLESPACE USERS
PCTFREE 10
PCTUSED 0
INITRANS 1
MAXTRANS 255
STORAGE(BUFFER_POOL DEFAULT)
NOPARALLEL
NOCACHE
PARTITION BY RANGE(CREATE_DATE)
(PARTITION P201602 VALUES LESS THAN (TO_DATE(‘ 2016-02-01 00:00:00‘, ‘SYYYY-MM-DD HH24:MI:SS‘, ‘NLS_CALENDAR=GREGORIAN‘))
    LOGGING,
 PARTITION SYS_P62 VALUES LESS THAN (TO_DATE(‘ 2016-04-01 00:00:00‘, ‘SYYYY-MM-DD HH24:MI:SS‘, ‘NLS_CALENDAR=GREGORIAN‘))
    LOGGING)
/

2、外键分区

通过外键来获得主表的分区方案

比如:主表按照create_date分区,包含外键的表通过外键,就可以按照主表的create_date进行分区。

3、虚拟列分区

允许使用表中的一列或者多列来确定分区,而虚拟列只作为元数据存储。

时间: 2024-12-14 13:42:10

oracle 11g 分区的相关文章

使用Oracle 11g分区自动扩展的功能的一个小问题

Oracle 11g下使用分区自动扩展的功能,非常方便,不过同时也带来一个问题,就是导出.导入之后,建表语句改了,下面来做个实验: SQL> select * from v$version; BANNER ------------------------------------------------------------------------------ Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Pr

Oracle 11g 新特性:自动创建分区(Interval Partition)

分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理.在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量.Interval Par

Oracle 11g 间隔分区(INTERVAL)批量规范命名

友情提示:请在业务空闲是操作.为什么呢? --Oracle 11g 间隔分区(INTERVAL)重命名,批量生成rename分区脚本 set linesize  180 set serverout on declare   v_table_owner          varchar2(100) :=  'OP%';   v_table_name_day_p     varchar2(100);   v_table_name_month_p    varchar2(100);   v_print

Oracle 11g新特性虚拟列分区

现在有个需求:一个单据表要按照月份来分区,如果是在Oracle 10g上,只能再加一个字段.在Oracle 11g以后就不一样了,可以用虚拟列处理. SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Oracle 11g下自动创建分区

11g之前,维护分区需要手工.11g之后使用interval来实现自动扩展分区,简化了维护. 根据年  INTERVAL(NUMTOYMINTERVAL(1,'YEAR')) 根据月  INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) 根据天  INTERVAL(NUMTODSINTERVAL(1,'DAY')) 下面用按月自动扩展来做个试验: SQL> create table t_range (id number not null PRIMARY KEY, test_

Oracle 11g虚拟列上建分区

在Oracle 11g上,可以在虚拟列上做分区,这个特性还比较有用,下面来做一个测试: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Rele

Oracle 11g 通过间隔分区实现按月创建表分区

在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不多,为了实现上述功能查了很多资料,一开始的方向是通过Crontab调用Shell脚本来按月自动创建分区,或者使用Oracle的Job调用存储过程来自动创建分区.在研究上述两套方案的过程中,无意发现Oracle11g有间隔分区功能,对于使用Range分区的可以按年,月,日来自动生成分区.语法如下: CREAT TABLE TABLE1 ( TABLE

oracle 11g 分区表创建(自动按年分区)

前言:工作中有一张表一年会增长100多万的数据,量虽然不大,可是表字段多,所以一年下来也会达到 1G,而且只增不改,故考虑使用分区表来提高查询性能,提高维护性. oracle 11g 支持自动分区,不过得在创建表时就设置好分区. 如果已经存在的表需要改分区表,就需要将当前表 rename后,再创建新表,然后复制数据到新表,然后删除旧表就可以了. 一.为什么要分区(Partition) 1.一般一张表超过2G的大小,ORACLE是推荐使用分区表的. 2.11g 中的分区表新特性:Partition

oracle 11g 新增分区

oracle 11g新增了间隔分区.虚拟列分区和引用分区.详细的介绍请查看官方文件: Creating Partitions 1. 间隔分区 间隔分区是范围分区的一种扩展.在引入间隔分区之前,DBA 需要显式定义每个分区的值范围,随着分区值的增长可用分区会逐渐减少直到没有可使用的分区为止.而间隔分区就是为了解决插入表中的数据超过了所有范围分区时而不能自动创建分区的问题.必须至少创建一个范围分区,范围分区的键值确定范围分区的上限值,超过该上限值数据库服务器自动创建特定间隔的分区.主要用在可预知的添