oracle list 分区详解,Oracle分区表详解:-程序员宅基地

技术标签: oracle list 分区详解  

Oracle分区表详解:

范围分区

范围分区根据您为每个分区建立的分区键值的范围将数据映射到分区。它是最常见的分区类型,通常与日期一起使用。例如,您可能希望将销售数据分区为每月分区。

使用范围分区时,请考虑以下规则:

每个分区都有一个VALUES LESS THAN子句,它指定了分区的不包含的上限。等于或高于此文字的分区键的任何值都将添加到下一个更高的分区。

除第一个以外,所有分区都具有由VALUES LESS THAN先前分区上的子句指定的隐式下限。

甲MAXVALUE字面可以为最高分区来定义。MAXVALUE表示比分区键的任何其他可能值更高的虚拟无限值,包括空值。

以下部分给出了一个典型的例子。该语句创建一个sales_range在该sales_date字段上进行范围分区的table()。

https://www.cndba.cn/redhat/article/2304

范围分区的典型例子:

CREATE TABLE sales_range

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

sales_date DATE)

PARTITION BY RANGE(sales_date)

(

PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE(‘02/01/2000’,’MM/DD/YYYY’)),

PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE(‘03/01/2000’,’MM/DD/YYYY’)),

PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE(‘04/01/2000’,’MM/DD/YYYY’)),

PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE(‘05/01/2000’,’MM/DD/YYYY’))

);

https://www.cndba.cn/redhat/article/2304

列表分区

列表分区使您能够明确地控制行映射到分区的行为。

您可以通过在每个分区的说明中指定分区键的离散值列表来执行此操作。

这与范围分区不同,其中一系列值与分区和散列分区相关联,其中哈希函数控制行到分区映射。

列表分区的优点是您可以以自然的方式对无序和无关的数据集进行分组和组织。

列表分区的细节可以用一个例子来描述。在这种情况下,假设您要按地区划分销售表。

这意味着根据其地理位置将状态分组在一起,如下例所示。

列出分区示例:

CREATE TABLE sales_list

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_state VARCHAR2(20),

sales_amount NUMBER(10),

sales_date DATE)

PARTITION BY LIST(sales_state)

(

PARTITION sales_west VALUES(‘California’, ‘Hawaii’),

PARTITION sales_east VALUES (‘New York’, ‘Virginia’, ‘Florida’),

PARTITION sales_central VALUES(‘Texas’, ‘Illinois’),

PARTITION sales_other VALUES(DEFAULT)

);

scott@QHPRI>desc sales_list;

Name Null? Typehttps://www.cndba.cn/redhat/article/2304

SALESMAN_ID NUMBER(5)

SALESMAN_NAME VARCHAR2(30)

SALES_STATE VARCHAR2(20)

SALES_AMOUNT NUMBER(10)

SALES_DATE DATE

