第一段:创建分区表
①.、范围分区
根据数据表字段值的范围进行分区
举个例子,根据学生的不同分数对分数表进行分区,创建一个分区表如下:create table range_fraction(
)
partition by range(fraction)
(
begin
for i in 1..100000 LOOP
为了创建一个散列分区,应该用partition by hash语句代替partition by range子句,如下所示:
第一种为各个分区指定不同的表空间,表空间数量不用等于分区数量,当表空间数量大于分区数量的时候会循环写入各个表空间:
create table range_fraction1
partition by hash(fraction)
store in (users,tbs_haicheng)
第二种为每个分区指定一个分区名称并为其指定表空间:create table range_fraction1(
grade number(1)
partition p1 tablespace tbs_haicheng ,
);
还可以使用列表分区代替范围分区和散列分区.在列表分区中,告诉Oracle所有可能的值,并指定应当插入相应行的分区.
partition by list(grade)
即分区的分区.例如可以先进行范围分区,再对各个范围分区创建列表分区.
对于非常大的表来说,这种组合分区是一种把数据分成可管理和可调整的组成部分的有效方法.
举个例子:按照分数范围分区后再将ID散列分区:
subpartition by hash(id)
create index global_index_fraction on range_fraction(fraction)GLOBAL partition by range(fraction)(
part_01 values less than(1000),
第三段:管理分区表
①.、增加分区
对于范围分区来说,添加一个分区,必须该分区划定的界限高于原来的最大界限,也就是说只能往上加,不能往下加.那么对于用maxvalue关键字创建的范围分区就不能增加分区了举例:
create table range_fraction
ALTER TABLE range_fraction ADD PARTITION fraction_100 VALUES LESS THAN (100);为列表分区添加一个分区:
ALTER TABLE TABLENAME ADD PARTITION PARTNAME;添加一个子分区的格式:
ALTER TABLE TABLENAME
①.、一般分区表都会很大,所以可以先创建表空间,为了让分区表存放到单独的表空间,否则默认会存放到USERS表空间
ID NUMBER(10) NOT NULL,
CREATE_TIME DATE,
TABLESPACE TS1
PARTITION BY LIST (ID)
(PARTITION PT_1001 VALUES (1001) TABLESPACE TS1);
select TABLE_NAME,PARTITION_COUNT,DEF_TABLESPACE_NAME from USER_PART_TABLES order by DEF_TABLESPACE_NAME;
可以的,比如有分区表如下:
create?table?test
result?INTEGER,
insert_time?DATE)
partition?by?range?(TS_TIME)
tablespace?USERS
pctfree?10
initrans?1
storage
minextents?1
maxextents?unlimited
如果想增加分区:
①.、创建语句
create table p(id number)
partition by range(id)
(partition p1 values less than(100) tablespace t1,
alter table p trunc partition p1;
alter table p drop partition p1;
如果是分区表可以添加分区,如果不是分区表,可以把表转换成分区表,再增加分区.
以上就是土嘎嘎小编为大家整理的oracle怎么续表分区相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!