分区表的基本操作

php中文网
发布: 2016-06-07 15:55:25
原创
1295人浏览过

分区表的基本操作,简单记录一下~~~ 实例: SQL create table t_part (id int,col2 int,col3 int) 2 partition by range (id) 3 ( 4 partition p1 values less than (10000), 5 partition p2 values less than (20000), 6 partition p3 values less than (300

分区表的基本操作,简单记录一下~~~
实例:
SQL> create table t_part (id int,col2 int,col3 int)
2 partition by range (id)
3 (
4 partition p1 values less than (10000),
5 partition p2 values less than (20000),
6 partition p3 values less than (30000),
7 partition p4 values less than (40000),
8 partition p5 values less than (50000),
9 partition p6 values less than (60000),
10 partition p7 values less than (70000),
11 partition p8 values less than (80000),
12 partition p9 values less than (90000),
13 partition p10 values less than (100000),
14 partition p11 values less than (110000),
15 partition p12 values less than (maxvalue)
16 );

Table created.

SQL> insert into t_part select rownum,rownum+1,rownum+2 from dual connect by rownum
149999 rows created.

SQL> commit;

Commit complete.

1、分区清除,分区删除
alter table [partiontion_tablename] drop/truncate partition [partitionname];

SQL> alter table t_part drop partition p1;

Table altered.

SQL> alter table t_part truncate partition p2;

Table truncated.

2、增加分区
alter table [partiontion_tablename] add partition [partitionname] values less than (120000);
在分区有maxvalue时会报一下错误,需要先把maxvalue分区的数据分区交换到一个中间表,drop 掉该分区之后,新建分区,最后把改中间表的数据重新插入该分区表。
ERROR at line 1:
ORA-14074: partition bound must collate higher than that of the last partition

SQL> alter table t_part add partition p12 values less than (120000);

Table altered.

3、分区交换:
alter table [partiontion_tablename] exchange partition [partitionname] with table [tablename];

SQL> create table t_norm (id int,col2 int,col3 int);

Table created.

SQL> select count(*) from t_part partition(p12);

COUNT(*)
----------
40000

SQL> alter table t_part exchange partition p12 with table t_norm;

Table altered.

SQL> select count(*) from t_part partition(p12);

COUNT(*)
----------
0

SQL> select count(*) from t_norm;

COUNT(*)
----------
40000

同理,我们可以把t_norm表的数据交换到p12分区中。
SQL> alter table t_part exchange partition p12 with table t_norm;

Table altered.

SQL> select count(*) from t_part partition(p12);

COUNT(*)
----------
40000

SQL> select count(*) from t_norm;

COUNT(*)
----------
0

4、分区切割
alter table [partiontion_tablename] split partition [partitionname] at ([values]) into (partition [partitionname1],partition [partitionname2]); --partitionname1,2是一分为二后新的名字

SQL> alter table t_part rename partition p12 to pmax;

Table altered.

SQL> select count(*) from t_part partition (pmax);

COUNT(*)
----------
40000

SQL> alter table t_part split partition pmax at (120000) into (partition p12,partition pmax);

Table altered.

SQL> select count(*) from t_part partition(p12);

COUNT(*)
----------
10000

SQL> select count(*) from t_part partition (pmax);

COUNT(*)
----------
30000

5、分区合并
alter table [partiontion_tablename] merge partitions [partitionname1],[partitionname2] into partition [partitionname_new];

SQL> alter table t_part merge partitions p12,pmax into partition pmax;

Table altered.

SQL> select count(*) from t_part partition (pmax);

COUNT(*)
----------
40000
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号