专栏首页数据和云Oracle 分区表的 FOR 语句,你这样用过吗?

Oracle 分区表的 FOR 语句,你这样用过吗?

在11g以后,Oracle简化了指定分区的方式,不再需要明确指定分区名称,而是可以通过指定分区键值列数据的方式来指向对应的分区。

指定一个分区除了使用分区名称外,很多时候还可以使用FOR语句。 从11g开始,对分区进行操作的时候,不仅可以使用分区名称,还可以使用FOR语句。 在10g中,MERGE RANGE分区的语句如下:

表已创建。

而在11g中,除了使用分区名称外,还可以使用FOR语句来代替,比如:

表已创建。

这种语法的优势对于范围分区还不是很明显,而对于INTERVAL分区就十分有意义了。由于INTERVAL分区的分区名称是系统产生的,用户对INTERVAL分区最直观的莫过于存在分区中的数据的范围,根据分区的定义和INTERVAL的设置很容易可以确定分区的范围和其中的数据,但是分区的名称就必须通过数据字典才能查询得到。

一个INTERVAL分区的简单的例子:

表已创建。

继续上面的例子:

表已创建。

下面打算通过FOR语句的方式合并P2和P3分区:

第 1 行出现错误:

根据错误文档的描述,感觉是分区键值指定出现了错误,查询分区信息:

SQL> SELECT PARTITION_NAME, HIGH_VALUE
    FROM USER_TAB_PARTITIONS
    WHERE TABLE_NAME = 'T_PART_RANGE'
    ORDER BY ;
PARTITION_NAME HIGH_VALUE
-------------- ----------------------------------------------------------------------------------
P1             TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P2             TO_DATE(' 2009-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
P3             TO_DATE(' 2009-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')

难道是分区键值指定有问题:

完全仿照USER_TAB_PARTITIONS视图中的分区定义,错误依旧。

最终发现了问题所在,FOR语句中指定的并不是分区定义时使用的值,而是存储在当前分区中的值:

表已更改。

因此Oracle并非根据分区定义来判断分区,而是根据用户给出的值,来判断所属分区,所以,P1分区和SYS_P78分区的合并完全可以写成:

表已更改。

由于FOR语句的这种特性,使得HASH分区也可以使用这个特性:

表已创建。

这个例子对包含ID为6的分区进行了MOVE操作,而且甚至不需要指定的ID存在。

最后给一个简单的LIST分区的SPLIT的例子:

表已创建。

本文分享自微信公众号 - 数据和云(OraNews),作者:杨廷琨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 表分区“拖出”的性能Error

    作者介绍: 曾令军,云和恩墨技术专家,2009年开始接触ORACLE数据库,8年数据库运维经验。思维敏捷,擅长于数据库开发、解决棘手的数据库故障和性能问题。服务...

    数据和云
  • 分而治之:从多列到自动Oracle 12.2 分区新特性抢先一览

    何剑敏 Oracle ACS华南区售后团队,首席技术工程师 曾供职于中国联通信息计费部、卓望数码、IBM。现供职于Oracle ACS华南区售后团队,首席技术...

    数据和云
  • Oracle 12.2新特性掌上手册 - 第三卷 Core Improvements

    编辑手记:Oracle 12.2 在内核上有许多创造性的改进,这些改进让数据库的操作更加高效便捷,同时一些面向智能运维和大数据的改进,则迈出了云和大数据时代的重...

    数据和云
  • win7 下创建逻辑分区

    在win98下面创建主DOS分区和逻辑分区都很容易,到了XP的时候,系统会保留一个8M左右的保留空间。到了win7,干脆多了个100M的保留空间。在分区的时候,...

    世纪访客
  • 搞它!!!详细介绍linux磁盘管理和文件系统

    服务器如果插入磁盘,如何对磁盘进行配置,分区,使用 在Linux系统中,如何有效地对存储空间加以使用和管理,是一项非常重要的技术

    不吃小白菜
  • 干趴面试官系列 | 请你简述一下Kafka中的分区分配

    “请你简述一下Kafka中的分区分配”,当面试官问你这个问题的时候,你会怎么回答?其实,这道题目里面就暗藏汹涌,因为Kafka中的分区分配在多处出现,而这个问题...

    zhisheng
  • VMware扩展磁盘大小

    卡尔曼和玻尔兹曼谁曼
  • C盘不够用?这工具不用重装系统就扩大C盘空间

    前两天分享 了一篇文章小白也能安装系统的方法,就有小伙伴提出了“怎么给C盘扩容”通俗点就是给C盘分点内存过去的意思。

    IT小侠公社
  • 小米笔记本原版镜像重装系统

    前几天无意中把笔记本的ESP分区给删除了,然后再恢复时又无意中把整个硬盘给格式化了,我也是服了自己,在重装的时候遇到各种坑,所以爱游这里就分享下装机过程。

    爱游博客
  • 计算机内存管理介绍

    计算机操作系统内存管理是十分重要的,因为其中涉及到很多设计很多算法。《深入理解计算机系统》这本书曾提到过,现在操作系统存储的设计就是“带着镣铐跳舞”,造成计算机...

    黄泽杰

扫码关注云+社区

领取腾讯云代金券