oracle添加分区语句_oracle增加分区的方法-程序员宅基地

技术标签: oracle添加分区语句  

在项目中经常要增加大量的分区,总结了增加分区的方法:

1.如果只增加一级分区,没有子分区,可以简单的用如下语句增加:

alter table TDW_12580_ORD_REL_TAB_M

add PARTITION M_TDW_12580_201005 VALUES (201005)

[@more@]

2.如果增加的分区有子分区,则需要先建一个一级分区和子分区,然后用下面的脚本来增加:

注意:表名用大写,日期格式为20100801 结束日期为下一个月的1号,如20100901

脚本:

declare

--初始化参数

v_table_name varchar2(30);

v_partition_name varchar2(30);

v_subpartition_name varchar2(30);

v_segment_type varchar2(30);

v_begin_date_str varchar2(10);

v_sql varchar2(1000);

v_begin_date date;

v_end_date date;

--查找出所有分区表

cursor C_table_name is

select t1.table_name

from user_tables t1

where t1.table_name in ('&TABLE_NAME');

begin

open C_table_name;

loop

fetch C_table_name

into v_table_name;

exit when C_table_name%notfound;

--查找出分区表的类型

select distinct (t2.segment_type)

into v_segment_type

from user_segments t2

where t2.segment_name = v_table_name;

if v_segment_type in ('TABLE SUBPARTITION') then

--取出分区和子分区表名的不含日期部分

select distinct substr(t3.partition_name,

0,

length(t3.partition_name) - 6),

substr(t3.subpartition_name,

0,

length(t3.subpartition_name) - 8)

into v_partition_name, v_subpartition_name

from user_tab_subpartitions t3

where t3.table_name = v_table_name;

--初始化日期

v_begin_date := to_date('&START_DATE', 'YYYYMMDD');

v_end_date := to_date('&END_DATE', 'YYYYMMDD');

--循环创建2010年的表分区

while v_begin_date < v_end_date loop

--创建增加分区语句,如:alter table v_table_name add partition v_partition_nameYYYYMM values (YYYYMM) (subpartition v_subpartition_nameYYYYMMDD values (YYYYMMDD));

v_begin_date_str := substr(to_char(v_begin_date, 'YYYYMMDD'), 7, 2);

if v_begin_date_str in ('01') then

v_sql := 'alter table ' || v_table_name || ' add partition ' ||

v_partition_name ||

substr(to_char(v_begin_date, 'YYYYMMDD'), 0, 6) ||

' values (' ||

substr(to_char(v_begin_date, 'YYYYMMDD'), 0, 6) ||

') (subpartition ' || v_subpartition_name ||

to_char(v_begin_date, 'YYYYMMDD') || ' values (' ||

to_char(v_begin_date, 'YYYYMMDD') || '))';

else

v_sql := 'alter table ' || v_table_name || ' modify partition ' ||

v_partition_name ||

substr(to_char(v_begin_date, 'YYYYMMDD'), 0, 6) ||

' add subpartition ' || v_subpartition_name ||

to_char(v_begin_date, 'YYYYMMDD') || ' values (' ||

to_char(v_begin_date, 'YYYYMMDD') || ')';

end if;

--显示增加分区语句

--DBMS_OUTPUT.put_line(v_sql);

--执行增加分区语句

execute immediate v_sql;

--日期加一天

v_begin_date := v_begin_date + 1;

end loop;

elsif v_segment_type in ('TABLE PARTITION') then

--取出分区表名的不含日期部分

select distinct (substr(t4.partition_name,

0,

length(t4.partition_name) - 6))

into v_partition_name

from user_tab_partitions t4

where t4.table_name = v_table_name;

--初始化日期

v_begin_date := to_date('&START_DATE', 'YYYYMMDD');

v_end_date := to_date('&START_DATE', 'YYYYMMDD');

--循环创建2010年的表分区

while v_begin_date < v_end_date loop

