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;
oracle添加分区语句_oracle增加分区的方法相关推荐
- oracle添加分区语句_oracle表分区增加分区
昨天发现车辆轨迹库的表分区用完了,连夜加了分区,我们存轨迹的这张表建分区的时候按日期建只到2012-10-15,分区名从TAB_GPSBUSHIS_P1....TAB_GPSBUSHIS_P999,从 ...
- oracle 生成 sql语句,Oracle使用SQL语句生成日历的实现方法
Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...
- oracle+生成+sql语句,Oracle使用SQL语句生成日历的实现方法
Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...
- oracle添加分区语句_Oracle表创建分区如何实现?
1.一般分区表都会很大,所以可以先创建表空间,为了让分区表存放到单独的表空间,否则默认会存放到USERS表空间 2.创建TABLESPACE TS1: CREATE TABLESPACE TS1 DA ...
- oracle添加分区语句_Oracle分区详解和创建
Oracle分区详解和创建 Oracle在实际业务生产环境中,经常会遇到随着业务量的逐渐增加,表中的数据行数的增多,Oracle对表的管理和性能的影响也随之增大.对表中数据的查询.表的备份的时间将大大 ...
- oracle表分区设计_Oracle数据库分区技术
1.Oracle的分区技术基本原理: Oracle的分区技术的基本思路就是:分而治之. 2.分区概述 l 大数据对象(表.索引)被分成小的物理段 l 当分区表建立时,记录基于分区字段值被存储到相应分区 ...
- java oracle分页查询语句_oracle分页查询语句,java得到分页查询语句的方法
oracle分页查询语句 select * from ( select a.*, rownum rn from (select * from table_name) a where rownum &l ...
- java oracle分页查询语句_Oracle分页查询语句的写法(转)
Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...
- Linux下察看swap分区大小及增加分区大小
Linux下察看swap分区大小的命令 top 或者fdisk -l 或者free -m SWAP分区一般大小为物理内存的2倍,但最大不超过2G: 增加SWAP空间的方法有两个:增加另外一个SWAP分 ...
最新文章
- Trailblazer —— Rails 的扩展概念驱动开发框架
- linux下批量发请求
- mysql数据库死锁 情景一
- 9 10次C语言上机作业,C语言第五次上机作业参考答案
- 手机号验证_国际手机号收不到微博验证短信,微博验证短信一直提示超过上限怎么办?...
- 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | BaseDexClassLoader 构造函数 | DexPathList 构造函数及后续调用 )
- 企业网站 源码 服务邮箱:_口碑营销:乌海腾讯企业邮箱服务报价
- SAP WebClient UI drop down list(下拉列表)的一个故障和解决方法
- WriteComponent,ReadComponent
- arduino 3d打印机_Firefox OS流视频,使用Arduino销售3D打印机等
- Mysql/Mariadb本地不可以登录,远程可以登录问题的解决
- IP转发的最长前缀匹配
- android 获得资源图片,快速获取app(ios和安卓)资源图片
- 心理学的应用领域有哪些?
- 湖南大学计算机专业女生宿舍,2020年湖南大学新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
- 一切前端概念,都是纸老虎(附送书的抽奖结果)
- 【网络工程师】<软考中级>各类以太网标准10BASE-T/100BASE-T4/100BASE-FX/1000BASE-X等详解(了解)
- MySQL数据库表结构的设计
- 国内十大正规现货交易平台排名(2021版榜单)
- YOLOv5训练自己的数据集详解
热门文章
- 拍照手机哪款好?华为Mate 20 Pro值不值得买
- evo测试工具错误: evo module evo.main_traj crashed - no logfile written (disabled)
- 如何选型PLM软件?PLM选型时注意哪些事项呢?
- php 统计 app 下载量,如何做一个算法估算出一个不定时抓取到一个APP每天的下载量...
- 【值得收藏】一份非常完整的Mysql规范
- python悬浮球窗口_实现悬浮窗口
- 机器学习工程师 — Udacity 基于CNN和迁移学习创建狗品种分类器
- 智慧城市发展概况及其范畴
- excel中如何将数字转换成文本
- 逼近理想解法TOPSIS(python程序)