Oracle11g表分区思考过程

Oracle11g表分区思考过程

环境:CentOS6.5 64bit
          Oracle11gR2
--第一步:创建表分区--
--创建第一个表空间
create tablespace user_part_1
logging
datafile '/opt/oracle/data/user_part_1.dbf'
size 50m          --初始值
autoextend on     --允许自动扩容
next 50m maxsize 2048m  --每次扩大50M,最大2048M
extent management local;  --管理方式,有本地管理(local)和数据字典管理(dictionary)

--创建第二个表空间
create tablespace user_part_2
logging
datafile '/opt/oracle/data/user_part_2.dbf'
size 50m          
autoextend on     
next 50m maxsize 2048m
extent management local;

--查看本用户系统权限
select * from user_sys_privs

--创建表分区(按照范围)
create table user_information(
       userid integer primary key,
       name varchar2(255)
)
partition by range(userid)(
          partition user_part_1 values less than (100) tablespace user_part_1,
          partition user_part_2 values less than (200) tablespace user_part_2
)

--创建好分区表之后,往user_information表插入数据,无法插入>=200的数据
insert into user_information(userid, name) values(199, '小明')      --成功
insert into user_information(userid, name) values(200, '小红')      --失败

--第二步:我发现以上方式不能插入>=200的数据,那我要是想插入怎么办呢?--
--创建第三个表空间
create tablespace user_part_3
logging
datafile '/opt/oracle/data/user_part_3.dbf'
size 50m          
autoextend on     
next 50m maxsize 2048m
extent management local;

--创建第四个表空间
create tablespace user_part_4
logging
datafile '/opt/oracle/data/user_part_4.dbf'
size 50m          
autoextend on     
next 50m maxsize 2048m
extent management local;

--往user_information表添加表空间
alter table user_information add partition user_part_3 values less than (maxvalue) tablespace user_part_3

--这样,我就可以插入很大的数据了,其保存在第三个表空间
insert into user_information values(200, '小东')         --成功

--分区界限必须调整为高于最后一个分区界限,所以不能再添加表分区了
alter table user_information add partition user_part_4 values less than (300) tablespace user_part_4  --失败

--第三步:手动表分区实在太麻烦了,有没有办法自动表分区呢?--
--Oracle11g以后才能实现
--新建一个表
create table user_info(
       user_id integer, 
       name varchar2(255),
       birthday date
)
partition by range(birthday) interval(numtoyMinterval(1, 'Month'))(     --根据月,一个月一次
          partition user_part_4 values less than (TO_DATE('2017-01-01', 'yyyy-MM-dd')) tablespace user_part_4
)

–查看partition
–此时有一个partition,名为user_part_4,因为没插入数据
这里写图片描述

--插入第一条数据
insert into user_info values(1, '小东', to_date('2016-12-12', 'yyyy-MM-dd'))

–查看partition
–此时有一个partition,名为user_part_4,因为插入的数据小于2017-01-01
这里写图片描述

--插入第二条数据
insert into user_info values(2, '小龙', to_date('2017-01-01', 'yyyy-MM-dd'))

–此时有两个partition,因为此时插入的数据birthday大于等于2017-01-01
这里写图片描述

—END—

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值