我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle的分区表有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle的分区表有什么用

这篇文章主要讲解了“Oracle的分区表有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle的分区表有什么用”吧!

下面对分区表进行简单的实验:

先查询所需要进行分区表的表结构:

sys@FX1TEST>desc fqtbb
 Name    Null?    Type
 -------------------------------------------------------------------------- -------- --------------------------------------------------
 ID         NUMBER
 YXTIME      DATE
 HASH     VARCHAR2(50)
 GOODLOOK     VARCHAR2(20)

 查询表当前的数据:

 sys@FX1TEST>select * from fqtbb;
ID YXTIME       HASH    GOODLOOK
---------- ------------------- -------------------- ----------
 1 2011-01-02 00:00:00 java111    no
 1 2011-04-02 00:00:00 java121    no
 1 2011-05-02 00:00:00 java131    no
 1 2012-02-02 00:00:00 java141    no
 1 2013-01-02 00:00:00 java1ds    no
 1 2012-06-04 00:00:00 java1da    no
 1 2013-12-21 00:00:00 java771    no
 1 2013-02-02 00:00:00 java771    no
 1 2014-06-25 00:00:00 java661    no
 1 2014-01-02 00:00:00 java156    no
 1 2015-05-22 00:00:00 java132    no
 1 2015-06-07 00:00:00 java134    no
 1 2016-04-21 00:00:00 java152    yes
 1 2016-11-11 00:00:00 java761    yes
 1 2016-01-21 00:00:00 java171    yes
 1 2017-04-21 00:00:00 java711    yes
 1 2017-05-05 00:00:00 java717    yes
 1 2017-01-02 00:00:00 java174    yes
 1 2018-03-01 00:00:00 java172    yes
 1 2018-01-23 00:00:00 java176    yes
 1 2018-12-22 00:00:00 java166    yes
21 rows selected.

下面便是一些常用的分区方法

范围分区:利用分区键定义范围,根据实际取值,进行分区选择,这种范围一般以数字形式存储,例如时间,分数,工资等等,所以不可避免的这种分区方法做不到均匀分区。

这里我们用时间范围进行划分 :

create table fqtbb_part (
id number,
yxtime date,
hash varchar(50),
goodlook varchar(20))
PARTITION BY RANGE (yxtime)
(
PARTITION fqtbb_part1 VALUES LESS THAN (TO_DATE('2011-01-01','yyyy-mm-dd'))
TABLESPACE test,
PARTITION fqtbb_part2 VALUES LESS THAN (TO_DATE('2014-01-02','yyyy-mm-dd'))
TABLESPACE test1,
PARTITION fqtbb_part3 VALUES LESS THAN (MAXVALUE)
TABLESPACE test2
);  
Table created.

将大表中的数据插到新建表中:

sys@FX1TEST>insert into fqtbb_part select * from fqtbb;
21 rows created.
sys@FX1TEST>commit;
Commit complete.

接下来查询单独分区的数据信息

sys@FX1TEST>select * from fqtbb_part partition(fqtbb_part3);
ID YXTIME       HASH    GOODLOOK
---------- ------------------- -------------------- ----------
 1 2014-06-25 00:00:00 java661    no
 1 2014-01-02 00:00:00 java156    no
 1 2015-05-22 00:00:00 java132    no
 1 2015-06-07 00:00:00 java134    no
 1 2016-04-21 00:00:00 java152    yes
 1 2016-11-11 00:00:00 java761    yes
 1 2016-01-21 00:00:00 java171    yes
 1 2017-04-21 00:00:00 java711    yes
 1 2017-05-05 00:00:00 java717    yes
 1 2017-01-02 00:00:00 java174    yes
 1 2018-03-01 00:00:00 java172    yes
 1 2018-01-23 00:00:00 java176    yes
 1 2018-12-22 00:00:00 java166    yes
13 rows selected.
sys@FX1TEST>select * from fqtbb_part partition(fqtbb_part2);
ID YXTIME       HASH    GOODLOOK
---------- ------------------- -------------------- ----------
 1 2011-01-02 00:00:00 java111    no
 1 2011-04-02 00:00:00 java121    no
 1 2011-05-02 00:00:00 java131    no
 1 2012-02-02 00:00:00 java141    no
 1 2013-01-02 00:00:00 java1ds    no
 1 2012-06-04 00:00:00 java1da    no
 1 2013-12-21 00:00:00 java771    no
 1 2013-02-02 00:00:00 java771    no
 
 8 rows selected.

当然如果查询分区表的信息。也有相对应的表供用户查询。例如:

sys@FX1TEST>select TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT,STATUS from dba_part_tables where table_name='FQTBB_PART';
TABLE_NAME       PARTITIONING_TYPE  PARTITION_COUNT STATUS
------------------------------ ------------------ --------------- ----------------
FQTBB_PART       RANGE3 VALID

