iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle范围分区应用实例
  • 526
分享到

Oracle范围分区应用实例

2024-04-02 19:04:59 526人浏览 独家记忆
摘要

概述    范围分区(Range partition):就是根据表的某个字段的值,以固定的一个范围作为一个分区来划分数据。 实例:创建销售部门销售数据清单表

概述

    范围分区(Range partition):就是根据表的某个字段的值,以固定的一个范围作为一个分区来划分数据。

 实例:

  1. 创建销售部门销售数据清单表:

    create table sales_list
    (order_id number(5),
    sales_name varchar2(20),
    order_amount number(10),
    order_date date
    )
    partition by range (order_date)
    (partition sales_201401 values less than(to_date('2014-02-01','yyyy-mm-dd')),
    partition sales_201402 values less than(to_date('2014-03-01','yyyy-mm-dd')),
    partition sales_201403 values less than(to_date('2014-04-01','yyyy-mm-dd')),
    partition sales_201404 values less than(to_date('2014-05-01','yyyy-mm-dd')),
    partition sales_201405 values less than(to_date('2014-06-01','yyyy-mm-dd')),
    partition sales_201406 values less than(to_date('2014-07-01','yyyy-mm-dd')),
    partition sales_201407 values less than(to_date('2014-08-01','yyyy-mm-dd')),
    partition sales_201408 values less than(to_date('2014-09-01','yyyy-mm-dd')),
    partition sales_201409 values less than(to_date('2014-10-01','yyyy-mm-dd')),
    partition sales_201410 values less than(to_date('2014-11-01','yyyy-mm-dd')),
    partition sales_201411 values less than(to_date('2014-12-01','yyyy-mm-dd')),
    partition sales_201412 values less than(to_date('2015-01-01','yyyy-mm-dd')),
    partition sales_201501 values less than(to_date('2015-02-01','yyyy-mm-dd')),
    partition sales_201502 values less than(to_date('2015-03-01','yyyy-mm-dd'))
    );

    创建了14个分区,14个段

    sql> col partition_name fORMat a20
    SQL> col segment_name format a20
    SQL> select segment_name,partition_name from user_segments where segment_name='SALES_LIST';

    SEGMENT_NAME      PARTITION_NAME
    -------------------- --------------------
    SALES_LIST      SALES_201401
    SALES_LIST      SALES_201402
    SALES_LIST      SALES_201403
    SALES_LIST      SALES_201404
    SALES_LIST      SALES_201405
    SALES_LIST      SALES_201406
    SALES_LIST      SALES_201407
    SALES_LIST      SALES_201408
    SALES_LIST      SALES_201409
    SALES_LIST      SALES_201410
    SALES_LIST      SALES_201411
    SALES_LIST      SALES_201412
    SALES_LIST      SALES_201501
    SALES_LIST      SALES_201502

        14 rows selected.

 

创建过程用于删除旧的分区并添加新的分区:

CREATE OR REPLACE PROCEDURE drop_add_partition AS
  v_part_name VARCHAR2(100);
  v_next_name VARCHAR2(100);
  v_over_time NUMBER;
  v_string    VARCHAR2(10);
  v_date      DATE;
