`

Oracle创建表分区

阅读更多

在数据库性能需要保障的时候,可以使用Oracle进行分区操作
一 表分区
    1.范围分区:一般使用部门字段,地区字段,时间字段

CREATE TABLE USER
(user_id number(20) primary key,
user_name varchar2(100) not null,
regist_time varcahr(200) not null
)
partition by range(regist_time)
(
partition part_01 values less than(to_date('2013-01-01','yyyy-mm-dd') ) tablespace space_01,
partition part_02 values less than(to_date('2014-01-01','yyyy-mm-dd') ) tablespace space_02,
partition part_03 values less than(maxvalue) tablespace space_03
);

    关键字:PARTITION BY RANGE(RANGE_COLUMN)
    上面为按照注册日期为表分三个区,最后一个分区不指定日期值,均设定为MAXVALUE。
    创建分区的同时为分区指定使用的表空间。


    2.散列分区:一般使用编号字段

CREATE TABLE USER
(user_id number(20) primary key,
user_name varchar2(100) not null,
regist_time varcahr(200) not null
)
partition by hash(user_id)
(
partition part_01 tablespace space_01,
partition part_02 tablespace space_02,
partition part_03 tablespace space_03
);

 

二.enable row movement

    一般用于分区表,把表设置成enable row_movement允许修改分区键,并自动根据修改后的的值,决定记录是否被move到其它表分区。即某一行更新时,如果更新的是分区列,并且更新后的列值不属于原来的这个分区,如果开启了这个选项,就会把这行从这个分区中delete 掉,并加到更新后所属的分区。相当于一个隐式的delete+insert,但是不会触发insert/delete触发器。如果没有开启这个选项,就会在更新时报错。

    实例:

create table TARGET_IDENTITY_INFO
(
  CREATED_BY     VARCHAR2(100) default USER not null,
  DATE_CREATED   DATE default SYSDATE not null,
  UPDATED_BY     VARCHAR2(100) default USER not null,
  DATE_UPDATED   DATE default SYSDATE not null,
  USER_ID        NUMBER(20) PRIMARY KEY,
  USER_NAME      VARCHAR2(100) not null,
  REGIST_TIME    VARCAHR(200) not null
)
partition by range (REGIST_TIME)
(
  partition TARGET_201311_PT values less than (to_date('2013-12-01','YYYY-MM-DD')) ,
  partition TARGET_201312_PT values less than (to_date('2014-01-01','YYYY-MM-DD')) ,
  partition TARGET_201401_PT values less than (to_date('2014-02-01','YYYY-MM-DD')) ,
  partition TARGET_201402_PT values less than (to_date('2014-03-01','YYYY-MM-DD')) ,
  partition TARGET_201403_PT values less than (to_date('2014-04-01','YYYY-MM-DD')) ,
  partition TARGET_201404_PT values less than (to_date('2014-05-01','YYYY-MM-DD')) ,
  partition TARGET_201405_PT values less than (to_date('2014-06-01','YYYY-MM-DD')) ,
  partition TARGET_201406_PT values less than (to_date('2014-07-01','YYYY-MM-DD')) ,
  partition TARGET_201407_PT values less than (to_date('2014-08-01','YYYY-MM-DD')) ,
  partition TARGET_201408_PT values less than (to_date('2014-09-01','YYYY-MM-DD')) ,
  partition TARGET_201409_PT values less than (to_date('2014-10-01','YYYY-MM-DD')) ,
  partition TARGET_201410_PT values less than (to_date('2014-11-01','YYYY-MM-DD')) ,
  partition TARGET_201411_PT values less than (to_date('2014-12-01','YYYY-MM-DD')) ,
  partition TARGET_201412_PT values less than (to_date('2015-01-01','YYYY-MM-DD')) ,
  partition TARGET_201501_PT values less than (to_date('2015-02-01','YYYY-MM-DD')) ,
  partition TARGET_201502_PT values less than (to_date('2015-03-01','YYYY-MM-DD')) ,
  partition TARGET_201503_PT values less than (to_date('2015-04-01','YYYY-MM-DD')) ,
  partition TARGET_201504_PT values less than (to_date('2015-05-01','YYYY-MM-DD')) ,
  partition TARGET_201505_PT values less than (to_date('2015-06-01','YYYY-MM-DD')) ,
  partition TARGET_201506_PT values less than (to_date('2015-07-01','YYYY-MM-DD')) ,
  partition TARGET_201507_PT values less than (to_date('2015-08-01','YYYY-MM-DD')) ,
  partition TARGET_201508_PT values less than (to_date('2015-09-01','YYYY-MM-DD')) ,
  partition TARGET_201509_PT values less than (to_date('2015-10-01','YYYY-MM-DD')) ,
  partition TARGET_201510_PT values less than (to_date('2015-11-01','YYYY-MM-DD')) ,
  partition TARGET_201511_PT values less than (to_date('2015-12-01','YYYY-MM-DD')) ,
  partition TARGET_201512_PT values less than (to_date('2016-01-01','YYYY-MM-DD')) ,
  partition TARGET_DEFAULT_PT values less than (maxvalue)
)enable row movement;

 

三.查看表分区信息

    1.DBA查看表分区

select * from dba_tab_partitions

    2.USER查看表分区

select * from user_tab_partitions

    3.DBA查看表分区类型

select * from dba_part_tables

    4.USER查看表分区类型

select * from user_part_tables

    5.查询分区表信息

select * from table partition(part_01)
分享到:
评论

相关推荐

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

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

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

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

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

    Oracle表分区详解(优缺点)

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

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

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

    oracle数据表分区知识

    1. **创建临时分区表**:首先创建一个新的分区表结构,但不包含任何数据。 2. **导入数据**:使用 `INSERT INTO ... SELECT FROM` 或其他方法将原始表的数据导入到新创建的分区表中。 3. **删除原始表**:确认数据...

    Oracle 分区表 分区索引

    ### Oracle 分区表与分区索引详解 #### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并...

    oracle表分区详解

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

    oracle数据库表分区实例

    例如,根据日期字段`s_time`创建一个范围分区表: ```sql CREATE TABLE t_par (s_time DATE, id NUMBER) PARTITION BY RANGE (s_time) ( PARTITION p_max VALUES LESS THAN (MAXVALUE) TABLESPACE users ); ``` 接...

    ORACLE表自动按月分区步骤

    完成分区和索引的创建后,需要将之前备份的数据恢复到新创建的分区表中。这一步骤可以通过简单的INSERT INTO...SELECT FROM语句实现: ```sql INSERT INTO USER_ORDER SELECT * FROM USER_ORDER_DATA; ``` #### 六...

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

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

    ORACLE大表分区

    -- B方案比较适合将非分区表中的数据放到分区表中的一个分区中,不符合要求,所以本分区存储过程默认采用A方案; -- 当然,也支持通过新增参数PARTEXCHANGE来控制是否使用B方案;PARTEXCHANGE为TRUE,使用B方案,为FALSE,...

    oracle分区表分区索引.docx

    下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和分区索引的概念 分区表是指将一个大型表分割成多个小表,每个小表称为一个分区。分区表可以根据不同的方式进行分区,例如...

    Oracle大表分区的技术

    6. **全局索引分区**:当对分区表创建索引时,可以选择创建全局索引,索引覆盖所有分区,或者创建局部索引,每个分区有自己的索引。 二、分区优势 1. **性能提升**:通过只扫描与查询条件相关的分区,显著减少I/O...

    oracle自动建立表分区脚本

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

    oracle创建分区表.pdf

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

    Oracle 分区表 分区索引 索引分区详解

    虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。

    Oracle分区表用法

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

Global site tag (gtag.js) - Google Analytics