oracle 10g分区表,oracle10g--11gR2分区表汇总九

本文通过具体实例展示了如何调整Oracle数据库中的区间分区表,并探讨了从范围分区转换为区间分区的过程及其对数据分布的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

试验3:修改interval

试验开始前介绍:目前有一个interval分区表tab_1,分区键是id,number类型的,interval设定是100,第一个分区范围是1000,目前tab_1表中共有4条记录,分别对应分区如下:

分区一:P_TAB_1_0(1000以下)对应记录id=999/10

分区二:SYS_P173(1000-1099)对应记录id=1000

分区三:SYS_P171(1100-1199)对应记录id=1100

开始试验:

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

SYS_P1732

SYS_P1713

SQL> select * from tab_1 ;

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-11999101 a

10-3月-1110101 a

10-3月-111000101 a

10-3月-111100101 a

SQL> alter table tab_1 set interval(1000);

表已更改。

---修改interval为1000

SQL> INSERT INTO tab_1 values(to_date('2011-3-10 0:00:00','yyyy-mm-dd hh24:mi:ss'),1001,10,1,'a');

已创建1行。

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

SYS_P1732

SYS_P1713

SQL> INSERT INTO tab_1 values(to_date('2011-3-10 0:00:00','yyyy-mm-dd hh24:mi:ss'),1200,10,1,'a');

已创建1行。

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

SYS_P1732

SYS_P1713

SYS_P1754

--新增了一个分区

SQL> INSERT INTO tab_1 values(to_date('2011-3-10 0:00:00','yyyy-mm-dd hh24:mi:ss'),1300,10,1,'a');

已创建1行。

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

SYS_P1732

SYS_P1713

SYS_P1754

---没有再新增分区

SQL> select * from tab_1 partition(sys_p171);

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111100101 a

SQL> select * from tab_1 partition(sys_p175);

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111200101 a

10-3月-111300101 a

通过试验可得出:原有记录分区规则保持不变,一旦超出原有分区的最后一个分区的最高值将新增分区,并且分区interval也随之改变。

试验4:range分区表改变为interval分区表

SQL> create table tab_1 (time date,

2id number,

3city_id number,

4value1 number,

5value2 varchar2(10)

6) partition by range(time)

7( partition p_tab_1_0 values less than (to_date('2011-3-10 1:00:00','yyyy-mm-dd hh24:mi:ss')) tablespace tbs_1)

8;

表已创建。

SQL> insert into tab_1 values(to_date('2011-3-10 0:00:00','yyyy-mm-dd hh24:mi:ss'),1,10,1,'a');

已创建1行。

SQL> commit;

提交完成。

SQL> alter table tab_1

2add partition p0 values less than (to_date('2011-3-10 3:00:00','yyyy-mm-dd hh24:mi:ss'))

3tablespace tbs_2

4;

表已更改。

SQL> insert into tab_1 values(to_date('2011-3-10 1:00:00','yyyy-mm-dd hh24:mi:ss'),1,10,1,'a');

已创建1行。

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

P02

SQL> select * from tab_1;

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111101 a

10-3月-111101 a

SQL> alter table tab_1 set interval(numtodsinterval(1,'hour'));

表已更改。

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

P02

SQL> insert into tab_1 values(to_date('2011-3-10 3:00:00','yyyy-mm-dd hh24:mi:ss'),1,10,1,'a');

已创建1行。

SQL> select PARTITION_NAME,partition_positionfrom user_tab_partitions where table_name = 'TAB_1';

PARTITION_NAMEPARTITION_POSITION

------------------------------ ------------------

P_TAB_1_01

P02

SYS_P1773

SQL> select * from tab_1;

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111101 a

10-3月-111101 a

10-3月-111101 a

SQL> select * from tab_1 partition(p_tab_1_0);

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111101 a

SQL> select * from tab_1 partition(p0);

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111101 a

SQL> select * from tab_1 partition(sys_p177);

TIMEIDCITY_IDVALUE1 VALUE2

-------------- ---------- ---------- ---------- ----------

10-3月-111101 a

试验5:range-*复合分区表改变为interval分区表

结论与试验4一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值