--创建增加分区语句,如:alter table v_table_name add partition v_partition_nameYYYYMM values (YYYYMM);

v_sql := 'alter table ' || v_table_name || ' add partition ' ||

v_partition_name ||

substr(to_char(v_begin_date, 'YYYYMMDD'), 0, 6) ||

' values (' ||

substr(to_char(v_begin_date, 'YYYYMMDD'), 0, 6) || ')';

--显示增加分区语句

--- DBMS_OUTPUT.put_line(v_sql);

--执行增加分区语句

execute immediate v_sql;

--日期加一月

v_begin_date := add_months(v_begin_date, 1);

end loop;

else

DBMS_OUTPUT.put_line(v_table_name || '表类型为' || v_segment_type ||

',请查看!');

end if;

end loop;

close C_table_name;

end;

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

智能推荐

无效的m3u8怎么办_你还在为m3u8文件如何转换而发愁?看了我就有答案了-程序员宅基地

文章浏览阅读3.7w次。你肯定遇到过优酷和UC下载下来的视频文件在文件管理器里面找不到,找到了也只是一个几kb的m3u8文件,那么你的视频去哪里了?你还在为如何转换m3u8而发愁?m3u8 是一种基于 HTTP Live Streaming 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成。目前 由 Apple.inc 率先提出的 HLS 协议在 Mac 的 Safari 上原生支持,你可以直接通..._m3u8无效可以解决的软件

V-REP仿真-逆运动学模块的机械臂轨迹规划_基于 v-rep 的某机械臂运动学仿真研究-程序员宅基地

文章浏览阅读2.2k次。V-REP仿真-逆运动学模块的机械臂轨迹规划【V-REP自学笔记(六)】基于V-REP逆运动学模块的机械臂轨迹规划需要注意一点,进行求逆解时候,不要选择alpha,beta和gamma,要不然机械臂因为自由度不够,导致乱摆现象。..._基于 v-rep 的某机械臂运动学仿真研究

地图框架leaflet和cesium实现二三维联动_cesium+leaflet用原生js去切换引擎 实现二三维 转换-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏3次。地图框架leaflet和cesium实现二三维联动最近做个项目,要实现二三维联动。二维是基于leaflet的地图,三维是基于cesium,webgl的场景。要实现的是,平移、缩放二维地图时,三维跟着平移缩放,反过来也一样。一问题界定总体看,一共三个问题。1 要解决二维三维循环联动的问题。就是说,不能拖动二维,三维跟着动,然后二维再跟着三维动,无限循环。2 二维和三维的平移联动3 二维和三维的缩放联动二问题解决1 使用flag,鼠标进入二维div时,flag为tru..._cesium+leaflet用原生js去切换引擎 实现二三维 转换

Kubernetes(k8s) EmptyDir、HostPath、ConfigMap和Secret等几种存储类型介绍_空目录 与 configmap区别-程序员宅基地

文章浏览阅读759次。介绍一个运行中的容器,缺省情况下,对文件系统的写入,都是发生在其分层文件系统的可写层的,一旦容器运行结束,所有写入都会被丢弃。因此需要对持久化支持。Kubernetes 中通过 Volume 的方式提供对存储的支持。下面对一些常见的存储概念进行一点简要的说明。EmptyDir顾名思义,EmptyDir是一个空目录,他的生命周期和所属的 Pod 是完全一致的,可能读者会奇怪,那还要他做什么?EmptyDir的用处是,可以在同一 Pod 内的不同容器之间共享工作过程中产生的文件。缺省情况下,Em_空目录 与 configmap区别

ERROR: hmmlearn-0.2.3-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.错误解决办法_error: box2d-2.3.10-cp38-cp38-win_amd64.whl is not-程序员宅基地

