Oralce动态的创建按月的分区
说明:
XXX为一个配置表,里面配置了要分区的表明,即CODENO = 'PARTITIONTABLENAME',只有每个月月底的时候,
才会进入IF的判断,此外还有一个定时任务,每天去执行即可。
存储过程:
CREATE OR REPLACE PROCEDURE ETL_CREATE_TABLE_PARTITION(ParaDate Date) IS
V_RUNID VARCHAR2(32) :=PKG_UTILS.F_GET_RUNID();
V_PROCDESC VARCHAR2(64) :='ETL 表分区的建立';
V_SQL VARCHAR2(2000);
V_COUNT INTEGER;
CURSOR C_PARTTABNAME IS SELECT ITEMNO AS TABNAME FROM XXX WHERE CODENO = 'PARTITIONTABLENAME' AND ISINUSE=''; /* 1.从XXX 中找出所有需要建立新分区的表名(游标)
2.如果今天是月末,那么动态拼接建立下个月的表分区的SQL语句,直接运行
-- 由于有MAXVALUE的存在,不能直接add partition,而是需要MAX分区split
*/
BEGIN PKG_UTILS.LOG('BEGIN',V_RUNID,V_PROCDESC,'ETL开始...'); IF TO_CHAR(PARTITION,'YYYYMM') <> TO_CHAR(PARADATE +1,'YYYYMM') THEN
FOR C --可以不定义
IN C_PARTTABNAME LOOP
--查看此表新的分区是否存在
SELECT COUNT(*)
INTO V_COUNT
FROM USER_TAB_PARTITIONS
WHERE TABLE_NAME = C.TABNAME
AND PARTITION_NAME = 'P_'|| TO_CHAR(PARADATE +1,'YYYYMM'); IF V_COUNT = 0 THEN -- 建立新分区
V_SQL := 'ALTER TABLE '|| C.TABNAME
|| 'SPLIT PARTITION P_MAX '
|| 'AT(TO_DATE(''' || TO_CHAR(ADD_MONTHS(PARADATE+1,1),'YYYY/MM/DD') || ''',''YYYY/MM/DD'')) '
|| ' INTO (PARTITION P_' || TO_CHAR(ADD_MONTHS(PARADATE,1),'YYYY/MM/DD') || ''',''YYYY/MM/DD'') ';
--其中一个表分区没有建立成功的话,下个还是要建立的
BEGIN
EXECUTE IMMEDIATE V_SQL;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END IF;
END LOOP;
END IF;
PKG_UTILS.LOG('END',V_RUNID,V_PROCDESC ,'ETL结束....');
EXCEPTION WHEN OTHERS THEN
PKG_UTILS.LOG('ERROR',V_PROCDESC,SQLERRM,DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
END;
Oralce动态的创建按月的分区的更多相关文章
- 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
[源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...
- 创建nim+安装vioc分区
一.搭建nim服务器 1.安装须知 安装nim软件包,client随系统默认安装,这里需要安装的是bos.sysmgt.nim.master和bos.sysmgt.nim.spot,即bos.sysm ...
- 重装windows7企业版时提示“安装程序无法创建新的系统分区,也无法定位现有系统
第一步:把win7镜像发在你电脑的非系统盘的其他硬盘上. 第二步:重启机器,通过U 盘启动.进入win pe系统,关于这点我说一下,有些朋友也许不知道什么叫win pe系统,这个win pe 究竟有什 ...
- 解决Win7系统安装时“安装程序无法定位现有 系统分区,也无法创建新的系统分区”提示
第一步:U盘启动装系统时,格式化主分区的内容后出现上面的问题 第二步:重启机器,通过U 盘启动.进入win pe系统. 第三步:把windows 7的ISO镜像解压到电脑的非系统盘的其他硬盘上.如D: ...
- Android - 用Fragments实现动态UI - 创建灵活的UI
当设计程序来支持各种不一样的屏幕尺寸时,可以在不同的布局中重用fragment来根据可用的屏幕大小来优化用户体验. 例如,在手机上可能使用一个fragment来使用单窗口用户体验比较合适.但是,你可能 ...
- Android - 用Fragments实现动态UI - 创建Fragment
你可以把fragment当作activity中的一个活动模块,它有自己的生命周期,自己接收输入消息,可以在activity运行的时候添加和删除(就像可以在其他activity中重用的"子ac ...
- 用PE安装操作系统时:无法创建新的系统分区 也无法定位现有系统分区 的解决办法
借助U盘的用PE安装操作系统时系统提示:无法创建新的系统分区 也无法定位现有系统分区 的解决办法... --------------------------------- 具体原因是安装时加载到安装程 ...
- windows 7 安装时提示:安装程序无法创建新的系统分区
window7纯净通过U盘引导进行硬盘安装: 系统提示"安装程序无法创建新的系统分区,也无法定位现有分区",导致安装无法进行. 解决办法1: 一种非常简单的办法,首先需要将C盘重新 ...
- Windows7安装程序无法定位现有系统分区,也无法创建新的系统分区
解决Windows7.Windows8系统安装时“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示. 方法一 把Windows7镜像发在你电脑的非系统盘的其他硬盘上. 重启机器,通过U盘启动 ...
随机推荐
- 用VBA写一个计算器
着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分 开始==================== ...
- 知识图谱之图数据库Neo4j
知识图谱中的知识是通过RDF结构来进行表示的,其基本单元是事实.每个事实是一个三元组(S, P, O),在实际系统中,按照存储方式的不同,知识图谱的存储可以分为基于表结构的存储和基于图结构的存储. 基 ...
- Java第二周总结
一.Java 基础程序设计 第一章: (1)在Java中源文件的扩展名为.java,编译Java源程序文件产生相应的字节码文件扩展名为.class (2)public class定义要求类名称保持一致 ...
- webpack初体验之模块化开发
写在前面的话 上次写过一篇关于webpack入门的博客,当时只是说借助node来完成开发,并用webpack打包以让浏览器识别.其实其主要思想就是实现前端模块化开发. 众所周知,历史上,JavaScr ...
- java基础笔记)(5)
xml文件:树形存储格式:通过相同的xml文件实现不同的软件.不同的操作系统.不同的平台之间的信息通讯: 声明xml文件: <?xml version="1.0" encod ...
- linux中文件属性
一. linux系统如何管理文件 1.1. 硬盘中的静态文件和inode a. 文件平时都在存放在硬盘中的,硬盘中存储的文件以一种固定的形式存放的,我们叫静态文件. b. 一块硬盘中可以分为两大区域: ...
- [CQOI2012]模拟工厂 题解(搜索+贪心)
[CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...
- Web服务器——WSGI
1.什么是WSGI? WSGI全称 Web Server Gateway Interface,也可称作Python Web Server Gateway Interface,开始于2003年,为Pyt ...
- 2、数据类型和运算符——Java数据类型
一.强类型语言和弱类型语言: 1.1 强类型语言 强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java..net .Pyt ...
- BZOJ 5317: [Jsoi2018]部落战争
传送门 写出式子,若存在 $a \in A$,$b \in B$,使得 $b+v=a$,那么此方案会产生冲突 即存在 $a \in A$,$b \in B$,使得 $v=a+(-b)$,设 $C=A+ ...