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

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

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

  1. -- Create tableWMS_OPERATION_RECORD
  2. create table DPHOMEWMS.WMS_OPERATION_RECORD_TMP
  3. (
  4. ID NUMBER(19) not null,
  5. WAREHOUSE_ID NUMBER(19),
  6. ASN_ID NUMBER(19),
  7. PICK_TICKET_ID NUMBER(19),
  8. RELATION_CODE VARCHAR2(50),
  9. OPERATION_TYPE VARCHAR2(50),
  10. OPERATION_ID NUMBER(19),
  11. OPERATION_NAME VARCHAR2(50 CHAR),
  12. OPERATION_TIME TIMESTAMP(6) DEFAULT systimestamp not null,
  13. STATUS VARCHAR2(10),
  14. TYPE VARCHAR2(10),
  15. COUNTS NUMBER(10)
  16. )tablespace DPHOMEWMS_DATA
  17. PARTITION BY RANGE (OPERATION_TIME) interval (numtoyminterval(1, 'month'))
  18. STORE IN (DPHOMEWMS_DATA)
  19. (
  20. partition OPERATION_RECORD_P01 values less than (TIMESTAMP' 2017-05-08 00:00:00')
  21. tablespace DPHOMEWMS_DATA
  22. );
  23. -- Add comments to the columns
  24. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.WAREHOUSE_ID
  25. is '仓库id';
  26. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.ASN_ID
  27. is '收货单id';
  28. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.PICK_TICKET_ID
  29. is '发货单ID';
  30. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.RELATION_CODE
  31. is '关联单据号(收货单或发货单的code)';
  32. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_TYPE
  33. is '操作类型';
  34. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_ID
  35. is '操作人ID';
  36. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_NAME
  37. is '操作人名称';
  38. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.OPERATION_TIME
  39. is '操作时间';
  40. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.STATUS
  41. is '状态';
  42. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.TYPE
  43. is '明细或者统计次数类型';
  44. comment on column DPHOMEWMS.WMS_OPERATION_RECORD_TMP.COUNTS
  45. is '统计次数';
  46. --创建本地索引
  47. create index IDX_WMS_OPERATION_RECORD on DPHOMEWMS.WMS_OPERATION_RECORD_TMP(RELATION_CODE)
  48. tablespace DPHOMEWMS_INDEX local;
  49. update DPHOMEWMS.WMS_OPERATION_RECORD set OPERATION_TIME = sysdate where OPERATION_TIME is null;
  50. insert into DPHOMEWMS.WMS_OPERATION_RECORD_TMP select * from WMS_OPERATION_RECORD;
  51. drop table DPHOMEWMS.WMS_OPERATION_RECORD;
  52. alter table DPHOMEWMS.WMS_OPERATION_RECORD_TMP rename to WMS_OPERATION_RECORD;
  53. 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分区表按时间自动创建的更多相关文章

  1. Python中根据时间自动创建文件夹

    导语 ​ 电脑桌面文件太多查找起来比较花费时间,并且凌乱的电脑桌面也会影响工作心情,于是利用python根据时间自动建立当日文件夹,这样就可以把桌面上文件按时间进行存放. 代码实现 # _*_codi ...

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

    今天用到了Oracle表的分区,就顺便写几个例子把这个表的分区说一说: 一.创建分区表 1.范围分区 根据数据表字段值的范围进行分区 举个例子,根据学生的不同分数对分数表进行分区,创建一个分区表如下: ...

  3. 转 :Oracle分区表 (Partition Table) 的创建及管理

    三.删除分区 You can drop partitions from range, list, or composite range-list partitioned tables. ALTER T ...

  4. oracle表按日期分区创建、新增、修改、删除

    Oracle11G分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多 ...

  5. Activiti 配置Oracle不能自动创建表解决方法

    使用配置文件创建工作流表 <bean id="processEngineConfiguration" class="org.activiti.engine.impl ...

  6. spring data jpa之Auditing 表的创建时间,更新时间自动生成策略

    java实际编程中,几乎每一张表都会有createTime和updateTime字段,spring的优秀之处在于只要用几个注解,就帮我们解决该类问题,具体实现: 1,实体类添加注解: @EntityL ...

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

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  8. Oracle分区表

    先说句题外话-   欢迎成都天府软件园的小伙伴来面基交流经验~ 一:什么是分区(Partition)? 分区是将一个表或索引物理地分解为多个更小.更可管理的部分. 分区对应用透明,即对访问数据库的应用 ...

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

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

随机推荐

  1. Mac 导入maven项目详解

    1.打开Eclipse,选择Help->Install New SoftWare2.点击add 地址输入:http://m2eclipse.sonatype.org/sites/m2e,name ...

  2. 【BZOJ3757】苹果树(树上莫队)

    点此看题面 大致题意: 每次问你树上两点之间路径中有多少种颜色,每次询问可能会将一种颜色\(a\)看成\(b\). 树上莫队 这题是一道树上莫队板子题. 毕竟求区间中有多少种不同的数是莫队算法的经典应 ...

  3. C++ 全局变量不明确与 using namespace std 冲突

    写了个汉诺塔,使用全局变量count来记录步数,结果Error:count不明确 #include <iostream> using namespace std; ; void hanoi ...

  4. mysql 设置无密码登陆

    登入 MySQL 报错: C:\Users\dell>mysql -uroot -p Enter password: **** ERROR 1045 (28000): Access denied ...

  5. windows8安装msi软件提示2503错误的解决办法

    windows8以后的版本安装msi软件(比如nodejs.msi.Git.msi.python.msi.T ortoiseSVN.msi)的时候老师出现2503.2502的错误,究其原因还是系统权限 ...

  6. resnet densenet

    1.resnet的skip connection是通过eltwise相加的 2.resnet做detection的时候是在conv4_x的最后一层(也就是stage4的最后一层),因为这个地方stri ...

  7. JSP的域对象的作用范围

    <%-- Created by IntelliJ IDEA. User: tT丶 Date: 2017-12-12 Time: 14:53 To change this template use ...

  8. 清空oracle session

    select 'alter system kill session '''||sid|| ','||serial#||''';' from v$session where username =' ';

  9. git 分支管理方案

    现有一般的公司项目均使用git(大多数是gitLab)管理. 开发组 我们的项目都要建立在 开发组的名下 (git.xxcompany.com/xxgroup),除需要公司内部开源的项目,都必须设置为 ...

  10. js判断值是不是全是数字

    if(isNaN(value)){ 不是数字 }else{ 全是数字 }