Oracle 数据表之分区表

一、分区方法 

  建分区表准备:

  1,创建4个测试用的表空间,每个表空间作为一个独立分区(考虑到Oracle中分区映射的实现方式,建议将表中的分区数设置为2的乘方,以便使数据均匀分布)

create tablespace partition1 datafile ‘/home/oracle/app/oradata/orcl/partition1.dbf‘ size 20m;

create tablespace partition2 datafile ‘/home/oracle/app/oradata/orcl/partition2.dbf‘ size 20m;

create tablespace partition3 datafile ‘/home/oracle/app/oradata/orcl/partition3.dbf‘ size 20m;

create tablespace partition4 datafile ‘/home/oracle/app/oradata/orcl/partition4.dbf‘ size 20m;

1)范围分区

  

  范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等(联通每个月的账单记录就用的分区表存储)。

   CREATE TABLE partition_table(

    kind_id number ,

    id number not null,

    name  varchar(100),

    start_date date not null

)  

partition by range(kind_id) (

  partition partition1 values less than(2) tablespace partition1,

  partition partition2 values less than(4) tablespace partition2,

  partition partition3 values less than(6) tablespace partition3,

  partition partition4 values less than(maxvalue) tablespace partition4

)

  插入数据

  insert into partition_table values(1,1001,‘haha‘,to_date(‘2012‘,‘yyyy‘));

  insert into partition_table values(2,1002,‘sasa‘,to_date(‘2013‘,‘yyyy‘));

  insert into partition_table values(3,1003,‘dada‘,to_date(‘2014‘,‘yyyy‘));

  insert into partition_table values(4,1004,‘faga‘, to_date(‘2015‘,‘yyyy‘));

  insert into partition_table values(5,1005,‘gaga‘,to_date(‘2016‘,‘yyyy‘));

  insert into partition_table values(6,1006,‘jaja1‘,to_date(‘2017‘,‘yyyy‘));

  insert into partition_table values(8,1007,‘kaka‘,to_date(‘2018‘,‘yyyy‘));

  查询数据:

     不指定分区:

        select * from partition_table

        指定分区:

        select * from partition_table partition(partition1)

  更改数据:

     指定分区:

        update partition_table partition(partition1) t set t.name = ‘kkkl‘  where start_date <to_date(‘2015‘);

     不指定分区

        update partition_table t set t.name = ‘kkkl‘  where t.start_date <to_date(‘2015‘);

3)散列分区(hash分区)

  create table hash_partition_table(

    kind_id number ,

    id number not null,

    name  varchar(100),

    start_date date not null

)

partition by hash(kind_id)(

  partition partition1 tablespace partition1;

  partition partition2 tablespace partition2;

  partition partition3 tablespace partition3;

  partition partition4 tablespace partition4;

)

4)复合分区(子分区)

具体信息见博客:https://www.cnblogs.com/CandiceW/p/10312663.html

原文地址:https://www.cnblogs.com/fanshaoxiang/p/12257810.html

时间: 2024-10-01 05:54:26

Oracle 数据表之分区表的相关文章

oracle 数据表中实现字段的自动增长

由于一直用的是Mysql数据库,今天刚好心血来潮,想着和Java都是同一个老板出来的oracle自己却不会,说出去会不会有点丢人,故就开始翻资料,看视频搞起来,一步一个脚 印,想着写点什么,就开始从创建表开始吧,好了,废话不多说了,开始上正题创建一个表: User表: create table user(    id number(5,0) not null primary key auto_increment,    deptid number(5,0) not null,    userna

Oracle数据表中的死锁情况解决方法

不知道干了啥,把数据表锁住了,没法update. 百度了各种方法,总结如下. 查看被锁住的表(两句都可以): select * from v$session t1, v$locked_object t2 where t1.sid=t2.SESSION_ID   select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object

定时导出Oracle数据表到文本文件的方法

该实例实现了通过windows定时任务来实现了将数据库中指定数据表数据导出为txt文本格式.其思路是通过可执行的bat文件去调用导出数据脚本,然后再在windows定时任务中调用该bat文件来实现.该示例需要能够运行的sqlplus环境,因此需要安装Oracle客户端等可运行环境. 实现了将数据库中日志表数据导出到指定文件夹下的.log文件,且该文件的命名方式采用按天来导出的格式(如:C:\HttpLog\20130115.log),当然具体路径根据你的需求可进行自定义设置.如果你不想建立win

linux下导入oracle数据表

提前说明:这个是默认oracle已经安装好切数据库默认表空间已经创建好.之后将数据表dmp文件直接导入到默认表空间里(默认表空间不用再指定,因为创建数据库时已经指定默认表空间) linux命令如下: [[email protected] ~]$ imp test/test file=/home/oracle/tm_bus_passenger_updown.dmp ignore=y full=y //用户名和密码已经暗含默认表空间 文档结构如下 原文地址:https://www.cnblogs.c

Oracle数据表之间的数据同步

保证两个数据表结构相同,如不相同只能同步相同字段; 只是思路,具体请根据需求修改. declare cursor csrn_mon is select * from table2; row_mon csrn_mon%rowtype; cursor csrn_loc is select * from table1; row_loc csrn_loc%rowtype; cursor csrn_del is select xh from table1 minus select xh from tabl

oracle——数据表的相关操作——删除数据表

创建数据表; create table 表名 ( 列明1 数据类型1 [约束性条件], 列明1 数据类型1 [约束性条件], …… ) tablespace 表空间 create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test sele

oracle——数据表的相关操作——重新命名一个列名

create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test select * from student05; 数据表的相关操作 1.增加新列 alter table student 用于修改表的结构,add用于增加列,注意此处没有co

oracle——数据表的相关操作——删除已有列

create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test select * from student05; 数据表的相关操作 1.增加新列 alter table student 用于修改表的结构,add用于增加列,注意此处没有co

oracle——数据表的相关操作——转移表空间

创建数据表; create table 表名 ( 列明1 数据类型1 [约束性条件], 列明1 数据类型1 [约束性条件], …… ) tablespace 表空间 create table student05 ( student_id number not null, student_name varchar2(20), student_age number, status varchar2(2), version number default 0 ) tablespace test sele