查询表分区所处的表空间:

sys@FX1TEST>select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name='FQTBB_PART';
PARTITION_NAME       NUM_ROWS TABLESPACE SEGMENT_
-------------------- ---------- ---------- --------
FQTBB_PART1TEST   YES
FQTBB_PART2TEST1   YES
FQTBB_PART3TEST2   YES

列分区

列分区根据分区键指定的取值列表进行分区,但是这种分区方法适合的比较少,例如部门列表、所属项目组名称等等

这里根据goodlook键进行定义:

create table fqtbb_parta (
id number,
yxtime date,
hash varchar(50),
goodlook varchar(20))
PARTITION BY list(goodlook)
(
PARTITION fqtbb_part1 VALUES ('yes')
TABLESPACE test,
PARTITION fqtbb_part2 VALUES ('no')
TABLESPACE test1,
PARTITION fqtbb_part3 VALUES (default)
TABLESPACE test2
);  
Table created.

插入数据

sys@FX1TEST>insert into fqtbb_parta select * from fqtbb;
21 rows created.
sys@FX1TEST>commit;
Commit complete.

分区表创建完成之后进行查询验证:

sys@FX1TEST>select * from fqtbb_parta partition(fqtbb_part2);
ID YXTIME       HASH    GOODLOOK
---------- ------------------- -------------------- ----------
 1 2011-01-02 00:00:00 java111    no
 1 2011-04-02 00:00:00 java121    no
 1 2011-05-02 00:00:00 java131    no
 1 2012-02-02 00:00:00 java141    no
 1 2013-01-02 00:00:00 java1ds    no
 1 2012-06-04 00:00:00 java1da    no
 1 2013-12-21 00:00:00 java771    no
 1 2013-02-02 00:00:00 java771    no
 1 2014-06-25 00:00:00 java661    no
 1 2014-01-02 00:00:00 java156    no
 1 2015-05-22 00:00:00 java132    no
 1 2015-06-07 00:00:00 java134    no
12 rows selected.
sys@FX1TEST>select * from fqtbb_parta partition(fqtbb_part1);
ID YXTIME       HASH    GOODLOOK
---------- ------------------- -------------------- ----------
 1 2016-04-21 00:00:00 java152    yes
 1 2016-11-11 00:00:00 java761    yes
 1 2016-01-21 00:00:00 java171    yes
 1 2017-04-21 00:00:00 java711    yes
 1 2017-05-05 00:00:00 java717    yes
 1 2017-01-02 00:00:00 java174    yes
 1 2018-03-01 00:00:00 java172    yes
 1 2018-01-23 00:00:00 java176    yes
 1 2018-12-22 00:00:00 java166    yes
9 rows selected.
sys@FX1TEST>select * from fqtbb_parta partition(fqtbb_part3);
no rows selected

下面是oracle 分区表常用的管理操作,如下:

由于我们之前再范围分区时,设置了default值,所以无法增加分区,所以这里先演示删除分区

sys@FX1TEST>alter table fqtbb_part drop partition fqtbb_part3;
Table altered.
sys@FX1TEST>select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name='FQTBB_PART';
PARTITION_NAME       NUM_ROWS TABLESPACE_NAME      SEGMENT_
------------------------------------------------------------ ---------- ------------------------------------------------------------ --------
FQTBB_PART1      0 TEST     YES
FQTBB_PART2      8 TEST1     YES

添加分区

sys@FX1TEST>alter table fqtbb_part add partition p3 values less than (to_date('2019-09-09','yyyy-mm-dd'));
Table altered.

截断分区:截断分区是指清楚数据,保留分区结构,如下

sys@FX1TEST>alter table fqtbb_part truncate partition p3;
Table truncated.

合并分区:指将相邻的分区合并成一个分区,例如2019、2018 这两个分区,合并之后,分区将采用2019这个界限,并且合并是要合并到2019这个分区里;如下

sys@FX1TEST>alter table fqtbb_part merge partitions fqtbb_part1,fqtbb_part2 into partition fqtbb_part2;
Table altered.
sys@FX1TEST>select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name='FQTBB_PART';
PARTITION_NAME       NUM_ROWS TABLESPACE_NAME      SEGMENT_
------------------------------------------------------------ ---------- ------------------------------------------------------------ --------
FQTBB_PART2SYSTEM     YES
P3SYSTEM     YES

拆分分区:有合并当然就有拆分,意思就是将一个分区拆成两个分区,而之前的分区将不存在;如下

