oracle 增加间隔分区,oracle分区表之间隔分区(oracle 11g) - 漫兮网

mxvideo_ad_20110802.png

范围分区允许用户根据分区键列值的范围创建分区。下面是一个按范围分区表的示例:

create table sales6

(

sales_id number,

sales_dt date

)

partition by range (sales_dt)

(

partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd')),

partition p0702 values less than (to_date('2007-03-01','yyyy-mm-dd'))

);

假如在此处仅针对2007年1月和2007年2月定义了分区,如果表中插入一条sales_dt在2007年3月的记录,会发生什么情况?插入将失败,并显示以下错误:

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

显然,需要针对2007年3月添加一个分区,然后才能插入一条记录。但通常说起来容易做起来难。通常无法容忍事先创建大量分区,但其中很少一部分可能会产生此错误。

如果Oracle以某种方式自动察觉到对新分区的需要,然后创建它们,这样不是更好吗?Oracle 11g可以,它可以使用一个称为间隔分区的特性。此时,不必定义分区及它们的边界,只需定义一个定义了每个分区边界的间隔。下面是使用间隔分区的示例:

create table sales6

(

sales_id number,

sales_dt date

)

partition by range (sales_dt)

interval (numtoyminterval(1,'MONTH'))

(

partition p0701 values less than (to_date('2007-02-01','yyyy-mm-dd'))

);

注意子句interval后面跟着时间间隔,在此处指示Oracle为每个月份创建一个时间间隔。已经为2007年1月的数据创建了名为p0701的初始分区。现在,假设插入了一条包括2007年6月数据的记录:

SQL> insert into sales6 values (1,'01-jun-07');

1 row created.

Oracle不会返回错误,而是成功执行该语句。那么这条记录将转向何处?p0701 分区不能包括该记录,因为没有为2007年6月定义分区。但此时,如果检查该表的分区:

SQL> select partition_name, high_value

2 from user_tab_partitions

3 where table_name = 'SALES6';

PARTITioN_NAME HIGH_VALUE

----------------------------------------------------------------

