浅谈Oracle分区表之范围分区

在oracle 10g世界里面,分区表主要分range,hash,list,range-hash,range-list五种类型,在oracle 11g中,则发展到了3*3的分区组合

在Oracle 10g世界里面,分区表主要分range,hash,list,range-hash,range-list五种类型,在oracle 11g中,则发展到了3*3的分区组合类型,以满足更多的应用场景!但无论在什么情况下,范围分区都是最常见的一种表分区方式,尤其在需要对过期的数据进行整理归档,只保留一定时期内的数据的条件下,几乎都会优先选择使用范围分区的方式!分区表可以说是一项百利而无一害的技术,当数据量达到一定的级别后(通常是超过100G后),就算使用了ASM技术,数据库中一样会产生严重的I/O等待事件!

下面来简要介绍下范围分区,范围分区的主要优点主要如下:
1:分区表可以将表存储在多个表空间内,进而离散I/O;
2:同时各个分区维护各自的本地索引(一般使用local索引,,而不是global索引);
3:select语句可以根据索引进行分区范围扫描,减少查询语句所带来的一致性读;
4:可以对单个分区进行备份或者truncate,归档或者清除过期的数据;
5: 可以方便的对表的分区进行添加,删除,truncate,拆分和合并操作

一:创建一张分区表,分区的条件是以销售日期来界定,同时分区的索引为本地索引,每个分区的对应一个单独的表空间,基于离散I/O和方便管理的双重需要

SQL> create table sale_data
  2  (sale_id number(5), salesman_name varchar2(30),sales_date date)
  3  partition by range(sales_date)
  4  (
  5  partition sales_01 values less than (to_date(’01/02/2012′,’DD/MM/YYYY’)) tablespace tbs_sale01,
  6  partition sales_02 values less than (to_date(’01/03/2012′,’DD/MM/YYYY’)) tablespace tbs_sale02,
  7  partition sales_03 values less than (to_date(’01/04/2012′,’DD/MM/YYYY’)) tablespace tbs_sale03,
  8  partition sales_04 values less than (to_date(’01/05/2012′,’DD/MM/YYYY’)) tablespace tbs_sale04,
  9  partition sales_05 values less than (to_date(’01/06/2012′,’DD/MM/YYYY’)) tablespace tbs_sale05,
 10  partition sales_06 values less than (to_date(’01/07/2012′,’DD/MM/YYYY’)) tablespace tbs_sale06,
 11  partition sales_07 values less than (to_date(’01/08/2012′,’DD/MM/YYYY’)) tablespace tbs_sale07,
 12  partition sales_08 values less than (to_date(’01/09/2012′,’DD/MM/YYYY’)) tablespace tbs_sale08,
 13  partition sales_09 values less than (to_date(’01/10/2012′,’DD/MM/YYYY’)) tablespace tbs_sale09,
 14  partition sales_10 values less than (to_date(’01/11/2012′,’DD/MM/YYYY’)) tablespace tbs_sale10,
 15  partition sales_11 values less than (to_date(’01/12/2012′,’DD/MM/YYYY’)) tablespace tbs_sale11,
 16* partition sales_12 values less than (to_date(’31/12/2012′,’DD/MM/YYYY’)) tablespace tbs_sale12)
Table created.

SQL> select owner,partitioning_type,partition_count,status from dba_part_tables where table_name=’SALE_DATE’;

OWNER          PARTITI PARTITION_COUNT STATUS
—————————— ——- ————— ——–
SALE          RANGE      12 VALID

SQL> create index ind_sale_data_date on sale_data(sale_id) local
  2  (
  3  partition sales_01 tablespace tbs_sale01,
  4  partition sales_02 tablespace tbs_sale02,
  5  partition sales_03 tablespace tbs_sale03,
  6  partition sales_04 tablespace tbs_sale04,
  7  partition sales_05 tablespace tbs_sale05,
  8  partition sales_06 tablespace tbs_sale06,
  9  partition sales_07 tablespace tbs_sale07,
 10  partition sales_08 tablespace tbs_sale08,
 11  partition sales_09 tablespace tbs_sale09,
 12  partition sales_10 tablespace tbs_sale10,
 13  partition sales_11 tablespace tbs_sale11,
 14* partition sales_12 tablespace tbs_sale12)
Index created.

SQL> select segment_name,partition_name,tablespace_name from user_segments where segment_name in (‘SALE_DATA’,’IND_SALE_DATA_DATE’);

