对Oracle中的表进行分区

摘要:
表空间是指磁盘上用于存储表的存储区域。范围分区方法用于对具有大量数据的表进行分区,并将它们存储在不同的表空间中。范围分区是使用表中字段值的范围进行分区。例如:1)使用数字ID字段ID<在第一分区中为100000;第二个分区为200000。2) 对于日期类型字段,2011年的数据在一个分区中,2012年的数据则在另一个分区(或按月)中

表空间是指磁盘上的一块存储区域,用来存放表。

  使用范围分区法对数据量大的表进行分区,分区存放到不同的表空间。

  范围分区就是用表中的某个字段值的范围进行分区。

  比如:

  1)用数值型的id字段,id<100000的在第1个分区,100000<=id<200000的在第二个分区。

  2)用日期类型的字段,2011年的数据在一个分区,2012年的数据在另一个分区,或者也可以按月份进行划分。

  范围分区语法:

  1)partition  by  range(field)    field 就是表中要划分范围的那个字段。

  2)VALUES LESS THAN(value)   value 就是field的值,表示小于这个值的。

     如VALUES LESS THAN(1000) 就表示属性值小于1000,不包括1000

     如VALUES LESS THAN (TO_DATE('2012/2/1','yyyy/MM/dd')) 就表示属性值小于2012年2月1日的,不包括2012年2月1日

  3)在最高的分区中,VALUES LESS THAN(maxValue)定义的是一个最大的值

  范围分区步骤:

  1)建立表空间

  建立三个表空间测试用

复制代码
CREATE TABLESPACE APP_TS_01  --建立第一个表空间  APP_TS_01    
NOLOGGING    --不生成日志
DATAFILE '/home/oracle/oradata/appdata/app_data_01.def' --指定表空间在磁盘上的位置
SIZE 1024M    --指定表空间大小

CREATE TABLESPACE APP_TS_02  --建立第二个表空间  APP_TS_02    
NOLOGGING    --不生成日志
DATAFILE '/home/oracle/oradata/appdata/app_data_02.def' --指定表空间在磁盘上的位置
SIZE 1024M    --指定表空间大小

CREATE TABLESPACE APP_TS_03  --建立第三个表空间  APP_TS_03    
NOLOGGING    --不生成日志
DATAFILE '/home/oracle/oradata/appdata/app_data_03.def' --指定表空间在磁盘上的位置
SIZE 1024M    --指定表空间大小
复制代码

  2)建立表和对表进行分区

复制代码
--创建订单表
create table t_order
(
  id NUMBER primary key not null ,      --主键
  order_no  VARCHAR2(30) not null,      --订单号
  order_time  DATE not null             --订单时间
)

--对订单表进行分区
partition by range (order_time)--根据订单时间范围进行划分
(
  --小于2012年1月份的数据存放到分区t_order_01,存在表空间APP_TS_01
  PARTITION t_order_01 VALUES LESS THAN (TO_DATE('2012/2/1','yyyy/MM/dd')) TABLESPACE APP_TS_01, 
  --2012年2月份的数据存放到分区t_order_02,存在表空间APP_TS_02
  PARTITION t_order_02 VALUES LESS THAN (TO_DATE('2012/3/1','yyyy/MM/dd')) TABLESPACE APP_TS_02, 
   --2012年3月份的数据存放到分区t_order_03,存在表空间APP_TS_03
  PARTITION t_order_03 VALUES LESS THAN (TO_DATE('2012/4/1','yyyy/MM/dd')) TABLESPACE APP_TS_03 
)
复制代码

  4)查询分区数据

复制代码
--查询所有分区数据
select * from t_order

--只查t_order_01分区的订单数据
select * from t_order PARTITION(t_order_01)

--联合查询t_order_01分区和t_order_02分区的数据
select * from t_order PARTITION(t_order_01)
UNION ALL
select * from t_order PARTITION(t_order_02)
复制代码

  5)查看当前用户哪些表有分区

--查看当前用户有哪些表已分区
SELECT * from USER_TABLES where partitioned='YES'

  6)查看某个表有多少个分区

--查询某个表有多少个分区
SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='表名';

免责声明:文章转载自《对Oracle中的表进行分区》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Arduino-定义串口事务使用心得-事务隔离级别-DB2数据(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity中对注册表进行修改

问题背景: PC端软件开发,当我在Unity中的PlayerSetting中设置好分辨率,每次打包运行后会记忆上次退出时窗口的分辨率(记忆窗口状态),导致下次打开时不是PlayerSetting中的初始设置,而是读取注册表记录的数据。而我的需求时必须每次进去时都是指定的那个分辨率。 问题纠结点: 1.注册表信息是否可删,怎么获取到删除 2.也不能直接删除整...

linux 后台执行oracle sql脚本

一、简单后台执行。 nohup  sqlplus   Oracle/Oracle@orcl   @sql.sql     & --这样的写法会报错(Error 45 initializing SQL*Plus Internal error)  今天打算写个后台执行清理单张表和备份sql脚本。发现一直报错,网上也没有具体的修改方法。 后来到别的博客去...

【译】颜色空间 REC.709 vs sRGB的

(原文link https://www.image-engineering.de/library/technotes/714-color-spaces-rec-709-vs-srgb, 欢迎指正) 如果你不关心背景知识的话,下面这句话或许足够了,HDTV(REC.709)和sRGB用的是一样的三基色,但是转换函数(gamma)不同。 颜色空间定义 感谢耐心...

iOS学习笔记之typedef

typedef unsigned long long weiboId; typedef 定义一个使用方便的类型,谓之为“宏定义“。 unsigned long long 是一种无符号的长长整型。本应该是这样,unsigned long long int ,这里省略了int ,编译器会自动认可。 unsigned long long ,是64 位的数据,8...

ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致”

"将页面显示的GridView中的数据,导出到Excel表格中"时遇到这样一个错误: C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致。具体提示如图:   解决办法:这里采用"修改注册表的方法"解决此问题,这并没从根上解决问题: 1、打开注册表编辑器方法:开始 -> 运行 -> 输入regedit -> 确定 2、找...

dedecms 空间迁移步骤

1.在新空间重新安装一次原版本的DEDECMS,然后把旧站的所有数据,这里的数据指的是文件,即除了根目录下文件夹include下的配置文件config_base.php外的所有文件覆盖到新空间下2.在旧网站后台系统管理-数据备份哪里备份数据,这里的数据指的是DEDECMS自己后台所采取的备份文件,类似用phpmyadmin等工具所作的备份。备份完成后,DE...