P0701 TO_DATE(' 2007-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_C

ALENDAR=GREGORIA

SYS_P41 TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_C

ALENDAR=GREGORIA

注意名为SYS_P1、HIGH_VALUE为2007年7月1日分区,它最多可以容纳到6月底的数据。该分区是由Oracle动态创建的,并具有一个系统生成的名称。

现在,假设输入一个小于HIGH_VALUE的值,如2007年5月1日。在理想情况下,它应该具有自己的分区,因为分区时间间隔是一个月。

SQL> insert into sales6 values (1,'01-may-07');

1 row created.

SQL> select partition_name, high_value

2 from user_tab_partitions

3 where table_name = 'SALES6';

PARTITioN_NAME HIGH_VALUE

----------------------------------------------------------------

P0701 TO_DATE(' 2007-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_C

ALENDAR=GREGORIA

SYS_P41 TO_DATE(' 2007-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_C

ALENDAR=GREGORIA

SYS_P42 TO_DATE(' 2007-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_C

ALENDAR=GREGORIA

注意新分区SYS_P42,其上限为6月1日,因此该分区可以保留2006年5月的数据。该分区是通过拆分SYS_P41分区创建的(针对6月份)。因此,当定义一个间隔分区方案时,Oracle会自动创建和维护分区。

如果希望将分区存储在特定表空间中,可以使用store in子句执行该操作:

interval (numtoyminterval(1,'MONTH'))

store in (TS1,TS2,TS3)

该子句以循环方式将分区存储在表空间TS1、TS2和TS3中。

应用程序开发人员如何定位特定分区?一种方法是知道名称,这种方法可能不可行,即使知道名称,这种方法也非常容易出错。为了便于访问特定分区,Oracle 11g为分区SQL提供了一个新语法:

SQL> select * from sales6 partition for (to_date('15-may-2007','dd-mon-yyyy'));

SALES_ID SALES_DT

---------- ---------

1 01-MAY-07

注意新子句for(值),它允许用户直接引用分区,而不必通过它们的准确名称进行显式调用。如果希望截断或删除一个分区,可以调用这个扩展的分段语法。

以此方式创建表之后,DBA_PART_TABLES 视图中的 PARTITIONING_TYPE 列会显示时间间隔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ try catch语句_再问你一遍,你真的了解try..catch(finally)吗???

定义首先来看下 MDN 的定义:The try...catch statement marks a block of statements to try and specifies a response should an exception be thrown.try...catch语句标记要执行的语句,并指定一个当有异常抛出时候的响应简短的一句的确描述了try...ca…

lamp架构,搭建一个网络平台

首先更改主机名和 hosts 安装软件包,设置启动服务 设置数据库密码 上传discuz论坛包 将discuz注册的用户名写在mariadb数据库中 解压discuz包 unzip discuz包 -d /var/www/html cd到upload下 cp -rf * /var/www/html 进入数据库 mysql -uroot -p create database…

MyEclipse中SVN的使用方法

1、 加载插件 svn-myeclipse插件site-1.10.2.zip,解压缩后,将文件夹下的所有文件拷贝到MyEclipse安装包下的MyEclipse 8.5\dropins文件夹下,然后重新打开myeclipse,会弹出一个报错窗口,不要管它,关闭后&…

oracle数据泵导出csv文件,数据泵expdp导出遇到ORA-01555和ORA-22924问题的分析和处理...

使用数据泵导出数据库数据时,发现如下错误提示:ORA-31693: Table data object "CAMS_CORE"."BP_EXCEPTION_LOG" failed to load/unload and is being skipped due to error:ORA-02354: error in exporting/importing dataORA-01555:…

Go程序开发---Go环境配置:CentOS6.5+Go1.8标准包安装

1.Go安装 1.1Go的三种安装方式 Go有多种安装方式,可以选择自己习惯的方式进行,这里介绍三种安装方式: 1)Go源码安装 2)Go标准包安装 3)第三方工具安装 这里主要介绍下Go标准包在CentOS6.5系统中的安装方式 …

python矩阵乘法_鱼书——第一章 Python入门

one 第一章1.1 Python是什么Python是一个简单、易读、易记的编程语言,而且是开源的,可以免费地自由使用。Python可以用类似英语的语法编写程序,编译起来也不费力,因此我们可以很轻松地使用Python。特别是对首次接触编程的人士来说…

keepalived vip ping不通_【干货分享】OpenStack LVS负载均衡为什么不通?

背景介绍OpenStack环境Neutron 的安全组会向虚拟机默认添加 anti-spoof 的规则,将保证虚拟机只能发出/接收以本机Port为原地址或目的地址(IP、MAC)的流量,提高了云的安全性。但是LVS等需要绑定VIP的场景,默认流量是被拦截的。需要…

Docker安装ssh,supervisor等基础工具

2019独角兽企业重金招聘Python工程师标准>>> Docker安装ssh,supervisor等基础工具 需要提前下载好官方的ubuntu镜像,我这里使用的是ubuntu:14.04版本,这里安装了一些基础的工具ssh,curl,wget,vi…

nginx集群_windows环境下搭建简单Nginx+Tomcat集群

通俗点将,负载均衡就是因为访问流量太大,导致项目访问不流畅、甚至宕掉,所以通过一种分流的方式来缓解这种情况。一、 工具nginx-1.8.0apache-tomcat-6.0.33二、 目标实现高性能负载均衡的Tomcat集群:三、 步骤1、首先下载Nginx&a…

颜色传感器TCS230及颜色识别电路(转)

摘要 TCS230是美国TAOS公司生产的一种可编程彩色光到频率的传感器。该传感器具有分辨率高、可编程的颜色选择与输出定标、单电源供电等特点;输出为数字量,可直接与微处理器连接。文中主要介绍TCS230的原理和应用,以及色光和白平衡的知识&…

mysql命令行导入和导出数据

首先打开命令窗口,输入命令:mysql -h localhost -u selffabu -p 连接成功后,进行下面的操作 MySQL中导出CSV格式数据的SQL语句样本如下: Sql代码select * from test_info into outfile /tmp/test.csv fields terminated by , optionally enclosed by " esc…

7.组件连线(贝塞尔曲线)--从零起步实现基于Html5的WEB设计器Jquery插件(含源码)...

上节讲到如何创建组件,清除设计器视图,以及设计视图的持久化和恢复,本节将重点讲如何实现组件间的连线,前面章节有提到为了方便从持久化文件中恢复,组件和连线是分别存放的:nodes和lines对象,两…

定位排查工作流的计算结果数据量不符合预期的方法

近期有发现一些用户在咨询,为什么数据从数据源出来后,经过了一些计算,结果不符合预期了。最常见的是说,为什么我的数据在Mysql里有xx条,怎么到MaxCompute里算了下结果变了。因为这是两个不同的系统,我们又没…

canvas 插件_基于canvas的JavaScript 二维码生成工具——QRCanvas

介绍在我们日常的开发中,特别是在现代的社会环境下,二维码的应用可谓是丰富多彩,各种各样让人眼花缭乱的二维码,可见二维码已经渗透进我们生活的方方面面,也可以说目二维码确确实实方便了我们的生活。因为作为开发人员…

消息队列NetMQ 原理分析2-IO线程和完成端口

目录 前言介绍目的IO线程初始化IO线程Proactor启动Procator线程轮询处理socketIOObject总结前言 介绍 [NetMQ](https://github.com/zeromq/netmq.git)是ZeroMQ的C#移植版本,它是对标准socket接口的扩展。它提供了一种异步消息队列,多消息模式,消息过滤(订阅&#xf…

VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machine type。 无效的机器类型,真的是很让人捉急。 发生这个错误的原因是…

linux 内存泄漏 定位,一种内存泄露检查和定位的方法

一个系统后台服务进程,可能包括多个线程,在生成环境下要求系统程序能够稳定长时间稳定运行而不宕机。其中一个基本的前提就是需要保证系统程序不存在内存泄露。那么,该如何判读系统程序是否存在内存泄露呢?如果存在,又…

ifconfig命令找不到_02. Linux命令之查看网络连接

1. 查看网络连接数和端口使用 netstat 命令查看网络连接情况netstat -anp参数:-a 显示所有选项-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-p 显示建立相关链接的程序名关键列解释:Proto 表示协议…

python学习之模块(pip),列表生成式,模块操作mysql,excel

python基础 生成式 列表生成式  格式 [表达式 for 表达式 in 迭代对象 (可加判断)] 原: 1 res1 [] 2 for i in range(1,5): 3   res1.append(i) 4 print(res1) 改: 1 res2 [i for i in range(1,5)] 2 print(res2) 字典生成式  格式 {key:value f…

linux驱动read函数 copytouser,Linux驱动编程 step-by-step (五)主要的文件操作方法实现...

主要的文件操作方法实现文件操作函数有很多的操作接口,驱动编程需要实现这些接口,在用户编程时候系统调用时候会调用到这些操作structfile_operations {...loff_t (*llseek) (structfile *, loff_t,int);ssize_t (*read) (structfile *,char__user *,siz…