我的编程空间,编程开发者的网络收藏夹
学习永远不晚

11G自动分区interval&template

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

11G自动分区interval&template

11G分区表自动分区

创建interval分区表

create table test_range (idnumber,test_date date)

 partition by range(test_date)interval(numtodsinterval(1,'day'))

 (partition p_20160612 values less than(to_date('20160613','yyyymmdd')));

SQL> selecttable_name,partitioning_type,partition_count,interval from user_part_tableswhere table_name='TEST_RANGE';

TABLE_NAME  PARTITION PARTITION_COUNT INTERVAL

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

TEST_RANGE    RANGE    1048575(1024k同10G)NUMTODSINTERVAL(1,'DAY')

插入测试数据(存在分区)

SQL> insert into TEST_RANGE values(1,to_date('20160612','yyyymmdd'));

1 row created.

SQL> commit;

Commit complete.

SQL> select table_name,partition_namefrom user_tab_partitions where table_name='TEST_RANGE';

TABLE_NAME           PARTITION_NAME

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

TEST_RANGE           P_20160612

插入测试数据(不存在分区)

SQL> insert into TEST_RANGE values(1,to_date('20160613','yyyymmdd'));

1 row created.

SQL> commit;

Commit complete.

SQL> select table_name,partition_namefrom user_tab_partitions where table_name='TEST_RANGE';

 

TABLE_NAME           PARTITION_NAME

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

TEST_RANGE           P_20160612

TEST_RANGE           SYS_P122

SQL> insert into TEST_RANGE values (1,to_date('20160615','yyyymmdd')); --先插入较大数值

1 row created.

SQL> commit;

Commit complete.

SQL> select table_name,partition_namefrom user_tab_partitions where table_name='TEST_RANGE';

TABLE_NAME           PARTITION_NAME

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

TEST_RANGE           P_20160612

TEST_RANGE           SYS_P122

TEST_RANGE           SYS_P123   --新增分区

SQL> insert into TEST_RANGE values (1,to_date('20160614','yyyymmdd')); --先插入中间数值

1 row created.

SQL> commit;

Commit complete.

SQL> select table_name,partition_namefrom user_tab_partitions where table_name='TEST_RANGE';

TABLE_NAME           PARTITION_NAME

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

TEST_RANGE           P_20160612

TEST_RANGE           SYS_P122

TEST_RANGE           SYS_P123

TEST_RANGE           SYS_P124  --新增分区

说明:对于interval分区表插入“不存在分区”对应的数值时,会自动生成按照interval生成相应分区;若先插入较大数值,再插入较小数值,分区会按照interval依次生成,如test_range只存在20160612分区,插入20160615数值时会生成20160615分区,再插入20160614数值时会再生成20160614分区。

创建template分区表

drop table test_range purge;

create table test_range (idnumber,test_date date)

 partition by range(test_date) interval(numtodsinterval(1,'day'))

 subpartition by hash(id)

    subpartition template

   (subpartition a,

    subpartition b,

    subpartition c)

(partitionp_20160612 values less than (to_date('20160613','yyyymmdd')));

插入测试数据

SQL> insert into test_rangevalues(1,sysdate+2);

1 row created.

SQL> commit;

Commit complete.

SQL> select table_name,subpartition_namefrom user_tab_subpartitions where table_name ='TEST_RANGE';

TABLE_NAME                     SUBPARTITION_NAME

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

TEST_RANGE                     P_20160612_A

TEST_RANGE                     P_20160612_B

TEST_RANGE                     P_20160612_C

TEST_RANGE                     SYS_SUBP125

TEST_RANGE                     SYS_SUBP126

TEST_RANGE                     SYS_SUBP127

发现新生成的分区并未按照template形式

SQL> alter table test_range addpartition P_20160615 values less than(to_date('20160616','yyyymmdd'));

alter table test_range add partition P_20160615values less than(to_date('20160616','yyyymmdd'))

           *

ERROR at line 1:

ORA-14760: ADDPARTITION is not permitted on Interval partitioned objects

采取interval keyword创建的分区表不支持自己add partition

不采取interval创建template分区表

drop table test_range purge;

