`
zqb666kkk
  • 浏览: 732539 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

oracle 9i 大数据表按月分区

 
阅读更多

oracle 9i的分区 比11G少了一个自动分区的功能 所以分区表只能自己先手动指定

如下表示日志表 按照字段logtime range分区 每个月创建一个分区

 -- Range分区:

--  Range分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中。

   --    如按照时间划分,2010年1月的数据放到a分区,2月的数据放到b分区,在创建的时候,需要指定基于的列,以及分区的范围值。

   --    在按时间分区时,如果某些记录暂无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在分区中。

 
create table sys_log_fq (  pid            NUMBER not null,
  yhdm           VARCHAR2(60),
  bmdm           VARCHAR2(24),
  pdaid          VARCHAR2(1024),
  simid          VARCHAR2(100),
  logmodule      VARCHAR2(2),
  logtype        VARCHAR2(8),
  operatetype    CHAR(2),
  methodname     VARCHAR2(200),
  methodinfo     VARCHAR2(4000),
  execstatus     VARCHAR2(2),
  execerrorinfo  VARCHAR2(2000),
  alltimespent   NUMBER,
  proxytimespent NUMBER,
  logcontent     VARCHAR2(4000),
  logtime        DATE,
  memo           VARCHAR2(400),
  returnflag     CHAR(2),
  returninfo     VARCHAR2(2000),
  gpsx           VARCHAR2(40),
  gpsy           VARCHAR2(40))tablespace test_DATA
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  ) partition by range (logtime)

(
partition p1 values less than (to_date('2012-04-1', 'yyyy-mm-dd')),   --时间范围小于'2012-04-1'的数据放

    -- 一个分区
partition p2 values less than (to_date('2012-05-1', 'yyyy-mm-dd')),
partition p3 values less than (to_date('2012-06-1', 'yyyy-mm-dd')),
partition p4 values less than (to_date('2012-07-1', 'yyyy-mm-dd')),
partition p5 values less than (to_date('2012-08-1', 'yyyy-mm-dd')),
partition p6 values less than (to_date('2012-09-1', 'yyyy-mm-dd')),
partition p7 values less than (to_date('2012-10-1', 'yyyy-mm-dd')),
partition p8 values less than (to_date('2012-11-1', 'yyyy-mm-dd')),
partition p9 values less than (to_date('2012-12-1', 'yyyy-mm-dd')),

partition p10 values less than (maxvalue)           --如果某些记录暂无法预测范围,可以创建maxvalue分区,所----有不在指定范围内的记录都会被存储到maxvalue所在分区中。

 

 

如果是已经存在的普通表则可以新建一个分区表进行中转

 

把原先普通表的数据导入到分区表 然后renme下表名

 

 导表通过  insert into sys_log_fq  (select * from sys_log),

数据太大 9I下数据库容导入易报错 建议分时间范围 数据分批导入。

 

分区后 实验测试得出比不分区的表一个月内查询速度快20秒(具体根据您的表数据情况)

 

如果要对分区后的表字段logtime值就行修改如果修改后的值不是该分区的范围 则会报错

为了解决这个问题,可以使用如下命令更改分区表的属性:

SQL> alter table 表名 enable row movement;

如果新插入的数据logtime是2013年的 对比上面的分区不在p1-p9分区范围 那么它会默认放进p10分区

这时候2013这个logtime值的数据只有在p10分区内才能查询到

时间一长p10 分区内的数据将会越来越多,当然需要维护,就需要新增分区

--在有maxvalue的情况下添加分区要用split语法

   alter table sys_log split partition p10 at (to_date('2013-12-1', 'yyyy-mm-dd'))
    into (partition p11, partition p10);

执行完这句  p10分区内已经查询不到2013年的数据了,只能在p11分区内查询到(实验得出,绝非理论推断)

如果不想每次都手动写新增分区语句去数据库执行 那么久可以写一个定时job

可以每个月 月么生成一个下个月的分区,(哎,用过oracle 11G的分区后就觉得9I 的分区好麻烦- -!)

 

下面是常用的分区表sql

--查询当前用户下分区表的分区信息:
SELECT * FROM USER_TAB_PARTITIONS T WHERE T.TABLE_NAME='SYS_LOG';
--查询某分区下的数据量:
SELECT COUNT(*) FROM sys_log PARTITION(P2);

--查询索引、表上在那些列上创建了分区:
SELECT * FROM USER_PART_KEY_COLUMNS;

--添加分区 – 在最后一个分区之后添加新分区
ALTER TABLE SALES ADD PARTITION P4 VALUES LESS THAN (4000); 
--拆分分区 - 将一个大分区中的记录拆分到两个分区中
[sql]
ALTER TABLE SALES SPLIT PARTITION P2 AT (1500) INTO (PARTITION P21, PARTITION P22);

  --查询每个分区表的分区的大小以及分区表的索引等
   SELECT *  FROM dba_segments t WHERE t.segment_name ='表名' and owner='用户名';

 

 

 

分享到:
评论

相关推荐

    oracle 9I.rar

    7. **数据仓库功能**:Oracle 9I增加了对数据仓库的支持,如星型和雪花型模式的优化,快速的OLAP(在线分析处理)操作,以及并行查询和分区技术,提升了大数据处理能力。 8. **XML支持**:9I版本引入了XML DB,允许...

    ORACLE9i_优化设计与系统调整

    例如,分区技术可以将大数据表分解为更小、更易管理的部分,从而提高查询速度。 索引优化是提升数据库性能的重要手段。Oracle 9i支持B树、位图、R树等多种索引类型,选择合适的索引类型和结构对于查询性能至关重要...

    Oracle9i手册 4

    2. **高级分区功能** - 分区技术在Oracle9i中得到了进一步增强,允许用户根据业务需求更加灵活地管理大数据集,提高查询效率。 3. **XML支持** - Oracle9i全面支持XML标准,可以将XML数据直接存储在数据库中,并提供...

    Oracle9i数据库基础

    3. **分区表**:Oracle9i引入了分区表的概念,允许大型表按照特定规则(如范围、列表或哈希)进行分区,从而提高查询速度和管理效率。 4. **物化视图**:物化视图是预先计算好的查询结果,可以显著提高查询性能。...

    oracle 9i & 10g

    - **Partitioning Enhancements**:分区技术进一步完善,支持更多的分区类型,如范围、列表、哈希和复合分区,提高大数据量表的查询效率。 - **Real-Time Query**:实时查询优化,提供了更快的查询响应时间,适合...

    Oracle 9i Database Performance Tuning

    Oracle 9i数据库性能调优是一门至关重要的技术,它涉及到如何最大化地利用数据库系统资源,提高查询速度,减少响应时间,并确保系统稳定运行。Oracle 9i是Oracle数据库产品线的一个重要版本,它引入了许多新特性以...

    精通Oracle9i书

    1. **数据仓库优化**:Oracle9i引入了实时计算和数据仓库优化功能,提升了分析处理的速度,使企业在大数据环境中能更快地获取洞察。 2. **高级安全**:提供了增强的身份验证、加密和审计功能,确保数据的安全性,...

    oracle9i的查询优化

    ### Oracle9i的查询优化:深入解析 #### 引言 在关系数据库系统中,查询优化扮演着至关重要的角色,尤其是在处理复杂SQL语句时,它直接影响着查询的执行效率和响应时间。Oracle9i作为业界领先的数据库管理系统之一...

    Oracle9i模式对象.pptx

    本篇将深入探讨Oracle 9i中的模式对象,包括表、列的操作以及并行操作、临时表和空间管理。 1. **表**:表是数据库中数据存储的基础单元,按照行和列的形式组织数据。每个表都有一个唯一的表名,由一系列列组成,每...

    Oracle9i10g编程艺术

    《Oracle9i10g编程艺术》一书深入探讨了Oracle9i和10g数据库体系结构的关键概念,为读者提供了全面而深入的理解。本书由Thomas Kyte撰写,他是Oracle公司的核心技术集团副总裁,以其丰富的经验和技术洞察力,为读者...

    oracle 9i dba

    4. 分区技术:了解范围分区、列表分区、散列分区等,以改善大数据量表的处理速度。 四、故障排查与维护 1. 错误日志:分析Alert Log和 trace 文件,找出问题原因。 2. 数据库恢复:处理ORA错误,进行实例恢复、介质...

    Oracle 9i & 10g编程艺术:深入数据库体系结构

    8. 分区技术:详细讨论了范围分区、列表分区、哈希分区等不同类型的分区策略,以及如何利用分区提升大数据量表的管理和查询效率。 9. 版本迁移与升级:提供了从Oracle 9i到10g的升级指南,包括数据迁移、兼容性问题...

    Oracle8i_9i数据库基础

    §5.2.4 维护表分区和索引分区 167 §5.3 簇与分区有关的数据字典 169 §5.3.1 分区、簇数据字典列表 169 §5.3.2 基本的分区、簇信息查询 169 第六章 使用SQL 进行数据操作 170 §6.1 INSERT操作 170 §6.1.1 用...

    Oracle.9i&10g;编程艺术深入数据库体系-源代码.zip

    9. **分区**:如何通过分区来改善大数据表的查询性能。 通过研究这个压缩包中的源代码,你可以深入理解Oracle数据库的工作原理,提升数据库设计和管理能力。无论是对初学者还是有经验的数据库管理员,这些源代码都...

    Oracle8i_9i数据库基础(DOC格式)

    - 表分区:对大数据表进行分区,提高查询效率。 - 资源管理:设置资源限制,确保高优先级的会话得到足够的资源。 总的来说,《Oracle8i_9i数据库基础》涵盖了Oracle数据库的基础知识和核心特性,对于想要学习和掌握...

    大数据开发oracle试题

    ### 大数据开发Oracle试题解析 #### 一、判断题解析 **1. Bitmap索引不适用于OLTP型数据库** **正确答案:A. 对** **解析:**Bitmap索引通常用于数据仓库环境中,适用于处理大量的历史数据和复杂的查询。在OLTP...

    oracle_database_9i10g11g编程艺术源码

    3. **分区和分片**:学习如何通过分区策略提高大数据量表的查询性能。 4. **并发控制**:了解如何处理多用户环境下的并发问题,如死锁和行级锁定机制。 5. **备份与恢复**:研究如何利用RMAN进行数据库备份和恢复,...

    复件 (8) 1.Oracle8i_9i数据库基础.rar

    3. **分区功能**:引入了分区功能,允许大型表按特定规则划分为更小、更易管理的部分,提高了查询性能和管理效率。 4. **数据仓库优化**:提供了星型模式支持和快速聚合功能,优化了数据仓库应用的性能。 5. **...

Global site tag (gtag.js) - Google Analytics