- 浏览: 1266024 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
jackhong1108:
你可能只知道Oracle有like,不知道Oracle有其他的 ...
Hive使用regexp,RLIKE需要使用转义字符 -
pktangshao:
a_bun 写道iijjll 写道使用wmsys.wm_con ...
Oracle 列转行函数 Listagg() -
nayouzhenai:
Spring读取properties文件作为环境变量 -
a_bun:
iijjll 写道使用wmsys.wm_concat()函数也 ...
Oracle 列转行函数 Listagg() -
Horse_Chasing:
鼓励鼓励鼓励鼓励鼓励鼓励鼓励鼓励鼓励鼓励
广州面试小结
说到大数据,在传统数据库里面,分区是首要的解决方案。那么,我总结了一下公司里面的培训资料,做了一份Oracle分区攻略。仅供学习参考。
首先,回顾一下Oracle的表空间创建和表创建。
表空间和表建好了,就要正式开始我们的分区攻略了。
范围分区:
Hash 分区:
列分区:
首先,回顾一下Oracle的表空间创建和表创建。
--表空间创建 create tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp1.dbf'size 50m, 'D:\oracle\oradata\Oracle9i\user_temp1.dbf'size 50m --指出表空间包含什么文件,默认大小 autoextend on --是否自动扩展 next 50m maxsize 20480m --每次扩大多少,扩张到最大是多少 extent management local ; --创建表 create table X_SMALL_AREA ( SMALL_AREA_ID NUMBER(10) not null ) tablespace TBSL_SDDQ --表段X_SMALL_AREA放在表空间TBSL_SDDQ中 pctfree 10 --指定一个百分比 比如说10% 那么当某个数据块使用率超过百分之80的时候系统就会停止往这个数据块里 --插入新的数据 剩下10% 空间留给将来对数据的更新使用 这样可以防止迁移行和链接行的出现 initrans 1 --初始化事务槽的个数 maxtrans 255 --指定最多有多少个事务可以并发操作此数据块 storage --存储参数 ( initial 64k --区段(extent)一次扩展64k minextents 1 --最小区段数 maxextents unlimited --最大区段无限制 );
表空间和表建好了,就要正式开始我们的分区攻略了。
范围分区:
drop table DEPT_RNG; CREATE TABLE DEPT_RNG (DEPTNO NUMBER(2), DEPTNAME VARCHAR2(30)) PARTITION BY RANGE(DEPTNO) (PARTITION D1 VALUES LESS THAN (10) tablespace ts1, PARTITION D2 VALUES LESS THAN (20), PARTITION D3 VALUES LESS THAN (30) tablespace ts3); select segment_name,partition_name,tablespace_name from dba_segments where owner='TEST' and segment_name='DEPT_RNG'; select table_name,partition_name,high_value from user_tab_partitions where table_name='DEPT_RNG'; insert into DEPT_RNG values(1,'Fin'); insert into DEPT_RNG values(10,'Tech'); insert into DEPT_RNG values(25,'HR'); commit; select * from DEPT_RNG; select * from DEPT_RNG partition (d1); select * from DEPT_RNG partition (d2); select * from DEPT_RNG partition (d3); --如果插入的数据在规定分区以外就会出现 ORA-1440 insert into DEPT_RNG values(null,'Office'); --OR insert into DEPT_RNG values(40,'Office'); ERROR at line 1: ORA-14400: inserted partition key does not map to any partition --这个时候就要求添加一个分区: alter table DEPT_RNG add partition Dmax values less than (maxvalue); --为了更好第解决这种分区问题,Oracle 11g推出了Interval Partition(区间分区) CREATE TABLE DEPT_NEW2 (DEPTNO NUMBER(2), DEPT_NAME VARCHAR2(30)) PARTITION BY RANGE(DEPTNO) INTERVAL(10) (PARTITION D1 VALUES LESS THAN (10), PARTITION D2 VALUES LESS THAN (20), PARTITION D3 VALUES LESS THAN (30)) ; 这时候,再插入 insert into DEPT_RNG values(40,'Office'); 通过查询: select segment_name, partition_name from dba_segments where segment_name = 'DEPT_NEW2' 就会由dbms自动创建一个SYS_开头的分区,根据INTERVAL(10)的设置,RANGE每增加,新增一个分区。 根据日期的范围分区使用以下: interval (numtoyminterval (1,’month’)) --每一个月份增加一个分区 interval (numtoyminterval (1,’year’)) --每一年增加一个分区 这样创建的表分区会默认分配在SYSTEM表空间。 可以使用store in (test,PERFSTAT)放在interval语句后面,如: INTERVAL(10) store in (test,PERFSTAT) --则会均匀地放在预设的表空间里面 ( PARTITION D1 VALUES LESS THAN (10), PARTITION D2 VALUES LESS THAN (20), PARTITION D3 VALUES LESS THAN (30) )
Hash 分区:
drop table product; CREATE TABLE product (id NUMBER(5), name VARCHAR2(30)) PARTITION BY HASH(id) PARTITIONS 16 STORE IN (ts1,ts2,ts3,ts4); insert into product values(10,0); insert into product values(11,1); insert into product values(22,2); insert into product values(33,3); insert into product values(44,4); insert into product values(55,5); insert into product values(66,6); insert into product values(77,7); insert into product values(88,8); insert into product values(99,9); insert into product values(10,10); insert into product values(11,11); commit; select segment_name,partition_name,tablespace_name from dba_segments where owner='TEST' and segment_name='PRODUCT'; select * from product partition(SYS_P67); select * from product partition(SYS_P68); select * from product partition(SYS_P66);
列分区:
CREATE TABLE DEPT_LIST ( DeptNo NUMBER(2), Dname VARCHAR2(14), Loc VARCHAR2(13)) PARTITION BY LIST (Loc) (PARTITION D_East VALUES ('Shanghai', 'Nanjing'), PARTITION D_West VALUES ('Chengdu', 'Chongqing'), PARTITION D_South VALUES ('Guangzhou', 'Fuzhou'), PARTITION D_North VALUES ('Beijing', 'Shenyang') ); insert into DEPT_LIST values (1,'GZ','Guangzhou'); insert into DEPT_LIST values (1,'GZ','GuangZhou'); insert into DEPT_LIST values (2,'BJ','Beijing'); select * from DEPT_LIST; select * from DEPT_LIST partition(D_South);
发表评论
-
你真的会SQL吗?关于SQL的join和on之间的区别
2014-12-05 22:11 2627写了那么多年的SQL,居然发现自己写的是错的,实在是惭愧不 ... -
慎用堆表
2014-11-18 11:14 1494有时候我们常常为了使用方便,省略建主键的建表方式。 因为很 ... -
Oracle谓词推入
2014-04-08 09:20 7116在Oracle中,谓词一般就是指where后面的那些过滤条 ... -
Oracle 执行计划
2013-11-14 10:40 0explain plan for select a.produ ... -
Oracle Share Pool 与ORA-04031
2013-07-16 11:25 1823oracle share pool详解:http://blo ... -
Oracle 分析函数Lead(),Lag()
2013-04-22 21:18 12853其实这2个函数的作用非常好理解,Lead()就是取当前顺序的 ... -
总结Oracle数组和BULK COLLECT INTO
2013-04-19 23:29 1803Oracle中使用数组,就像JAVA使用对象List< ... -
[转]Oracle表连接方式学习
2013-04-10 20:40 1499出自:http://www.itpub.net/threa ... -
Oracle SQL 嵌套CASE WHEN
2013-04-09 20:11 13229尝试了一下,Oracle CASE WHEN 是可以支持嵌套 ... -
Oracle FUNCTION与PROCEDURE的最大区别
2013-04-03 15:12 1880Oracle function里面是可以允许有DML语句的, ... -
Oracle Merge into语句
2013-03-29 15:35 2883研究这个语句完全是为了偷懒而使用的。 因为在Java写后 ... -
Oracle填坑指南之长度为0的字符串
2013-03-18 16:20 1408用一下语句查询,你认为结果是什么?? select cas ... -
Oracle数据库设计中的不更新原则
2013-02-04 16:39 1155在新增数据的时候,如果新的逻辑涉及到原有的信息,那么尽量是能 ... -
Oracle SQL判断字符串是否在目标字符串中的函数
2013-01-18 15:33 5644根据需求,写了一段方法。 用于识别以下的情况: 判断 字 ... -
[转]Oracle中使用正则表达式
2012-11-13 14:05 1440Oracle10开始支持正则表达式。 介绍内容如下: OR ... -
Oracle中使用Java存储过程
2012-11-13 13:51 1616从Oracle8i开始,就有了对Java存储过程的支持。 O ... -
Oracle索引的新认识
2012-11-08 16:16 1327首先,Oracle的索引有。 普通索引B*树,BitMap索 ... -
Oracle和Cognos Framework Manager中decode妙用,CASE WHEN也可以!
2012-11-05 17:44 2799我们都知道Decode函数可以用来做什么作用,如果这个不知道的 ... -
Oracle 数组类型
2012-10-16 11:07 4892Oracle的数组类型,范例 ... -
Oracle 列转行函数 Listagg()
2012-10-16 09:58 175013这是一个Oracle的列转行函数:LISTAGG() ...
相关推荐
#### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能、可用性和可维护性。 #...
Oracle分区技术是一种数据库管理系统(DBMS)特性,用于将大型表和索引分割成更小、更易管理和处理的部分,从而提升查询性能和数据管理效率。这种技术特别适用于数据仓库和决策支持系统(DSS),因为这些系统通常...
Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于处理无法清晰定义分区范围的大型数据表。这种分区方式通过计算分区键的哈希值来决定数据存储在哪个分区,以此达到数据分散和负载均衡的目的。Hash分区...
Oracle分区是一种将大表或索引分割成较小部分的技术,旨在提高查询性能、减少管理开销并简化数据维护操作。通过合理地将数据分成多个物理块,可以显著提升查询效率,特别是在处理大量历史数据或执行复杂的分析任务时...
oracle分区资料· oracle分区资料· oracle分区资料·
Oracle分区表是数据库管理系统Oracle中的一个高级特性,用于将大表分成较小、更易管理的部分,从而提高查询性能,优化存储管理和数据维护。在大型企业级应用中,尤其是在处理大量数据时,分区表是不可或缺的技术手段...
Oracle分区表是一种高级的数据库管理技术,它将大型表的数据分散存储在不同的物理区域,以提升查询效率和系统的整体性能。本文将详细介绍分区表的概念、作用、优缺点,以及各种类型的分区表及其创建方法。 1. **表...
#### 一、Oracle分区概述 在Oracle数据库中,分区技术是一种非常有效的管理大型表和索引的方法。通过将一个大的表或索引分成多个较小的部分(分区),可以显著提高查询性能,并简化表和索引的管理。 #### 二、何时...
Oracle 分区表是指将一个大表分割成多个小表,每个小表称为一个分区,分区表的优点是可以提高查询性能、改善管理型、增强容错性等。 分区表的分类: 1. 范围分区(Range Partitioning) 范围分区是将数据基于范围...
整体来看,Oracle分区表自动维护脚本通过利用数据库的调度机制和自动化执行一系列维护任务,有助于确保数据库表的数据分区得到及时和正确的维护管理。对于大型的OLTP和数据仓库系统,这种自动化脚本可以显著减轻...
Oracle 分区是一种将大表和索引分成可管理的小部分,以提高查询效率、维护性和可用性。这种技术适用于处理海量数据,通过将数据分散到不同的存储单元,使得管理和查询更为高效。 **一、Oracle 分区简介** Oracle ...
Oracle数据库中的表分区是一种高级组织技术,它通过将表的大数据集划分为较小的、更易于管理的部分(即分区),从而提高查询性能和可管理性。表分区可以按照不同的策略进行划分,如范围分区、列表分区等。 #### 二...
#### 一、Oracle分区表概述 在Oracle数据库中,分区是一种对大型表进行物理分割的方法,它可以显著提高查询性能并简化数据管理任务。通过将一个大表分成多个较小的部分(即分区),可以更快地执行查询操作,尤其是...
Oracle 表分区是一种高效的数据管理策略,用于处理大数据量的表,以提升查询性能和数据库的可维护性。本文将详细介绍Oracle表分区的概念、作用、优缺点,以及各种类型的分区和操作方法。 首先,理解表空间和分区表...
"Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...
Oracle 分区表分区索引是 Oracle 数据库中的一种重要机制,它可以提高数据的存储和查询效率。下面将详细介绍 Oracle 分区表分区索引的类型、分类、创建方法和维护方式。 一、分区表和分区索引的概念 分区表是指将...
Oracle分区技术是数据库管理系统中用于优化大规模数据存储和查询性能的一种高级特性。它允许将大表和索引分成较小、更易管理和操作的部分,每个部分称为一个分区。分区的主要目标是提高查询性能、简化管理任务并增强...
Oracle分区表是Oracle数据库中一种优化大数据处理的高级特性,它通过将一个大表分成多个逻辑部分,即分区,来提高查询性能、简化管理和增强可用性。分区技术在处理海量数据时尤其有用,因为它们允许数据库仅扫描与...