文章浏览阅读5.5k次。ANACONDA安装hmmlearn时出现的问题检测版本是否有误首先启动anaconda prompt在命令行输入python检查版本,我的是3.7.6版本到该网站Unofficial Windows Binaries for Python Extension Packages下载hmmlearn的版本一定要与python版本对应,我先开始下的3.8版本就出现了下列问题。将下载的文件放在D:\Anaconda3\pkgs\python-3.7.6-h60c2a47_2\Lib目录下,并在此目录_error: box2d-2.3.10-cp38-cp38-win_amd64.whl is not a supported wheel on this

网桥原理及源代码详解_wifi 网桥 代码-程序员宅基地

文章浏览阅读846次。* 概述: * 该代码在FB中提供桥接功能,不过他只是在以太网接口上工作,能提供多个逻辑桥 * ,我们称为组,组是由一组有相同组ID的接口组成,组ID的范围在1到2^16-1之间. * 打开桥的功能是通过sysctl net.link.ether.bridge=1来启动的. * 而sysctl net.link.ether.bridge_cfg是把以太网接口进行分组的命令,如: * sysctl net.link.ether.bridg_wifi 网桥 代码

随便推点

2017-2018 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2017) G: Cordon Bleu_cordon bleuc++-程序员宅基地

文章浏览阅读1.3k次。Cordon Bleu时间限制: 1 Sec 内存限制: 128 MB提交: 22 解决: 7[提交][状态][讨论版][命题人:admin]题目描述A Parisian entrepreneur has just opened a new restaurant “Au bon cordon bleu”, named after a famous French recipe. However,..._cordon bleuc++

linux 错误信息 输出到管道,linux grep通过管道输出到head出现write error: Broken pipe错误...-程序员宅基地

文章浏览阅读1.5k次。转载请注明地址:http://blog.csdn.net/echoutopia/article/details/51655882之前做一个分页,利用grep加head加tail实现的:ls /tmp/conf/usergroup/ | grep -P '^(?!auto-)'| head -n 20 | tail -n 20 | awk -F . '{print $1}'grep出来的条数大概有6..._ls: write error: broken pipe

stm32与sim900之GPRS通信(电脑串口与SIM900通信)_stm32 通过sim卡联网-程序员宅基地

文章浏览阅读1.5w次,点赞6次,收藏76次。注意:1 sim900在进行GPRS通信的时候最大电流可以到90MA.瞬间电流SIM900模块可能高达2A@4V,即输入端电流瞬间值可能高达740mA@12V,故给模块选择电源的时候,要能满足瞬间电流峰值。以上这段话摘录自正点原子的SIM900用户手册,也就是说你在用SIM900这个模块进行GPRS数据传输时,要保证能给这个模块提供2A左右的电流,在实际的测试当中,如果提供的电流过_stm32 通过sim卡联网

按钮变透明的css样式_css按钮放上图片样式边透明-程序员宅基地

文章浏览阅读6.6k次,点赞5次,收藏7次。.carBtn{ background-color:transparent; border-style:none;}_css按钮放上图片样式边透明

pytorch中CrossEntropyLoss的使用_crossentropyloss函数时间步参数pytorch用法-程序员宅基地

文章浏览阅读8k次,点赞6次,收藏5次。CrossEntropyLoss 等价于softmax+log+NLLLossLogSoftmax等价于softmax+log可用于文本分类、序列标注等计算损失使用方法:# 首先定义该类loss = torch.nn.CrossEntropyLoss()#然后传参进去loss(input, target)input维度为N*C,是网络生成的值,N为batch_size,C为类别数;target维度为N,是标注值,非one-hot类型的值;input = torc.._crossentropyloss函数时间步参数pytorch用法

window.requestAnimationFrame讲解-程序员宅基地

文章浏览阅读1.2w次,点赞12次,收藏35次。为什么要说它,源于看到的一道面试题:问题是用js实现一个无限循环的动画。首先想到的是定时器<!doctype html><html lang="en"><head> <title>Document</title> <style> #e{ width: 100px; height: 100px; background: red;_window.requestanimationframe

推荐文章

热门文章

相关标签