insert into sales_list values (100,’anshen’,’California’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list values (100,’anshen’,’New York’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Virginia’,101,’05-JAN-2017’);

insert into sales_list values (100,’anshen’,’Florida’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list values (100,’anshen’,’Texas’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);

insert into sales_list values (100,’anshen’,’Texas’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list values (100,’anshen’,’Florida’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);

insert into sales_list values (100,’anshen’,’California’,100,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list values (101,’anshen’,’taiwan’,101,’05-JAN-2017’);

通过检查行的分区列的值是否落在描述分区的值集合内,将一行映射到分区。例如,行如下插入:

(10,’Jones’,’Hawaii’,100,’05-JAN-2017’)映射到分区sales_west

(21,’Smith’,’Florida’,150,’15-JAN-2017’)映射到分区sales_east

(32,’Lee’,’Colorado’,130,’21-JAN-2017’)映射到分区sales_other

与范围和散列分区不同,列分区不支持多列分区密钥。如果表由列表分区,则分区键只能由表的单列组成。

该DEFAULT分区使您能够避免使用默认分区指定列表分区表的所有可能值,以便不映射到任何其他分区的所有行都不会生成错误。

列表分区就是列出某一列所有的字段值,然后根据字段值进行数据选址DML操作。

CREATE TABLE sales_list_test

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_state VARCHAR2(20),

sales_amount NUMBER(10),

sales_date DATE)

PARTITION BY LIST(sales_state)

(

PARTITION sales_west VALUES(‘California’, ‘Hawaii’),

PARTITION sales_east VALUES (‘New York’, ‘Virginia’, ‘Florida’),

PARTITION sales_central VALUES(‘Texas’, ‘Illinois’)

);

insert into sales_list_test values (100,’anshen’,’California’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list_test values (100,’anshen’,’New York’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Virginia’,101,’05-JAN-2017’);

insert into sales_list_test values (100,’anshen’,’Florida’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list_test values (100,’anshen’,’Texas’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);

insert into sales_list_test values (100,’anshen’,’Texas’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

insert into sales_list_test values (100,’anshen’,’Florida’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Illinois’,101,’05-JAN-2017’);

insert into sales_list_test values (100,’anshen’,’California’,100,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’Hawaii’,101,’05-JAN-2017’);

接下来,我们插入一个在list 分区中不存在的一个字段的值,taiwan。

insert into sales_list_test values (101,’anshen’,’taiwan’,101,’05-JAN-2017’);

scott@QHPRI>insert into sales_list_test values (101,’anshen’,’taiwan’,101,’05-JAN-2017’);

insert into sales_list_test values (101,’anshen’,’taiwan’,101,’05-JAN-2017’)

*

ERROR at line 1:

ORA-14400: inserted partition key does not map to any partition

散列分区

哈希分区可以轻松分割不适用于范围或列表分区的数据。它使用简单的语法来实现,并且易于实现。当以下情况时,它比范围分区更好:

您事先不知道有多少数据映射到给定范围内

范围分区的大小将相当显着或将难以手动平衡

范围划分将导致数据不合需要地聚集

性能特征如并行DML,分区修剪和分区连接很重要

分割,删除或合并分区的概念不适用于哈希分区。相反,哈希分区可以添加和合并。https://www.cndba.cn/redhat/article/2304https://www.cndba.cn/redhat/article/2304

CREATE TABLE sales_hash

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

week_no NUMBER(2))

PARTITION BY HASH(salesman_id)

PARTITIONS 4

STORE IN (ts1, ts2, ts3, ts4);https://www.cndba.cn/redhat/article/2304

https://www.cndba.cn/redhat/article/2304

CREATE TABLE sales_hash_test1

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

week_no NUMBER(2))

PARTITION BY HASH(salesman_id)

PARTITIONS 5

STORE IN (ts1, ts2, ts3, ts4);

CREATE TABLE sales_hash_test10

(salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

week_no NUMBER(2))

PARTITION BY HASH(salesman_id)

PARTITIONS 10

STORE IN (ts1, ts2, ts3, ts4);

前面的语句创建一个表sales_hash,它是salesman_id字段上的哈希分区。表空间名称ts1,ts2,ts3,和ts4。使用这种语法,我们确保在指定的表空间中以循环方式创建分区。

哈希分区不用指定PARTITION_NAME 系统创建。

scott@QHPRI>select TABLE_OWNER,TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME,USER_STATS,INTERVAL from dba_tab_partitions where TABLE_OWNER=’SCOTT’ and TABLE_NAME=upper(‘sales_hash_test10’);

TABLE_OWNER TABLE_NAME COM PARTITION_NAME SUBPARTITION_COUNT TABLESPACE_NAME USE INThttps://www.cndba.cn/redhat/article/2304

SCOTT SALES_HASH_TEST10 NO SYS_P85 0 TS1 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P86 0 TS2 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P87 0 TS3 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P88 0 TS4 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P89 0 TS1 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P90 0 TS2 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P91 0 TS3 NO NO

TABLE_OWNER TABLE_NAME COM PARTITION_NAME SUBPARTITION_COUNT TABLESPACE_NAME USE INThttps://www.cndba.cn/redhat/article/2304

SCOTT SALES_HASH_TEST10 NO SYS_P92 0 TS4 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P93 0 TS1 NO NO

SCOTT SALES_HASH_TEST10 NO SYS_P94 0 TS2 NO NO

10 rows selected.

Elapsed: 00:00:00.05

当然我们创建分区也可以指定分区名字:如下

create table hash_table(

obj_id number(10),

object_id number(10),

object_name varchar2(128),

owner varchar2(30),

object_type varchar2(19),

created date)

partition by hash(object_id)

(

partition h_objid1 tablespace ts1 ,

partition h_objid2 tablespace ts2,

partition h_objid3 tablespace ts3,

partition h_objid4 tablespace ts4

) ;

scott@QHPRI>select TABLE_OWNER,TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,TABLESPACE_NAME,USER_STATS,INTERVAL from dba_tab_partitions where TABLE_OWNER=’SCOTT’ and TABLE_NAME=upper(‘hash_table’);

TABLE_OWNER TABLE_NAME COM PARTITION_NAME SUBPARTITION_COUNT TABLESPACE_NAME USE INT

SCOTT HASH_TABLE NO H_OBJID1 0 TS1 NO NO

SCOTT HASH_TABLE NO H_OBJID2 0 TS2 NO NO

SCOTT HASH_TABLE NO H_OBJID3 0 TS3 NO NO

SCOTT HASH_TABLE NO H_OBJID4 0 TS4 NO NO

Elapsed: 00:00:00.03https://www.cndba.cn/redhat/article/2304

版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle分区表详解:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28895791/article/details/116289744

智能推荐

Matlab如何多行添加注释和取消注释_matlab 注释与解注释-程序员宅基地

文章浏览阅读2.2k次。添加注释 Ctrl + /取消注释 Ctrl +t_matlab 注释与解注释

PHP正则全文,php正则-程序员宅基地

文章浏览阅读891次。php正则[编辑]概述PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。简介PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。可以生成Forms,ComboBoxes,Gr..._php zhengz

记录一下delaunary三角剖分过程_osg delaunaytriangulator-程序员宅基地

文章浏览阅读455次。一种是,简单的对点的关系进行一下约束,硬性生成三角形面;第二种: 用delaunary三角构建.(区别明显)第三种: 是可以进行角度和面积约束的构建(暂时没有,后面用新的平台进行搭建)这种构建,应该是拓扑结构保持的比较好的.不过这个算法暂时没有移植. ==>下次使用tetGen,这个库来进行四面体剖分. 目前的带上使用(osg+qt; IDE:vs+qt_tool这些工具,进行搭建一个三维处理框架平台. (虽然也使用过sharpGL进行过平移,旋转的手动设计,但是工作量.._osg delaunaytriangulator

Linux操作系统详解_linux系统-程序员宅基地

文章浏览阅读8.7k次,点赞34次,收藏183次。Linux是一个开源的Unix-like操作系统。它是由芬兰计算机科学家Linus Torvalds于1991年首次发布。Linux以其稳定性,安全性和灵活性而受到欢迎,并被广泛用于服务器,超级计算机,嵌入式系统和许多其他平台。在某些领域,例如智能手机和平板电脑(主要是Android操作系统),Linux的衍生品也非常流行。Linux操作系统的主要组成部分是Linux内核,它负责管理系统的硬件。此外,大多数Linux发行版都包括许多自由和开源软件,这些软件提供了文件系统,GUI,包管理,网络功能。_linux系统

【JS】手写实现Array数组扁平化方法flat_array.prototype.myflat-程序员宅基地

文章浏览阅读126次。实现要求:参考MDN。_array.prototype.myflat

利用webxml网站提供的webservice查询手机号码归属地-程序员宅基地

文章浏览阅读169次。为什么80%的码农都做不了架构师?>>> ..._如何用webxml查询到手机号码

随便推点

2018中国移动校招笔试记录_中国移动2018笔试-程序员宅基地

文章浏览阅读6.7k次,点赞5次,收藏22次。 本来打算找实习,就投了简历,后来才知道奥,中国移动不要实习,每年都是统一招聘,他们肯定希望招长期,毕竟这个工作费时费力。中国移动校招分为面试——笔试——再面试,如果都过了,恭喜你大佬,你就可以在规定时间内去报到啦。虽然我只是打酱油的,可能里面的大佬觉得可以给我一次做题的机会,所以,下面是我记录的笔试内容,希望对正在找这方面资料的你有帮助(考试前我尝试找,没找到)。1.文字理解(感..._中国移动2018笔试

Objective-C语言--iOS应用程序入口_objective-c 入口文件-程序员宅基地

文章浏览阅读3.4k次。Objective-C程序入口简介_objective-c 入口文件

Microsoft Edge浏览器使用时过滤网页广告弹窗等插件推荐---电脑初始维护_microsoft edge浏览器拦截广告插件-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏8次。浏览器处理原因:网民在浏览网页时,总会被大量广告弹窗、垃圾信息、流氓行为所干扰,降低我们的网络体验;有时不小心点击到垃圾弹窗,电脑会自动植入一些木马病毒,降低电脑使用寿命;这时浏览器预处理就会显得很重要;这里展示一波博主自己的网页状态:维护插件(uBlock Origin)安装教程:点击以下获取扩展链接:获取 Microsoft Edge 扩展https://microsoftedge.microsoft.com/addons?hl=zh-CN在搜索框中输入uBlock Or.._microsoft edge浏览器拦截广告插件

Native开发工具之CPU-和架构(三,中高级Android开发应该要了解_hwcap-程序员宅基地

文章浏览阅读2.8k次。NDK 工具链假设在函数调用之前进行 16 字节堆栈对齐。默认工具和选项会强制实施此规则。如果编写的是汇编代码,必须确保堆栈对齐,而且其他编译器也遵守此规则。请参阅以下文档了解更多详情:GCC 在线文档:Intel 386 和 AMD x86-64 选项不同 C++ 编译器和操作系统的调用规范Intel IA-32 Intel 架构软件开发者手册第 2 卷:指令集参考Intel IA-32 Intel 架构软件开发者手册第 3 卷:系统编程指南System V 应用二进制接口:Intel386_hwcap

计算机网络数据指标_流量强度-程序员宅基地

文章浏览阅读2.8w次。在计算机内存中1KB = 1024 Byte1M = 1024 KB1G = 1024 M在计算机网络数据传输中1kbps = 1000 bps1mbps = 1000 kbps1gbps = 1000 mbps_流量强度

2021陇剑杯网络安全大赛wp-内存取证(详细题解)_kobackupdec工具-程序员宅基地

文章浏览阅读2.2k次。6.1使用volatility对内存进行分析,配合mimikatz插件跑密码6.2根据提示,使用filescan命令在内存中查找文件,发现华为备份文件HUAWEI P40_2021xxxxxx,搜索后发现多个相关文件,最后发现HUAWEI P40_2021-aa-bb xx.yy.zz.exe 为一自解压文件,解压后即为备份找到解密工具kobackupdec,根据上一步提示,根据提示将空格替换为_,解密成功..._kobackupdec工具

推荐文章

热门文章

相关标签