Oracle数据库之oracle分区表按时间自动创建
小标 2018-08-22 来源 : 阅读 1214 评论 0

摘要:本文主要向大家介绍了Oracle数据库之oracle分区表按时间自动创建,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。

本文主要向大家介绍了Oracle数据库之oracle分区表按时间自动创建,通过具体的内容向大家展现,希望对大家学习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触发器。如果没有开启这个选项,就会在更新时报错。

本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程