`
shenzhongjun
  • 浏览: 3487 次
社区版块
存档分类
最新评论

oracle 建立分区表

阅读更多
一.范围分区
范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。
例一取值范围: CREATE TABLE CUSTOMER (     CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,     FIRST_NAME  VARCHAR2(30) NOT NULL,     LAST_NAME   VARCHAR2(30) NOT NULL,     PHONE        VARCHAR2(15) NOT NULL,     EMAIL        VARCHAR2(80),     STATUS       CHAR(1) ) 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  CUS_PART3 VALUES  LESS  THEN (MAXVALUE) TABLESPACE  CUS_TS02 )
例二按时间划分(随着时间的增长,还需要添加分区表):
CREATE TABLE ORDER_ACTIVITIES (     ORDER_ID      NUMBER(7) NOT NULL,     ORDER_DATE    DATE,     TOTAL_AMOUNT NUMBER,     CUSTOTMER_ID NUMBER(7),     PAID           CHAR(1) ) PARTITION BY RANGE (ORDER_DATE) (   PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACE ORD_TS01,   PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,   PARTITION ORD_ACT_PART03 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03 )
二.列表分区
该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。

--这个是我在自己电脑上测试的实例,一个sql竞赛的资料库中的数据
create table p_t2(a1 number,a2 varchar2(10),a3 varchar2(30),a4 varchar2(10),a5 number)     partition by list(a2)     (partition p_tcp  values('tcp') tablespace p1,     partition p_udp  values('udp') tablespace p2,     partition p_icmp  values('icmp') tablespace p3)
三.散列分区
这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。
散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。

CREATE TABLE HASH_TABLE (   COL NUMBER(8),   INF VARCHAR2(100) ) PARTITION BY HASH (COL) (   PARTITION PART01 TABLESPACE HASH_TS01,   PARTITION PART02 TABLESPACE HASH_TS02,   PARTITION PART03 TABLESPACE HASH_TS03 )
--简写: CREATE TABLE emp (     empno NUMBER (4),     ename VARCHAR2 (30),     sal   NUMBER ) PARTITION BY  HASH (empno) PARTITIONS 8 STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
四.组合范围散列分区
这种分区是基于范围分区和列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之中的分区被称为子分区。

CREATE TABLE SALES ( PRODUCT_ID VARCHAR2(5), SALES_DATE DATE, SALES_COST NUMBER(10), STATUS VARCHAR2(20) ) PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS) (    PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009           (               SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,               SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009           ),    PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009           (               SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,               SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009           ) )
五.复合范围散列分区
这种分区是基于范围分区和散列分区,表首先按某列进行范围分区,然后再按某列进行散列分区。

create table dinya_test  (  transaction_id number primary key,  item_id number(8) not null,  item_description varchar2(300),  transaction_date date )  partition by range(transaction_date)subpartition by hash(transaction_id)  subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)  (      partition part_01 values less than(to_date(‘2006-01-01’,’yyyy-mm-dd’)),      partition part_02 values less than(to_date(‘2010-01-01’,’yyyy-mm-dd’)),      partition part_03 values less than(maxvalue)  );

文章来源:http://www.xifenfei.com/543.html
分享到:
评论

相关推荐

    oracle创建分区表.pdf

    通过上述步骤,可以看出Oracle创建分区表的过程涉及多个环节,需要细心规划和执行。在实际应用中,还需要考虑分区的策略、维护分区的规则以及可能对应用程序造成的影响。正确使用分区表可以显著提升数据库的性能和可...

    oracle分区表之hash分区表的使用及扩展

    Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于...在实际应用中,创建和扩展Hash分区表时,应结合业务需求和数据特性,综合考虑分区键的选择、分区数的设定以及扩展策略,以实现最佳的性能和管理效果。

    Oracle分区表详解

    ### Oracle 分区表详解 #### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能...

    利用kettle自动创建oracle表分区

    创建分区表实例的SQL语句如下: ``` create table DE_TEST( name_tag varchar2(10), day_tag DATE) PARTITION BY RANGE (day_tag) ( PARTITION DE_TEST_20170405 VALUES LESS THAN (TO_DATE('2017-04-06 00:00:...

    Oracle数据库分区表操作方法

    在创建分区表时,可以使用序号分区或日期分区。例如,我们可以使用以下SQL语句创建一个使用序号分区的表: ``` create table dinya_test ( transaction_id number primary key, item_id number(8) not null, ...

    oracle普通表转化为分区表的方法

    Oracle数据库中的分区表是一种高级的表组织形式,它将大表分成多个较小的部分,每个部分称为一个分区,以提高查询性能和管理效率。当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势...

    Oracle分区表用法

    【Oracle分区表用法】 Oracle分区表是一种高级的数据库管理技术,它将大型表的数据分散存储在不同的物理区域,以提升查询效率和系统的整体性能。本文将详细介绍分区表的概念、作用、优缺点,以及各种类型的分区表...

    Oracle表分区详解(优缺点)

    操作方法包括创建、插入、更新、删除和查询分区表,以及重构分区,如合并、拆分和交换分区。在SQL DML命令中,对分区表的操作与非分区表相同,用户无需感知分区的存在。 总的来说,Oracle表分区是大型数据库系统中...

    oracle表中已经有数据还能创建分区吗

    oracle创建分区表

    Oracle分区表培训

    建立分区范例.sql"文件提供了创建分区表的实例。在Oracle中,分区可以基于多种方式,如范围、列表、哈希或复合分区。范围分区通常用于根据连续的数值(如日期)将数据分段;列表分区则适用于预定义的一组值;哈希...

    oracle表分区详解

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

    oracle自动建立表分区脚本

    7. **脚本使用说明**:通常,该脚本会包含SQL语句,用于创建分区表和定义分区策略。DBA需要根据实际业务需求,调整脚本中的参数,如分区字段、分区数量、分区边界等。 8. **注意事项**:在使用自动分区脚本时,需...

    oracle10g分区表自动按时间创建删除分区存储过程

    文件是本人oracle10g分区表自动按时间创建、删除分区的存储过程,测试代码,通过job调用存储过程,每天午夜12点运行一次。妥妥!跟大家分享下!

    导入导出 Oracle 分区表数据

    通过创建一个简单的演示环境,我们演示了如何创建分区表、生成数据以及如何使用这些工具来完成数据的导入导出。这种能力对于DBA来说是非常重要的,尤其是在处理大型数据集时。希望本文能够帮助读者更好地理解和掌握...

    oracle自动一年建立表分区.zip

    2. **创建分区策略**:根据年份和月份设置分区,例如每年一个分区,每月一个子分区。 3. **编写SQL脚本**:创建一个PL/SQL过程,该过程接受当前日期,计算一年前的日期,并为这些日期创建相应的分区。 4. **调度任务...

    ORACLE分区表的创建

    本文将详细介绍在Oracle中如何创建分区表,包括各种分区类型及其应用场景,并通过具体示例进行说明。 #### 二、分区类型及定义 在Oracle中,主要有以下四种类型的分区方法: 1. **范围分区 (Range Partitioning)*...

    Oracle 分区表 分区索引

    #### 四、创建分区表和索引 ##### 创建Range分区 ```sql CREATE TABLE sales ( sale_date DATE, amount NUMBER ) PARTITION BY RANGE (sale_date) ( PARTITION sales_q1_2020 VALUES LESS THAN (TO_DATE('2020-04...

    ORACLE表自动按月分区步骤

    #### 三、创建分区表 接下来,按照以下步骤创建按月自动分区的表`USER_ORDER`: **步骤3:创建按月自动分区表** 使用如下SQL语句创建一个按月自动分区的新表`USER_ORDER`,该表仅包含一个初始分区`p_month_1`。需要...

Global site tag (gtag.js) - Google Analytics