SEGMENT_NAME      PARTITION_NAME      TABLESPACE_NAME
——————– —————————— ——————–
SALE_DATA      SALES_01       TBS_SALE01
SALE_DATA      SALES_02       TBS_SALE02
SALE_DATA      SALES_03       TBS_SALE03
SALE_DATA      SALES_04       TBS_SALE04
SALE_DATA      SALES_05       TBS_SALE05
SALE_DATA      SALES_06       TBS_SALE06
SALE_DATA      SALES_07       TBS_SALE07
SALE_DATA      SALES_08       TBS_SALE08
SALE_DATA      SALES_09       TBS_SALE09
SALE_DATA      SALES_10       TBS_SALE10
SALE_DATA      SALES_11       TBS_SALE11

SEGMENT_NAME      PARTITION_NAME      TABLESPACE_NAME
——————– —————————— ——————–
SALE_DATA      SALES_12       TBS_SALE12
IND_SALE_DATA_DATE   SALES_01       TBS_SALE01
IND_SALE_DATA_DATE   SALES_02       TBS_SALE02
IND_SALE_DATA_DATE   SALES_03       TBS_SALE03
IND_SALE_DATA_DATE   SALES_04       TBS_SALE04
IND_SALE_DATA_DATE   SALES_05       TBS_SALE05
IND_SALE_DATA_DATE   SALES_06       TBS_SALE06
IND_SALE_DATA_DATE   SALES_07       TBS_SALE07
IND_SALE_DATA_DATE   SALES_08       TBS_SALE08
IND_SALE_DATA_DATE   SALES_09       TBS_SALE09
IND_SALE_DATA_DATE   SALES_10       TBS_SALE10  

SEGMENT_NAME      PARTITION_NAME      TABLESPACE_NAME
——————– —————————— ——————–
IND_SALE_DATA_DATE   SALES_11       TBS_SALE11
IND_SALE_DATA_DATE   SALES_12       TBS_SALE12

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1932460.html

(0)
上一篇 2025年2月22日 21:53:58
下一篇 2025年2月22日 21:54:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • MySQL主从数据库同步延迟问题解决

    最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来 最近在做mysql主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些…

    数据库 2025年2月23日
    100
  • RMAN ORA-19693错误解决

    10.2.0.5 on windows 64 bit 现象:从一个 server A拷贝backupset 至另一个server B。在server B上恢复。首先使用lsquo;catalog 10.2.0.5 on windows 64…

    数据库 2025年2月23日
    100
  • ORA-02030问题解决方法又一例

    给普通用户赋予对v$视图的查询权限,结果报 ORA-02030 错误,ORA-02030: 只能从固定的表/视图查询(ORA-02030: can only select f 首页 → 数据库技术 背景: 阅读新闻 ora-02030问题解…

    数据库 2025年2月23日
    100
  • Oracle表空间增长异常解决又一例

    客户环境某台数据库临时表空间异常增长(日期随机),观察下来可能是下列两个oracle自身的定时job引起, 描述:客户环境某台数据库临时表空间异常增长(日期随机),观察下来可能是下列两个oracle自身的定时job引起, 时间:2014/0…

    数据库 2025年2月23日
    100
  • 如何获取Oracle DBID

    如何获取Oracle DBID,由于DBID在控制文件和数据文件中都存在记录,所以如果能够mount数据库就可以查询v$database视图获得。 1.查询v$database获得 由于DBID在控制文件和数据文件中都存在记录,所以如果能够…

    数据库 2025年2月23日
    100
  • Linux中对MySQL优化

    要求: MySQL数据库管理与维护 1、熟悉Linux上安装、配置和优化MySQL数据库, 2、熟悉 Mysql的AB复制以及读写分离的实现,能完成 要求: mysql数据库管理与维护 1、熟悉Linux上安装、配置和优化MySQL数据库,…

    数据库 2025年2月23日
    100
  • Oracle的SQL语句中如何处理‘’符号

    lsquo;rsquo;符号在SQL中有特殊含义,所以在SQL中想要写入,需要特殊处理。如下SQL语句就不能正确运行:SQLgt; select #39; ‘&’符号在SQL中有特殊含义,所以在SQL中想要写入&,需要特殊处…

    数据库 2025年2月23日
    100
  • Oracle 10G安装中一些常见问题解决

    一,如何彻底删除旧版本的Oracle1,在cmd里运行DBCA,在这里删除Oracle实例,有多少删多少;2,在开始程序中找到Oracle子目录下 一,如何彻底删除旧版本的Oracle 1,在cmd里运行DBCA,在这里删除Oracle实例…

    数据库 2025年2月23日
    100
  • Oracle 建立临时表语法及使用技巧

    Oracle Temporary Tables(Oracle 临时表)1. 建立临时表语法A.ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法CREATE GLOBAL TEMPORAR Oracle Tempora…

    数据库 2025年2月23日
    100
  • Linux Mysql知识学习篇

    1.查看Linux 是否安装了Mysql[root@localhost zhoulinghong]# rpm -qa |grep MySQL MySQL-server-community-5.1.22-0.rhel4已经安装了 1.查看Li…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论