说明:

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动态的创建按月的分区的更多相关文章

  1. 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间

    [源码下载] 速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 作者:webabcd 介绍速战速决 之 PHP 动态地创 ...

  2. 创建nim+安装vioc分区

    一.搭建nim服务器 1.安装须知 安装nim软件包,client随系统默认安装,这里需要安装的是bos.sysmgt.nim.master和bos.sysmgt.nim.spot,即bos.sysm ...

  3. 重装windows7企业版时提示“安装程序无法创建新的系统分区,也无法定位现有系统

    第一步:把win7镜像发在你电脑的非系统盘的其他硬盘上. 第二步:重启机器,通过U 盘启动.进入win pe系统,关于这点我说一下,有些朋友也许不知道什么叫win pe系统,这个win pe 究竟有什 ...

  4. 解决Win7系统安装时“安装程序无法定位现有 系统分区,也无法创建新的系统分区”提示

    第一步:U盘启动装系统时,格式化主分区的内容后出现上面的问题 第二步:重启机器,通过U 盘启动.进入win pe系统. 第三步:把windows 7的ISO镜像解压到电脑的非系统盘的其他硬盘上.如D: ...

  5. Android - 用Fragments实现动态UI - 创建灵活的UI

    当设计程序来支持各种不一样的屏幕尺寸时,可以在不同的布局中重用fragment来根据可用的屏幕大小来优化用户体验. 例如,在手机上可能使用一个fragment来使用单窗口用户体验比较合适.但是,你可能 ...

  6. Android - 用Fragments实现动态UI - 创建Fragment

    你可以把fragment当作activity中的一个活动模块,它有自己的生命周期,自己接收输入消息,可以在activity运行的时候添加和删除(就像可以在其他activity中重用的"子ac ...

  7. 用PE安装操作系统时:无法创建新的系统分区 也无法定位现有系统分区 的解决办法

    借助U盘的用PE安装操作系统时系统提示:无法创建新的系统分区 也无法定位现有系统分区 的解决办法... --------------------------------- 具体原因是安装时加载到安装程 ...

  8. windows 7 安装时提示:安装程序无法创建新的系统分区

    window7纯净通过U盘引导进行硬盘安装: 系统提示"安装程序无法创建新的系统分区,也无法定位现有分区",导致安装无法进行. 解决办法1: 一种非常简单的办法,首先需要将C盘重新 ...

  9. Windows7安装程序无法定位现有系统分区,也无法创建新的系统分区

    解决Windows7.Windows8系统安装时“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示. 方法一 把Windows7镜像发在你电脑的非系统盘的其他硬盘上. 重启机器,通过U盘启动 ...

随机推荐

  1. session 、cookie、token的区别(转)

    session  session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session.服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后ses ...

  2. PHP开发一个简单的成绩录入系统

    预览界面 源码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  3. python每日一练:0015题

    第 0015 题: 纯文本文件 city.txt为城市信息, 里面的内容(包括花括号)如下所示: { "1" : "上海", "2" : & ...

  4. python每日一练:0005题

    第 0005 题: 你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小. import cv2 import os def resize(path,sizeX,size ...

  5. 5.使用github脚本LAZY----几个最好的发行版----自定义终端----基本命令

    使用现成的脚本 LAZY * 如果您不想手动设置,可以用这个脚本帮您设置 访问:github.com/arismelachroinos/lscript sudo apt-get git git clo ...

  6. angulart 常用

    angular: 使用 echarts npm install echarts --save // 安装declare const echarts: any; // 引入https://www.ech ...

  7. (4.24)【mysql、sql server】分布式全局唯一ID生成方案

    参考:分布式全局唯一ID生成方案:https://blog.csdn.net/linzhiqiang0316/article/details/80425437 分表生成唯一ID方案 sql serve ...

  8. merge into 导致序列跳号

    For each row merged by a MERGE statement. The reference to NEXTVAL can appear in the merge_insert_cl ...

  9. C++基础-多态

    本文为 C++ 学习笔记,参考<Sams Teach Yourself C++ in One Hour a Day>第 8 版.<C++ Primer>第 5 版.<代码 ...

  10. kmeans 聚类 k 值优化

    kmeans 中k值一直是个令人头疼的问题,这里提出几种优化策略. 手肘法 核心思想 1. 肉眼评价聚类好坏是看每类样本是否紧凑,称之为聚合程度: 2. 类别数越大,样本划分越精细,聚合程度越高,当类 ...