oracle分区表按时间自动创建

表分区是一种思想,分区表示一种技术实现。当表的大小过G的时候可以考虑进行表分区,提高查询效率,均衡IO。oracle分区表是oracle数据库提供的一种表分区的实现形式。表进行分区后,逻辑上仍然是一张表,原来的查询SQL同样生效,同时可以采用使用分区查询来优化SQL查询效率,不至于每次都扫描整个表。

根据年: INTERVAL(NUMTOYMINTERVAL(1,‘YEAR‘))
根据月: INTERVAL(NUMTOYMINTERVAL(1,‘MONTH‘))
根据天: INTERVAL(NUMTODSINTERVAL(1,‘DAY‘))
根据时分秒: NUMTODSINTERVAL( n, { ‘DAY‘|‘HOUR‘|‘MINUTE‘|‘SECOND‘})

此时已经有普通表了,我创建了含相同字段的分区表,把数据导入到分区表中,再把原表删掉。

-- Create table(WMS_OPERATION_RECORD)
create table DPHOMEWMS.WMS_OPERATION_RECORD_TMP
(
  ID             NUMBER(19) not null,
  WAREHOUSE_ID   NUMBER(19),
  ASN_ID         NUMBER(19),
  PICK_TICKET_ID NUMBER(19),
  RELATION_CODE  VARCHAR2(50),
  OPERATION_TYPE VARCHAR2(50),
  OPERATION_ID   NUMBER(19),
  OPERATION_NAME VARCHAR2(50 CHAR),
  OPERATION_TIME TIMESTAMP(6),
  STATUS         VARCHAR2(10),
  TYPE           VARCHAR2(10),
  COUNTS         NUMBER(10)
)tablespace DPHOMEWMS_DATA
PARTITION BY RANGE (OPERATION_TIME) interval (numtoyminterval(1, ‘month‘))
STORE IN (DPHOMEWMS_DATA)
(
  partition OPERATION_RECORD_P01 values less than (TIMESTAMP‘ 2017-05-08 00:00:00‘)
  tablespace DPHOMEWMS_DATA
);
-- Add comments to the columns
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.WAREHOUSE_ID
  is ‘仓库id‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.ASN_ID
  is ‘收货单id‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.PICK_TICKET_ID
  is ‘发货单ID‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.RELATION_CODE
  is ‘关联单据号(收货单或发货单的code)‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_TYPE
  is ‘操作类型‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_ID
  is ‘操作人ID‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_NAME
  is ‘操作人名称‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_TIME
  is ‘操作时间‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.STATUS
  is ‘状态‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.TYPE
  is ‘明细或者统计次数类型‘;
comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.COUNTS
  is ‘统计次数‘;
update DPHOMEWMS.WMS_OPERATION_RECORD set OPERATION_TIME = sysdate where OPERATION_TIME is null;
insert into DPHOMEWMS.WMS_OPERATION_RECORD_TMP select * from WMS_OPERATION_RECORD;
drop table DPHOMEWMS.WMS_OPERATION_RECORD;
alter table DPHOMEWMS.WMS_OPERATION_RECORD_TMP rename to WMS_OPERATION_RECORD;
alter table DPHOMEWMS.WMS_OPERATION_RECORD enable row movement;

(1)OPERATION_TIME是分区键,每一个月会自动创建一个分区,分区键不允许为null。

(2)alter table table_name enable row movement;    是指允许分区表的分区键是可更新,当某一行更新时,如果更新的是分区列,并且更新后的列值不属于原来的这个分区,如果开启了这个选项,就会把这行从这个分区中delete掉,并加到更新后所属的分区,此时就会发生rowid的改变。相当于一个隐式的delete+insert,但是不会触发insert/delete触发器。如果没有开启这个选项,就会在更新时报错。

时间: 2024-08-20 15:29:07

oracle分区表按时间自动创建的相关文章

(转)Oracle分区表和索引的创建与管理

今天用到了Oracle表的分区,就顺便写几个例子把这个表的分区说一说: 一.创建分区表 1.范围分区 根据数据表字段值的范围进行分区 举个例子,根据学生的不同分数对分数表进行分区,创建一个分区表如下: create table range_fraction ( id number(8), name varchar2(20), fraction number(3), grade number(2) ) partition by range(fraction) ( partition fractio

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

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

Oracle中ID的自动增加以及获取系统时间的小技巧

引自http://blog.csdn.net/lejuo/article/details/4479065 ID自动增加,就像MS- SQL Server里面创建表格时,给表的主键设置为自动增加一样. 在Oracle里面,通过如下的SQL语句实现:(plsql可以直接在sequence创建) -- Create sequence create sequence MSG_IN_ID_SEQminvalue 1maxvalue 999999999999999999999999999start with

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——分区表

转载请注明出处:http://blog.csdn.net/anxpp/article/details/51869335,谢谢! 下例中的表设计并不一定,仅作演示使用. 1.概述 即使业务拆分,有时还是不能避免某张表的数据(行数)过多. 当单表数据过多时,会影响整体的性能,查询将变得更慢,数据的备份恢复也会花费更多时间. However,数据库一般都提供了一个将单表拆分成多张表的机制,以更容易的管理表和解决性能问题.这种方式(把表的行分为多个部分)划分表数据的方法就是对表的分区.被分区的表是分区表

深入学习Oracle分区表及分区索引

关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: •       Range(范围)分区 •       Hash(哈希)分区 •       List(列表)分区 •       以及组合分区:Range-Hash,Range-List. 对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定compress属性),只不过分区依赖列不能是lob,long之类数据类型,每个表的分区

Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法

一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明.Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中.查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询. When to Partition a Table什么时候需要分区表,官网的2个建议如下: Tables g

ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内容用于商业用途,将保留追究其法律责任的权利.如果有问题,请以邮箱方式联系作者([email protected]). 前言 本文着重总结分区表的日常维护操作以及相应的注意事项. 本文涉及的日常维护内容包括: 增加分区(add) 移动分区(move) 截断分区(truncate) 删除分区(drop)

【三思笔记】 全面学习Oracle分区表及分区索引

[三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可以分成几类: v  Range(范围)分区 v  Hash(哈希)分区 v  List(列表)分区 v  以及组合分区:Range-Hash,Range-List. 对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定 compress 属性),只不过分区依赖列不能是