`

oracle表分区

 
阅读更多

1.表空间及分区表的概念:

表空间:是一个或多个文件的集合,所有的数据对象都存放在指定的表空间中。

分区表:当表中的数据不断增大后就会导致查询的速度降低,影响整个应用程序的性能,这时就应该考虑对表进行分区。表分区后,逻辑上仍然是一张完整的表,只是表中的数据在物理上存放到多个表空间(物理文件)上,这样查询数据是,不至于每次都扫描整张表。

 

2.分区功能能将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可以集体管理,也可以单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,对于应用程序而言,分区后的表与分分区的表完全相同,使用SQL DML命令访问时无需修改。

 

3.什么情况下会使用表分区:

a.表的大小超过2GB.

b.表中包含历史数据,新的数据被增加到新的分区中。

 

4.表分区的几种类型及操作方法:

a.范围分区,考虑以下规则:

   1)每个分区都必须有一个VALUES LESS子句,指定上限值

   2)所有分区,除了第一个,都会有一个隐式的下限值,就是前一个分区的上限值

   3)在最高分区中,使用MAXVALUE代表一个不确定的值。

   例子一:

CREATE TABLE CUSTOMER(

 CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

 ORDER_DATE    DATE,

 ...

)  

//按大小分区

PARTITION BY RANGE (CUSTOMER_ID)

(

   PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, 

  PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 

)

 //按时间分区

PARTITION BY RANGE(ORDER_DATE)

(

PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03

)

 

b.列表分区(某列的值只有几个):

PARTITION  BY  LIST(area)

(

   PARTITION  part1 VALUES ('guangdong','beijing') TABLESPACE  Part1_tb, 
    PARTITION  part2 VALUES ('shanghai','nanjing')  TABLESPACE  Part2_tb 

)

 

c.散列分区(当列的值没有合适的条件时):

 PARTITION BY HASH(COL)

(

  PARTITION PART01 TABLESPACE HASH_TS01, 
  PARTITION PART02 TABLESPACE HASH_TS02, 
  PARTITION PART03 TABLESPACE HASH_TS03 

)

 d.组合分区

PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST(STATUS)

(

   PARTITIOON P1 VALUES LESS THEN(TO_DATE('2003-01-01','yyyy-MM-dd')) TABLESPACE rptfact209

   (

      SUBPARTITION P1SUB1 VALUES('ACTIVE') TABLESPACE rptfact209,

      ...

   ),

 

有关表分区的一些维护操作:

一、添加分区:ALTER TABLE  TEST ADD PARTITION P3 VALUES LESS THEN(TO_DATE('2003-06-01','yyyy-MM-dd'));添加的分区应该高于最后一个分区界限。

二、删除分区:ALTER TBALE TEST DROP PARTITION P3;

三、截断分区:指删除某个分区中的数据,并不会删除分区

ALTER TABLE TEST TRUNCATE PARTITION P3;

四、合并分区:不能讲分区合并到界限低的分区

ALTER TABLE TEST MERGE PARTITION P1,P2 INTO PARTITION P2;

五、拆分分区:不能对HASH类型的分区进行拆分

ALTER TABLE TEST SBLIT   PARTITION P2 AT(TO_DATE('2013-01-01','yyyy-MM-dd'))  INTO (PARTITION P2S1,PARTITION P2S2);

六、重命名表分区:ALTER TABLE TEST RENAME PARTITION P2S1 TO P2;

七、相关查询:

查询表上有多少个分区:

SELECT * FROM useR_TAB_PARTITIONS WHERE TABEL_NAME = 'tableName';

查询数据库所有分区表的信息:

SELECT * FROM DBA_PART_TABLES

查询当前用户所有分区表的信息:

SELECT * FROM USER_PART_TABLES

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    oracle表分区详解

    - 分区表的管理可能比非分区表复杂,尤其是当涉及到大量分区时。 - 对于频繁更改分区键的场景,分区表的维护成本较高。 #### 四、分区类型及示例 ##### 1. 范围分区 范围分区是根据一个列的值的范围来决定数据存储...

    Oracle表分区 建表空间 创建用户

    ### Oracle表分区、建表空间与用户管理 #### 一、表空间的创建与管理 在Oracle数据库中,**表空间**(Tablespace)是物理存储的逻辑容器,它由一个或多个数据文件组成。创建一个新的表空间对于数据库的管理非常重要...

    Oracle表分区详解

    在实际应用中,还需要关注分区表的索引、物化视图、分区维护操作(如添加、合并和拆分分区)等方面,以确保系统性能和可维护性。 总结来说,Oracle表分区是大型数据库系统中的重要优化手段,通过合理规划和应用,...

    Oracle表分区详解(优缺点)

    已存在的非分区表无法直接转化为分区表,需要通过特定的在线重定义操作来完成。此外,分区会增加数据库的复杂性,可能需要更多的存储空间,并且对数据库设计和维护提出了更高要求。 Oracle表分区主要有以下几种类型...

    利用kettle自动创建oracle表分区

    在创建Oracle表分区之前,需要先创建一个分区表实例。创建分区表实例的SQL语句如下: ``` create table DE_TEST( name_tag varchar2(10), day_tag DATE) PARTITION BY RANGE (day_tag) ( PARTITION DE_TEST_...

    oracle表分区详细讲解

    - 已经存在的表不能直接转化为分区表,但Oracle提供了在线重定义功能。 #### 四、表分区的类型及操作方法 1. **范围分区**:最常用的分区类型之一,根据分区键的范围将数据映射到各个分区。通常使用日期作为分区键...

    oracle表分区实例

    Oracle数据库中的表分区是一种优化大型数据表性能的技术,它将一个大表划分为多个更小、更易管理的部分,每个部分称为一个分区。通过分区,可以提高查询速度、简化管理和维护,以及改善备份和恢复的效率。以下是...

    ORACLE表分区例子

    在下载的“oracle表分区”压缩包中,可能包含了演示如何在Oracle环境中创建、操作和管理分区表的SQL脚本和文档。通过学习和实践这些示例,你可以深入理解并掌握Oracle表分区技术,从而更好地应对大数据量的挑战。

    ORACLE表分区指引

    - 分区表和索引:大型表和索引可以被进一步划分为更小、更容易管理的部分。比如,Table T1 和 Index I1 可以被分割成多个分区。 分区带来的好处包括: - 表可用性:分区可以让每个分区独立管理,备份和恢复操作...

    oracle表分区详解【转】

    Oracle数据库中的表分区是数据库设计中的一个重要概念,它允许我们将大型数据表划分为较小、更易管理和查询的部分。本文将深入探讨Oracle表分区的详细知识,包括其原理、类型、优势以及如何在实际操作中应用。 一、...

    oracle表分区详解.pdf

    总之,Oracle表分区是一项强大的数据库管理技术,它在处理大规模数据时提供了许多优势,但也需要数据库管理员掌握相关的知识和技能来有效管理分区表。随着数据量的不断增长,合理利用分区策略可以帮助企业节省维护...

    oracle表分区知识

    - **维护和管理**:分区表的维护和备份恢复可能更复杂,需要考虑如何处理跨分区的操作,以及如何有效地执行分区级别的DML操作。 - **性能监控**:分区后,数据库管理员需要持续监控分区性能,适时调整分区策略,如...

    oracle表分区.[归类].pdf

    本篇将详细介绍Oracle分区的原理、优缺点以及各种分区方法,并提供相关操作示例。 一、Oracle分区简介 Oracle分区的核心理念是“分而治之”,它将大表和索引分成多个小的逻辑单元,称为分区。这种技术有助于减少...

    Oracle表分区技术总结.doc

    Oracle表分区技术是一种高效管理大型数据库表的策略,它通过将大表划分为较小的、独立的分区,提高数据管理的便捷性和性能。这一技术自Oracle8开始引入,旨在应对数据量急剧增长带来的挑战。 首先,分区技术的核心...

    Oracle 表分区

    - 已存在的非分区表转换成分区表较为复杂,Oracle提供在线重定义功能解决这一问题。 - 需要更多的存储空间,因为每个分区都是独立的表空间。 - 设计和管理分区需要专业知识,增加了数据库设计的复杂性。 4. **表...

    oracle表分区精讲

    - 已经存在的表不能直接转换为分区表,但Oracle提供在线重定义表的功能,可以在一定程度上解决这一问题。 #### 四、表分区的几种类型及操作方法 - **范围分区**:根据特定的范围将数据分配到各个分区。最常见的...

Global site tag (gtag.js) - Google Analytics