当前位置:Gxlcms > 数据库问题 > oracle表分区

oracle表分区

时间:2021-07-01 10:21:17 帮助过:5人阅读

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

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

  比如:

  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)建立表空间

  建立三个表空间测试用

技术图片 技术图片
  1. <span style="color: #0000ff;">CREATE TABLESPACE APP_TS_01 <span style="color: #008080;">--<span style="color: #008080;">建立第一个表空间 APP_TS_01
  2. NOLOGGING <span style="color: #008080;">--<span style="color: #008080;">不生成日志
  3. DATAFILE <span style="color: #ff0000;">‘<span style="color: #ff0000;">/home/oracle/oradata/appdata/app_data_01.def<span style="color: #ff0000;">‘ <span style="color: #008080;">--<span style="color: #008080;">指定表空间在磁盘上的位置
  4. SIZE 1024M <span style="color: #008080;">--<span style="color: #008080;">指定表空间大小
  5. <span style="color: #0000ff;">CREATE TABLESPACE APP_TS_02 <span style="color: #008080;">--<span style="color: #008080;">建立第二个表空间 APP_TS_02
  6. NOLOGGING <span style="color: #008080;">--<span style="color: #008080;">不生成日志
  7. DATAFILE <span style="color: #ff0000;">‘<span style="color: #ff0000;">/home/oracle/oradata/appdata/app_data_02.def<span style="color: #ff0000;">‘ <span style="color: #008080;">--<span style="color: #008080;">指定表空间在磁盘上的位置
  8. SIZE 1024M <span style="color: #008080;">--<span style="color: #008080;">指定表空间大小
  9. <span style="color: #0000ff;">CREATE TABLESPACE APP_TS_03 <span style="color: #008080;">--<span style="color: #008080;">建立第三个表空间 APP_TS_03
  10. NOLOGGING <span style="color: #008080;">--<span style="color: #008080;">不生成日志
  11. DATAFILE <span style="color: #ff0000;">‘<span style="color: #ff0000;">/home/oracle/oradata/appdata/app_data_03.def<span style="color: #ff0000;">‘ <span style="color: #008080;">--<span style="color: #008080;">指定表空间在磁盘上的位置
  12. SIZE 1024M <span style="color: #008080;">--<span style="color: #008080;">指定表空间大小</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
技术图片 技术图片

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

技术图片 技术图片
  1. <span style="color: #008080;">--<span style="color: #008080;">创建订单表
  2. <span style="color: #0000ff;">create <span style="color: #0000ff;">table<span style="color: #000000;"> t_order
  3. (
  4. id <span style="color: #0000ff;">NUMBER <span style="color: #0000ff;">primary <span style="color: #0000ff;">key <span style="color: #808080;">not <span style="color: #0000ff;">null , <span style="color: #008080;">--<span style="color: #008080;">主键
  5. order_no <span style="color: #0000ff;">VARCHAR2(<span style="color: #800000; font-weight: bold;">30) <span style="color: #808080;">not <span style="color: #0000ff;">null, <span style="color: #008080;">--<span style="color: #008080;">订单号
  6. order_time DATE <span style="color: #808080;">not <span style="color: #0000ff;">null <span style="color: #008080;">--<span style="color: #008080;">订单时间
  7. <span style="color: #000000;">)
  8. <span style="color: #008080;">--<span style="color: #008080;">对订单表进行分区
  9. partition <span style="color: #0000ff;">by range (order_time)<span style="color: #008080;">--<span style="color: #008080;">根据订单时间范围进行划分
  10. <span style="color: #000000;">(
  11. <span style="color: #008080;">--小于<span style="color: #008080;">2012年1月份的数据存放到分区t_order_01,存在表空间APP_TS_01
  12. PARTITION t_order_01 <span style="color: #0000ff;">VALUES LESS THAN (TO_DATE(<span style="color: #ff0000;">‘<span style="color: #ff0000;">2012/2/1<span style="color: #ff0000;">‘,<span style="color: #ff0000;">‘<span style="color: #ff0000;">yyyy/MM/dd<span style="color: #ff0000;">‘<span style="color: #000000;">)) TABLESPACE APP_TS_01,
  13. <span style="color: #008080;">--<span style="color: #008080;">2012年2月份的数据存放到分区t_order_02,存在表空间APP_TS_02
  14. PARTITION t_order_02 <span style="color: #0000ff;">VALUES LESS THAN (TO_DATE(<span style="color: #ff0000;">‘<span style="color: #ff0000;">2012/3/1<span style="color: #ff0000;">‘,<span style="color: #ff0000;">‘<span style="color: #ff0000;">yyyy/MM/dd<span style="color: #ff0000;">‘<span style="color: #000000;">)) TABLESPACE APP_TS_02,
  15. <span style="color: #008080;">--<span style="color: #008080;">2012年3月份的数据存放到分区t_order_03,存在表空间APP_TS_03
  16. PARTITION t_order_03 <span style="color: #0000ff;">VALUES LESS THAN (TO_DATE(<span style="color: #ff0000;">‘<span style="color: #ff0000;">2012/4/1<span style="color: #ff0000;">‘,<span style="color: #ff0000;">‘<span style="color: #ff0000;">yyyy/MM/dd<span style="color: #ff0000;">‘<span style="color: #000000;">)) TABLESPACE APP_TS_03
  17. )</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
技术图片 技术图片

  4)查询分区数据

技术图片 技术图片
  1. <span style="color: #008080;">--<span style="color: #008080;">查询所有分区数据
  2. <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t_order
  3. <span style="color: #008080;">--<span style="color: #008080;">只查t_order_01分区的订单数据
  4. <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t_order PARTITION(t_order_01)
  5. <span style="color: #008080;">--<span style="color: #008080;">联合查询t_order_01分区和t_order_02分区的数据
  6. <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from<span style="color: #000000;"> t_order PARTITION(t_order_01)
  7. <span style="color: #0000ff;">UNION <span style="color: #808080;">ALL
  8. <span style="color: #0000ff;">select <span style="color: #808080;">* <span style="color: #0000ff;">from t_order PARTITION(t_order_02)</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
技术图片 技术图片

 

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

  1. <span style="color: #008080;">--<span style="color: #008080;">查看当前用户有哪些表已分区
  2. <span style="color: #0000ff;">SELECT <span style="color: #808080;">* <span style="color: #0000ff;">from USER_TABLES <span style="color: #0000ff;">where partitioned<span style="color: #808080;">=<span style="color: #ff0000;">‘<span style="color: #ff0000;">YES<span style="color: #ff0000;">‘</span></span></span></span></span></span></span></span></span></span>

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

  1. <span style="color: #008080;">--<span style="color: #008080;">查询某个表有多少个分区
  2. <span style="color: #0000ff;">SELECT <span style="color: #808080;">* <span style="color: #0000ff;">FROM USER_TAB_PARTITIONS <span style="color: #0000ff;">WHERE TABLE_NAME<span style="color: #808080;">=<span style="color: #ff0000;">‘<span style="color: #ff0000;">表名<span style="color: #ff0000;">‘;<br><br>转载:https://www.cnblogs.com/adforce/p/3312252.html<br></span></span></span></span></span></span></span></span></span></span>

oracle表分区

标签:使用   var   weight   alt   body   less   生成   另一个   属性   

人气教程排行