- 浏览: 556571 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (533)
- spring (8)
- struts (21)
- hibernate (17)
- java其他 (73)
- 设计模式 (2)
- 开发软件/插件 (26)
- android (8)
- extjs4 (1)
- 网络编程 (4)
- 生活杂记 (3)
- ibatis (5)
- 应用服务器 (4)
- js (26)
- html/css (16)
- linux (0)
- db (32)
- jsp/servlet (13)
- xml (9)
- webservice (10)
- 错误/异常处理 (23)
- 线程 (10)
- maven (7)
- lucene (2)
- python (0)
- 报表 (1)
- mongodb (6)
- restful (6)
- ssl (1)
最新评论
-
zmwxiaoming:
...
struts2拦截器验证登陆状态 -
u012413283:
感谢楼主,同样的问题解决了
eclipse下安装m2e的maven插件报错的各类解决方案(含pom editor没装好的解决方案) -
javalucky:
你妹,想不吐槽都不行啊,eclipse 那来的maven4My ...
clipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin: -
zhaoyh82:
感谢楼主
eclipse下安装m2e的maven插件报错的各类解决方案(含pom editor没装好的解决方案) -
hua2011:
按照楼主说的,还是没有出现pom editor编辑器,麻烦楼主 ...
eclipse下安装m2e的maven插件报错的各类解决方案(含pom editor没装好的解决方案)
1创建和使用分区表
Oracle分区表分为四类:范围分区表;列表分区表;哈希分区表;组合分区表
范围分区表
创建一个按字段数据范围分区的表,分区置于指定的不同表空间中
示例代码:
--为各个分区准备独立的表空间
create tablespace test_space01 datafile‘d:/tbs01.dbf’ size 50m
create tablespace test_space02 datafile‘d:/tbs02.dbf’ size 50m
create tablespace test_space03 datafile‘d:/tbs03.dbf’ size 50m
create tablespace test_space04 datafile‘d:/tbs04.dbf’ size 50m
--创建分区表,
CREATE TABLE range_example(
range_key_column DATE,
DATA VARCHAR2(20),
ID integer
)
PARTITION BY RANGE(range_key_column)
(
PARTITION part01 VALUES LESS THAN(TO_DATE('2008-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACEtest_space01,
PARTITION part02 VALUES LESS THAN(TO_DATE('2008-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE test_space02,
PARTITION part03 VALUES LESS THAN(TO_DATE('2008-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE test_space03,
PARTITION part04 VALUES LESS THAN (MAXVALUE)TABLESPACE test_space04
);
--插入测试数据
insert into range_examplevalues(TO_DATE('2008-06-10 00:00:00','yyyy-mm-dd hh24:mi:ss'), '1111', 1);
insert into range_examplevalues(TO_DATE('2008-07-20 00:00:00','yyyy-mm-dd hh24:mi:ss'), '2222', 2);
insert into range_examplevalues(TO_DATE('2008-08-25 00:00:00','yyyy-mm-dd hh24:mi:ss'), '3333', 3);
commit;
--在表上执行查询
select * from range_example;
--在表分区上执行查询
select * from range_example partition(part01);
列表分区表
创建一个按字段数据列表固定可枚举值分区的表。插入记录分区字段的值必须在列表中,否则不能被插入。
示例代码:
CREATE TABLE list_example(
dnameVARCHAR2(10),
DATA VARCHAR2(20)
)
PARTITION BY LIST(dname)
(
PARTITION part01VALUES('初始登记','转移登记'),
PARTITION part02 VALUES('更名登记','楼盘变更'),
PARTITION part03 VALUES('抵押登记'),
PARTITION part03 VALUES('限制登记')
);
哈希分区表
创建一个按字段数据Hash值分区的表
示例代码:
CREATE TABLE hash_example(
hash_key_column DATE,
DATA VARCHAR2(20)
)
PARTITION BY HASH(hash_key_cloumn)
(
PARTITION part01,
PARTITION part02
);
组合分区表
在分区中可以再建立子分区,以实现分区组合。可任意对上述各类分区进行组合分区。
此例中创建了一个由范围分区和哈希分区组合实现分区的表。
示例代码:
CREATE TABLE range_hash_example(
range_column_key int,
hash_column_key INT,
DATAVARCHAR2(20)
)
PARTITION BY RANGE(range_column_key)
SUBPARTITION BY HASH(hash_column_key)SUBPARTITIONS 2
(
PARTITION part_1 VALUES LESS THAN (100000000)
(
SUBPARTITION part_1_sub_1,
SUBPARTITION part_1_sub_2,
SUBPARTITION part_1_sub_3
),
PARTITION part_2 VALUES LESS THAN (200000000)
(
SUBPARTITION part_2_sub_1,
SUBPARTITION part_2_sub_2
)
);
--注 subpartitions 2 并不是指定subpartition的个数一定为2,实际上每个分区的子分区个数可以不同。如果不指定subpartition的具体明细,则系统按照subpartitions的值指定subpartition的个数生成子分区,名称由系统定义 。
2增加表分区
-- range partitioned table
ALTER TABLE range_example ADD PARTITIONpart04 VALUES LESS THAN (TO_DATE('2008-10-1 00:00:00','yyyy-mm-ddhh24:mi:ss'));
--list partitioned table
ALTER TABLE list_example ADD PARTITIONpart04 VALUES ('TE');
--Adding Values for a List Partition
ALTER TABLE list_example MODIFY PARTITION part04 ADD VALUES('MIS');
--Dropping Values from a List Partition
ALTER TABLE list_example MODIFY PARTITION part04 DROP VALUES('MIS');
--hash partitioned table
ALTER TABLE hash_example ADD PARTITIONpart03;
--增加subpartition
ALTER TABLE range_hash_example MODIFY PARTITIONpart_1 ADD SUBPARTITION part_1_sub_4;
注:hash partitioned table 新增partition时,现有表的中所有data都有重新计算hash值,然后重新分配到分区中。所以被重新分配的分区的 indexes需要rebuild 。
3删除分区
ALTER TABLE ... DROP PARTITION part_name;
4分区合并
合并父分区
ALTER TABLE range_example MERGE PARTITIONSpart01_1, part01_2 INTO PARTITION part01 UPDATE INDEXES;
--如果省略update indexes子句的话,必须重建受影响的分区的index;
ALTER TABLE range_example MODIFY PARTITIONpart02 REBUILD UNUSABLE LOCAL INDEXES;
合并子分区
ALTER TABLE composite_example
MERGE SUBPARTITIONS part_1_sub_2, part_1_sub_3INTO SUBPARTITION part_1_sub_2 UPDATE INDEXES;
5转换分区
可以将分区表转换成非分区表,或者几种不同分区表之间的转换。
如下:
CREATE TABLE hash_part02 AS SELECT * FROMhash_example WHERE 1=2;
ALTER TABLE hash_example EXCHANGE PARTITIONpart02 WITH TABLE hash_part02;
这时,分区表hash_example中的part02分区的资料将被转移到hash_part02这个非分区表中。
6关于分区表和索引
在分区表上可以建立三种类型的索引:1和普通表一样的全局索引;2.全局分区索引;3.本地分区索引。
它们之间的区别如下图示:
以表range_example为例。
1.建立普通的索引
create index com_index_range_example_id onrange_example(id);
2.建立本地分区索引
create index local_index_range_example_id onrange_example(id) local;
3.建立全局分区索引
create index gidx_range_exampel_id onrange_example(id)
GLOBAL partition by range(id)
(
part_01 values less than(1000),
part_02 values less than(MAXVALUE)
);
对于分区索引的删除,local index 不能指定分区名称,单独的删除分区索引。
local index 对应的分区会伴随着data分区的删除而一起被删除。globalpartition index 可以指定分区名称,删除某一分区。但是有一点要注意,如果该分区不为空,则会导致更高一级的索引分区被置为UNUSABLE 。
ALTER INDEX gidx_range_exampel_id drop partition part_01 ; 此句将导致part_02 状态为UNUSABLE
发表评论
-
聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)
2014-02-17 09:54 1038索引的重要性数据库性能优化中索引绝对是一个重量级的因素,可 ... -
数据库中索引的优缺点
2014-02-17 09:46 412一、索引的概念 索 ... -
将一张表的查询结果插入到另一张表
2013-12-10 16:18 729代码 方法一: 1 select into 和 in ... -
ORACLE中NOT IN 的替代
2013-10-08 10:34 893查询哪些书没有借出? 典型的查询方式为: SELECT ... -
Oracle group by 用法实例详解
2013-09-29 16:59 1026Group by的语法 Select [fi ... -
oracle用sum函数实现累加
2013-09-29 16:55 892====================Questio ... -
oracle sum()over函数的使用
2013-09-29 16:49 926oracle sum()over函数的使用 over ... -
项目从oracle迁移到sqlserver后,代码中分页的相对改动
2013-09-29 16:43 704场景是一个后台的管理项目,突然要把数据库从 ... -
Sql Server 数据分页
2013-09-29 16:18 7651.引言 在列表查询时由于数据量非常多,一次性查出来会非常 ... -
Oracle高级应用之解锁表
2013-08-24 00:54 819每篇一笑:老鼠去方 ... -
Oracle高级应用之合并MERGE
2013-08-24 00:55 918为了方便大家学习和测试,所有的例子都是在Oracle自带用 ... -
Oracle高级应用之物化视图(materialized view)
2013-08-24 00:55 2195原文地址:http://hi.baidu.com/guke ... -
Oracle高级查询之GROUP BY
2013-08-22 11:44 831开篇一笑:两个男人在饭店里边吃饭边聊天,甲:“我不得不在这儿 ... -
Oracle高级应用之去重聚合函数
2013-08-22 11:41 933开篇一笑:高中的时候,自行车被偷,早上顺路搭同学的自行车。我 ... -
巧用rownum查询连续季度
2013-08-22 11:40 510下面可以说是这类查询的一个模版SQL,如果大家在工作中碰到类 ... -
Oracle高级查询之CONNECT BY
2013-08-22 11:39 801为了方便大家学习和测试,所有的例子都是在Oracle自带用户 ... -
oracle获取当前年月日时分秒季度周
2013-08-13 11:50 1741oracle中如何获取系统当前时间 select to ... -
oracle去重
2013-06-21 15:09 1244我们在实际工作中,当信息系统数据质量不高的时候,可能存在数据 ... -
java.sql.SQLException: ORA-00911: invalid character 解决方法(转)
2013-06-20 17:04 1127控制台抛出这个异常:java.sql.SQLExcepti ... -
MySQL system variable 'max_allowed_packet' is set to (1MB).
2013-06-14 14:10 1667安装opencms使用mysql数 ...
相关推荐
Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于处理无法清晰定义分区范围的大型数据表。这种分区方式通过计算分区键的哈希值来决定数据存储在哪个分区,以此达到数据分散和负载均衡的目的。Hash分区...
Oracle 分区表管理是数据库系统中的一个重要概念,它允许大表的数据被组织成更小、更易管理和查询的单元,从而提高数据处理的效率。在Oracle数据库中,分区表是通过将一个大表分解为多个逻辑上关联的分区来实现这一...
### Oracle 分区表详解 #### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能...
Oracle分区表是一种高级的数据库管理技术,它将大型表的数据分散存储在不同的物理区域,以提升查询效率和系统的整体性能。本文将详细介绍分区表的概念、作用、优缺点,以及各种类型的分区表及其创建方法。 1. **表...
Oracle分区表是数据库管理系统Oracle中的一个高级特性,用于将大表分成较小、更易管理的部分,从而提高查询性能,优化存储管理和数据维护。在大型企业级应用中,尤其是在处理大量数据时,分区表是不可或缺的技术手段...
Oracle数据库中的分区表是一种高级的表组织形式,它将大表分成多个较小的部分,每个部分称为一个分区,以提高查询性能和管理效率。当表的大小超过2GB时,官方推荐使用分区表,因为它们在处理大量数据时具有显著优势...
"Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...
### 导入导出Oracle分区表数据 #### 一、概述 在Oracle数据库管理中,对分区表进行数据的导入与导出是一项常见的任务。...希望本文能够帮助读者更好地理解和掌握Oracle分区表数据的导入导出技术。
下面我们将深入探讨Oracle分区表和锁的应用。 一、Oracle分区表 1. **分区概念**:Oracle分区表是将一个大表逻辑上划分为多个较小的部分,每个部分称为一个分区。每个分区都有自己的索引和维护操作,这使得对大...
整体来看,Oracle分区表自动维护脚本通过利用数据库的调度机制和自动化执行一系列维护任务,有助于确保数据库表的数据分区得到及时和正确的维护管理。对于大型的OLTP和数据仓库系统,这种自动化脚本可以显著减轻...
在Oracle数据库管理中,分区表是一种非常实用的功能,它能够帮助优化查询性能并简化大型表的管理。当涉及到批量删除或清除分区表中的数据时,就需要掌握...希望本文能够帮助到正在处理Oracle分区表数据管理的朋友们。
Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) 范围分区是将数据基于范围...
#### 一、Oracle分区表概述 在Oracle数据库中,分区是一种对大型表进行物理分割的方法,它可以显著提高查询性能并简化数据管理任务。通过将一个大表分成多个较小的部分(即分区),可以更快地执行查询操作,尤其是...
总结来说,Oracle分区表是一种有效管理大规模数据的手段,通过合理分区,可以显著提升查询效率,简化维护工作,并提供更高的数据可用性。然而,使用分区也需要权衡其带来的复杂性和额外的存储需求。正确理解和应用...
本文详细介绍了将 Oracle 普通表转换为分区表的方法,包括备份创建表脚本、查看数据类型、创建分区表、迁移数据和更新索引和约束等步骤。通过将普通表转换为分区表,可以提高查询效率、减少存储空间和提高数据管理...
通过上述示例可以看出,在Oracle中创建分区表可以极大地提升数据处理能力和系统性能。合理选择合适的分区类型并正确配置分区参数,能够为数据库带来显著的好处,包括但不限于减少I/O操作次数、加快查询速度以及简化...
Oracle数据库中的分区表是将大型数据表分割成多个小表,以提高应用系统的性能和方便数据管理。在本文中,我们将详细介绍分区表的使用方法和优点。 分区表的优点 使用分区表可以带来以下几个优点: ·增强可用性:...
Oracle分区技术提供了强大的工具来管理和优化大型表和索引。通过合理选择分区策略和正确使用分区管理功能,可以显著提高数据库性能并降低管理复杂性。在实际应用中,应根据具体的业务需求和技术环境灵活运用这些分区...
- 分区表的管理可能比非分区表复杂,尤其是当涉及到大量分区时。 - 对于频繁更改分区键的场景,分区表的维护成本较高。 #### 四、分区类型及示例 ##### 1. 范围分区 范围分区是根据一个列的值的范围来决定数据存储...