sys@FX1TEST>alter table fqtbb_part split partition fqtbb_part2 at(to_date('2014-01-01','yyyy-mm-dd')) into (partition p1,partition p2);
Table altered.
sys@FX1TEST>select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name='FQTBB_PART';
PARTITION_NAME       NUM_ROWS TABLESPACE_NAME      SEGMENT_
------------------------------------------------------------ ---------- ------------------------------------------------------------ --------
P1SYSTEM     YES
P2SYSTEM     YES
P3SYSTEM     YES

重命名分区:顾名思义,就是让分区换一个名字

sys@FX1TEST>alter table fqtbb_part rename partition p1 to p11;
Table altered.

感谢各位的阅读,以上就是“Oracle的分区表有什么用”的内容了,经过本文的学习后,相信大家对Oracle的分区表有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle的分区表有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle中的分区表是什么

在Oracle数据库中,分区表是指根据指定的规则将表数据分割存储在不同的分区中的表。通过对表进行分区,可以提高查询性能、管理数据、维护数据等方面的效率。分区表可以根据时间范围、列值范围、列表值范围等不同的规则进行分区,每个分区可以独立管理和
Oracle中的分区表是什么
2024-04-09

mysql中的分区表有什么用

本篇内容介绍了“mysql中的分区表有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明1、对于用户来说,分区表是一个独立的逻辑表,但
2023-06-20

oracle中什么是分区表

在Oracle数据库中,分区表是指将表中的数据按照一定的规则分成多个分区存储的表。每个分区可以独立管理和维护,可以根据需要进行单独的备份和恢复操作,可以独立地进行查询和维护。分区表在处理大量数据时,可以提高查询和维护的效率,减少数据库的负载
2023-08-30

hive分区表和分桶表有什么区别

Hive分区表和分桶表是两种数据存储和管理的方式,有以下区别:分区表:在Hive中,分区表是按照指定的列值进行分区存储数据的表,可以根据分区列的值来快速检索和查询数据。分区表的数据存储在不同的目录中,方便管理和维护。分区表可以提高查询性能,
hive分区表和分桶表有什么区别
2024-03-01

oracle表分区的定义是什么

Oracle表分区是将表数据按一定的规则分割存储在不同的分区中,以提高查询性能和管理数据的效率。通过表分区,可以将表数据存储在不同的物理存储位置上,实现数据的快速查询和管理。常见的表分区方式包括范围分区、列表分区、哈希分区和复合分区等。通过
oracle表分区的定义是什么
2024-04-09

oracle表分区查看的方法是什么

要查看Oracle表的分区信息,可以使用以下方法之一:使用SQL查询分区信息:SELECT table_name, subpartition_name, high_valueFROM user_tab_subpartitionsWHER
oracle表分区查看的方法是什么
2024-03-11

Oracle数据库中的分区表是什么

在Oracle数据库中,分区表是通过将大表拆分为更小、更易管理的部分来提高性能和管理效率的技术。分区表将数据逻辑上分割成多个独立的部分,每个部分称为一个分区。这些分区可以根据特定的规则和条件进行定义,例如基于范围、列表、哈希等方式。使用分
Oracle数据库中的分区表是什么
2024-04-09

oracle重建表分区的方法是什么

Oracle重建表分区的方法有以下几种:使用ALTER TABLE语句:可以使用ALTER TABLE语句对表进行重建分区。具体语法为:ALTER TABLE table_name REBUILD PARTITION partition_n
oracle重建表分区的方法是什么
2024-04-09

oracle怎么给已有表添加分区

要给已有的表添加分区,可以按照以下步骤操作:1. 确保你有系统管理员权限或者表所有者权限。2. 使用ALTER TABLE语句来修改表的定义,添加分区。语法如下: ``` ALTER TABLE table_name ADD P
2023-08-31

oracle怎么查看哪些表有分区

查看 oracle 中具有分区的表:运行查询:select table_name from dba_tables where partitioned = 'yes';查询结果中的 table_name 列列出了具有分区的表。如何查看 Ora
oracle怎么查看哪些表有分区
2024-05-13

oracle怎么批量删除分区表的分区

在Oracle中,可以使用以下步骤来批量删除分区表的分区:首先,连接到数据库并登录到sys用户或具有适当权限的用户。使用ALTER TABLE语句来删除分区。例如,要删除名为table_name的表的所有分区,可以使用以下语句:ALTER
oracle怎么批量删除分区表的分区
2024-04-20

oracle怎么查看表的分区

问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。如何查看 Oracle 表的分区在 Oracle 数据库中,可以创建分区表,将大型数据表
oracle怎么查看表的分区
2024-05-14

mysql表分区有什么优缺点

本篇文章为大家展示了mysql表分区有什么优缺点,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、优点可以让单表存储更多的数据。分区表的数据更容易维护,可以通过整个隔断批量删除大量数据,也可以增加新
2023-06-15

编程热搜

目录