create table test_range (idnumber,test_date date)

 partition by range(test_date)

 subpartition by hash(id)

   subpartition template

   (subpartition a,

    subpartition b,

    subpartition c)

(partitionp_20160612 values less than (to_date('20160613','yyyymmdd')));

添加分区

SQL> alter table test_range addpartition P_20160615 values less than(to_date('20160616','yyyymmdd'));

Table altered.

SQL>

SQL> select table_name,subpartition_namefrom user_tab_subpartitions where table_name ='TEST_RANGE';

TABLE_NAME                     SUBPARTITION_NAME

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

TEST_RANGE                     P_20160612_A

TEST_RANGE                     P_20160612_B

TEST_RANGE                     P_20160612_C

TEST_RANGE                     P_20160615_A

TEST_RANGE                     P_20160615_B

TEST_RANGE                     P_20160615_C

说明:同时使用partition interval & subpartition template关键字创建的分区表,子分区按照系统自定义命名子分区名字,不按照subpartition template命名子分区,并且不支持自己添加分区;仅使用subpartition template关键字创建的分区表,子分区按照subpartitiontemplate命名子分区。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

11G自动分区interval&template

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

下载Word文档

猜你喜欢

Oracle使用range分区并根据时间列自动创建分区

oracle使用range分区,根据时间列自动创建分区-- Create tablecreate table MY_TEST (id NUMBER (12) not null,name VARCHAR2 (12) not
2023-04-19

Linux硬盘分区及开机自动挂载

本文以CentOS 6.4为例,查看当前linux服务器分区:df -h查看当前linux服务器硬盘:fdisk -l/dev/sda 第一块硬盘/dev/sdb 第二块硬盘依此类推以/dev/sdb为新增硬盘为例,需要进行以下操作
2023-06-05

MySQL每天自动增加分区的实现

有一个表tb_3a_huandan_detail,每天有300W左右的数据。查询太慢了,网上了解了一下,可以做表分区。由于数据较大,所以决定做定时任务每天执行存过自动进行分区。1、在进行自动增加分区前一定得先对表手动分几个区ALTER
2022-08-11

如何实现关闭所有分区自动播放和恢复所有分区自动播放的cmd批处理

小编给大家分享一下如何实现关闭所有分区自动播放和恢复所有分区自动播放的cmd批处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用方法,新建一个.TXT文本文档
2023-06-08

MySQL按月自动设置表分区的实现

目录开始检查1.创建分区函数检查是否成功创建函数2.创建存储过程,用于自动生成分区3.创建自动删除半年以前的表空间函数4.创建调度任务,修改到每月最后一天执行执行存储过程5.进行测试开始检查首先,确保 ticket_history_inf
MySQL按月自动设置表分区的实现
2024-08-09

python 实现mysql自动增删分区的方法

连接mysql#!/usr/bin/python #-*- coding:utf-8 -*-import time import pymysqlclass connect_mysql(object):def __init__(self, h
2022-05-22

Android Recovery自动挂载system分区怎么实现

要在Android Recovery中自动挂载system分区,您需要进行以下步骤:打开Recovery源代码文件夹,并找到recovery.cpp文件。在文件中找到mountAll函数,该函数负责挂载设备上的所有分区。在该函数中,找到
2023-10-21

Oracle range时间范围自动分区的创建方式

这篇文章主要介绍了Oracle  range时间范围自动分区的创建方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-16

怎么在fedora系统中实现自动挂载windows分区

这篇文章给大家介绍怎么在fedora系统中实现自动挂载windows分区,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、终端阿输入su,提示输入超级帐户密码,输入你的系统安装时的密码2、查看硬盘分区情况,输入fdis
2023-06-07

使用python怎么实现mysql自动增删分区操作

本篇文章给大家分享的是有关使用python怎么实现mysql自动增删分区操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。连接mysql#!/usr/bin/python#-*
2023-06-14

win8系统硬盘分区自己动手DIY图文教程

win8系统怎么分区?很多朋友想给自己的磁盘分区,但是不知道怎么分区,有些朋友自己不会分区就只能请人帮忙,其实,没这个必要,自己学一下就可以自己动手为win8分区了。哪里学?下面绿茶小编就跟大家分享下win8如何区分教程吧啊! 操作步骤 1
2023-06-04

编程热搜

目录