BEGIN
  SELECT MIN(partition_name)
    INTO v_part_name
    FROM user_tab_partitions
   WHERE table_name = 'SALES_LIST'; --找到当前最早的分区
  SELECT MAX(partition_name)
    INTO v_next_name
    FROM user_tab_partitions
   WHERE table_name = 'SALES_LIST'; --找到当前最晚的分区
  SELECT substr(to_char(add_months(to_date(substr(v_next_name, 7, 6),
                                           'yyyy-mm'),
                                   1),
                        'yyyymmdd'),
                1,
                6)
    INTO v_next_name
    FROM dual; --拼接下一个新的分区的名称串
  SELECT round(months_between(SYSDATE,
                              to_date(substr(v_part_name, 7, 6), 'yyyy-mm')))
    INTO v_over_time
    FROM dual;
  --计算当前时间和最早分区的之间间隔的月数
  v_string := to_char(add_months(to_date(v_next_name, 'yyyy-mm'), 1),
                      'yyyy-mm');
  v_date   := to_date(substr(v_string, 1, 4) || '-' ||
                      substr(v_string, 6, 2) || '-01',
                      'yyyy-mm-dd');
  --拼接新的分区在创建的时候需要指定的截至时间点的串
  IF v_over_time > 12
  THEN
    EXECUTE IMMEDIATE 'alter table sales_list drop partition ' ||
                      v_part_name; --删除旧的分区
    EXECUTE IMMEDIATE 'alter table sales_list add partition SALES_' ||
                      REPLACE(v_next_name, '-', '') ||
                      ' values less than (''' || v_date || ''')'; --添加新的分区
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    --异常处理
    dbms_output.put_line(to_char(SQLCODE));
    dbms_output.put_line(SQLERRM);
END;

SQL> set serveroutput on
SQL> exec drop_add_partition;

PL/SQL procedure successfully completed.

SQL> select segment_name,partition_name from user_segments where segment_name='SALES_LIST';

SEGMENT_NAME      PARTITION_NAME
-------------------- --------------------
SALES_LIST      SALES_201402
SALES_LIST      SALES_201403
SALES_LIST      SALES_201404
SALES_LIST      SALES_201405
SALES_LIST      SALES_201406
SALES_LIST      SALES_201407
SALES_LIST      SALES_201408
SALES_LIST      SALES_201503
SALES_LIST      SALES_201409
SALES_LIST      SALES_201410
SALES_LIST      SALES_201411
SALES_LIST      SALES_201412
SALES_LIST      SALES_201501
SALES_LIST      SALES_201502

14 rows selected.

创建后台作业:
declare
  job number;
begin
  dbms_job.submit(job,'drop_add_partition;',sysdate,'sysdate+1');  --每天运行一次,创建这个job的时候就要执行一次
  commit;
end;

您可能感兴趣的文档:

--结束END--

本文标题: Oracle范围分区应用实例

本文链接: https://www.lsjlt.com/news/35178.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么删除某个范围分区
    要删除一个范围分区,你可以使用以下步骤: 首先,确认你有足够的权限来删除分区。你需要拥有ALTER TABLE或DROP...
    99+
    2024-04-20
    oracle
  • IMPDP如何按范围分区
    小编给大家分享一下IMPDP如何按范围分区,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ESB_M...
    99+
    2024-04-02
  • Oracle range时间范围自动分区的创建方式
    目录Oracle  range时间范围自动分区1.创建测试表,分区字段CDAT NUMBER()2.执行增加分区语句3.创建新的分区测试空表----------使用企业版O...
    99+
    2023-05-16
    oracle分区 range时间范围自动分区 oracle range自动分区
  • VB.NET变量适用范围的示例分析
    这篇文章主要介绍了VB.NET变量适用范围的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。程序中定义VB.NET变量适用范围和在VB 6中是不同的。在VB 6中,一个...
    99+
    2023-06-17
  • Javascript中DOM范围的示例分析
    这篇文章主要介绍Javascript中DOM范围的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建范围Document类型中定义了createRange()方法。在兼容DO...
    99+
    2024-04-02
  • vue+VeeValidate校验范围的示例分析
    这篇文章主要为大家展示了“vue+VeeValidate校验范围的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue+VeeValidate校验范围的...
    99+
    2024-04-02
  • Go语言的应用范围及优势分析
    Go语言的应用范围及优势分析 Go语言是一种支持并发、面向对象、编译型的高级编程语言,由Google开发,并于2009年正式发布。自发布以来,Go语言在各个领域得到了广泛的应用,它具有...
    99+
    2024-04-02
  • Oracle表分区实例分析
    这篇文章主要介绍了Oracle表分区实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Oracle表分区实例分析文章都会有所收获,下面我们一起来看看吧。一、 表空间及分区表的概念表空间:是一个或多个数据文件...
    99+
    2023-06-30
  • Blob和Clob在Oracle中的应用范围及特性比较
    Blob 和 Clob 在 Oracle 中都是用来存储大数据类型的字段,但它们在具体的应用范围和特性上有一些不同。本文将详细比较 Blob 和 Clob 的使用方式,并通过具体的代码...
    99+
    2024-03-08
  • bash循环中变量作用范围的示例分析
    小编给大家分享一下bash循环中变量作用范围的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先来看一段错误的代码。#!/bin/bashfor x in ...
    99+
    2023-06-09
  • MySQL时间范围比较:实例与解析
    MySQL是一种常用的关系型数据库管理系统,用于存储和管理数据。在实际应用中,经常会涉及到对时间范围进行比较和筛选的操作。本文将从实例和解析两个方面,详细介绍如何在MySQL中进行时间...
    99+
    2024-03-01
    mysql 比较 时间范围
  • JSP中对象和范围属性的示例分析
    小编给大家分享一下JSP中对象和范围属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JSP技术使用Java编程语言编写类XML的tags和script...
    99+
    2023-06-17
  • MySQL中next-key lock加锁范围的示例分析
    这篇文章主要介绍MySQL中next-key lock加锁范围的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言某天,突然被问到 MySQL 的 next-key lock,我瞬间的反应就是:这都是啥啥啥?...
    99+
    2023-06-15
  • C++实现LeetCode之包围区域的示例分析
    这篇文章将为大家详细讲解有关C++实现LeetCode之包围区域的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。[LeetCode] 130. Surrounded Regions 包围区域Giv...
    99+
    2023-06-20
  • TP6 时间范围查询实例【每周注册用户】
    前言:本文原写,未知网络是否有重合等情况,如有侵权等其他问题请告知,秒删 当想做个统计图显示一周内每天注册了多少用户时可以实现查询的方法有很多,本文采用简洁代码, ...
    99+
    2023-09-12
    php 开发语言
  • PostgreSQL中的范围类型特性实例介绍
    这篇文章主要讲解了“PostgreSQL中的范围类型特性实例介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL中的范围类型特性实例介绍”...
    99+
    2024-04-02
  •  IP加速器的应用范围有哪些
    本篇内容主要讲解“ IP加速器的应用范围有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ IP加速器的应用范围有哪些”吧!1、加快网游。全面解决国内、电信、网络通信、教育...
    99+
    2023-06-25
  • 织梦CMS的功能及应用范围详解
    《织梦CMS的功能及应用范围详解》 织梦CMS是一款功能强大、灵活性高的内容管理系统,广泛应用于网站建设领域。它提供了丰富的功能模块和插件,方便用户快速搭建个性化的网站。下面将详细介绍...
    99+
    2024-04-02
  • 如何利用Python实现简单C++程序范围分析
    目录1. 实验说明2. 项目使用3. 算法原理3.1 构建CFG3.2 构建Constraint Graph3.3 构建E-SSA Constraint Graph3.4 三步法3....
    99+
    2024-04-02
  • 学习大数据技术时,MySQL和Oracle的应用范围及适用场景。
    学习大数据技术时,MySQL和Oracle的应用范围及适用场景大数据技术的快速发展与广泛应用,使得各种数据库管理系统成为关键部分。在众多数据库管理系统中,MySQL和Oracle是最为常见和广泛使用的两种。它们在大数据技术的领域中有着丰富的...
    99+
    2023-10-22
    MySQL Oracle 应用范围 适用场景
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作