1.数据库版本

2.具体procedure

DROP PROCEDURE DB2USER.TOOLS_PARTITION_TABLE_SHOW (VARCHAR ());

CREATE OR REPLACE PROCEDURE Tools_partition_table_show(IN ETL_DATE VARCHAR(8))
/******************************************************************************
NAME:
PURPOSE: REVISIONS:
Ver Date Author Description
--------- ---------- ------------ ------------------------------------
1.0 2015-07-22 Zen 1. 作为分区表添加和快速删除分区的一个示例
供有相同需求的脚本参考。
******************************************************************************/
LANGUAGE SQL
BEGIN
DECLARE V_LOCATION VARCHAR(100);
DECLARE V_START_TIME TIMESTAMP;
DECLARE V_SQLMSG VARCHAR(255);
DECLARE V_CNT INT;
DECLARE V_PARTITION_NAME VARCHAR(50);
DECLARE V_PARTITION_END VARCHAR(50);
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS EXCEPTION 1 V_SQLMSG = MESSAGE_TEXT;
CALL DB2USER.PRO_LOG(ETL_DATE,'Tools_partition_table_show','测试分区表作业方式',V_START_TIME,current timestamp,'ERROR',V_LOCATION,V_SQLMSG);
END;
/*清空目标表*/
SET V_START_TIME = current timestamp;
SET V_LOCATION = '清空数据'; /*
DELETE FROM DB2USER.S_CLM_RATE_POL_AAA WHERE BBQ = SUBSTR(ETL_DATE,1,6); COMMIT;*/
SET V_LOCATION = '测试保单赔率表的抽取开始';
SET V_PARTITION_NAME = 'P'||SUBSTR(ETL_DATE,1,6);
SET V_PARTITION_END = TO_CHAR(add_months(TO_DATE(ETL_DATE,'YYYYMMDD'),1),'YYYYMM'); --SELECT TO_CHAR(add_months(TO_DATE(ETL_DATE,'YYYYMMDD'),1),'YYYYMM') INTO V_PARTITION_END FROM sysibm.dual; --判断分区是否存在,如果存在,数据转出删除
SELECT COUNT(*) INTO V_CNT FROM syscat.datapartitions t
WHERE tabschema='DB2USER'
AND tabname='S_CLM_RATE_POL_AAA_TEST'
AND datapartitionname=V_PARTITION_NAME ; IF V_CNT=1 THEN
-- 分区数据转出
EXECUTE IMMEDIATE 'ALTER TABLE S_CLM_RATE_POL_AAA_test DETACH PARTITION '||V_PARTITION_NAME||' INTO DB2USER.TEMP_S_CLM_RATE_POL_AAA';
COMMIT;
EXECUTE IMMEDIATE 'DROP TABLE DB2USER.TEMP_S_CLM_RATE_POL_AAA';
END IF ; SET V_LOCATION = 'after 分区数据转出'; --非正常DML或DDL 需要调用 sysproc.admin_cmd();
--收集统计信息
CALL SYSPROC.ADMIN_CMD('RUNSTATS ON TABLE db2user.S_CLM_RATE_POL_AAA_test'); -- 添加新分区
EXECUTE IMMEDIATE 'ALTER TABLE DB2USER.S_CLM_RATE_POL_AAA_test ADD PARTITION '||V_PARTITION_NAME||' STARTING '||SUBSTR(ETL_DATE,1,6)||' INCLUSIVE ENDING '||V_PARTITION_END||' exclusive'; SET V_LOCATION = 'after 添加新分区';
COMMIT; EXECUTE IMMEDIATE 'ALTER TABLE DB2USER.S_CLM_RATE_POL_AAA_test ACTIVATE NOT LOGGED INITIALLY'; FOR REC AS WITH TMP(TYPE) AS (SELECT 'AAA1' AS TYPE FROM SYSIBM.DUAL
UNION ALL
SELECT 'AAA2' AS TYPE FROM SYSIBM.DUAL
UNION ALL
SELECT 'AAA4' AS TYPE FROM SYSIBM.DUAL)
SELECT * FROM TMP
DO
SET V_LOCATION = 'test'||REC.TYPE; INSERT INTO DB2USER.S_CLM_RATE_POL_AAA_test
SELECT
......END FOR; CALL DB2USER.PRO_LOG(ETL_DATE,'Tools_partition_table_show','测试分区表作业方式',V_START_TIME,current timestamp,'SUCCESS','','');
END;

3.总结:

a.db2 中表分区目前只支持range分区,没有oracle的丰富。

b.分区不能直接删除必须先 DETACH PARTITION ,detach之后必须commit不然会报结构不完善的错误。

c.需要添加新的分区只需要直接 ADD partition。

d.DDL语句用在procedure中需要显示commit。

DB2分区表删除和添加分区的更多相关文章

  1. oracle range分区表已经有了MAXVALUE 分区,如何添加分区?要不能删除MAXVALUE分区里的数据,不影响在线应用。

    来做个实验说明该问题:1.创建个分区表SQL> create table p_range_test 2 (id number,name varchar2(100)) 3 partition by ...

  2. linux下添加分区并挂载目录、卸载并删除分区

    添加分区并挂载目录 Linux的硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.   1.关闭服务器加上新硬盘   ...

  3. Oracle分区表删除分区引发错误ORA-01502: 索引或这类索引的分区处于不可用状态

    (一)问题: 最近在做Oracle数据清理,在对分区表进行数据清理时,采用的方法是drop partition,删除的过程中,没有遇到任何问题,大概过了10分钟,开发人员反馈部分分区表上的业务失败.具 ...

  4. Linux fdisk命令操作磁盘(添加、删除、转换分区等)

    创建分区1->查看原始分区sudo fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, ...

  5. oracle 11g 如何创建、修改、删除list-list组合分区

    Oracle11g在分区方面做了很大的提高,不但新增了4种复合分区类型,还增加了虚拟列分区.系统分区.INTERVAL分区等功能. 9i开始,Oracle就包括了2种复合分区,RANGE-HASH和R ...

  6. Oracle 分区表管理之组合分区(分区索引失效与性能比较)

    整体结构如下: Oracle  分区表管理之组合分区(分区索引失效与性能比较) 虽然老早就使用了分区表,终于有时间写有关分区表的内容:不是所有的场景数据量变大需要用到分区表,一般单表数据超过2g可以考 ...

  7. 创建,增加,删除mysql表分区

    1.测试添加分区和删除分区 ###添加删除range分区 (1)创建一个分区: CREATE TABLE titles (     emp_no      INT NOT NULL,     titl ...

  8. hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)

    一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...

  9. Oracle 分区表的索引、分区索引

    对于分区表,可以建立不分区索引.也就是说表分区,但是索引不分区.以下着重介绍分区表的分区索引. 索引与表一样,也可以分区.索引分为两类:locally partition index(局部分区索引). ...

随机推荐

  1. shell(1)

    bash变量类别: 本地变量 : 又叫局部变量,仅对当前shell进程有效 环境变量 : 当前shell及其子shell,子子shell-. 特殊变量 : $?  上一个命令执行的状态,0表示执行成功 ...

  2. oracle数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1)

    数据库 PSU,SPU(CPU),Bundle Patches 和 Patchsets 补丁号码快速参考 (文档 ID 1922396.1) 文档内容   用途   详细信息   Patchsets ...

  3. oracle 取随机数据

    --取随机数据 select dbms_random.value from dual; ); --百分比

  4. poj 3544 Journey with Pigs

    Journey with Pigs Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3004   Accepted: 922 ...

  5. 通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化

    1.实验目的与要求 目的:通过本次实验,完成矢量线性多边形向栅格数据的转化过程: 要求:采用VC++6.0实现. 2.实验方法 采用Bresenham算法实现 3.实验材料 直线的定义:y = x/3 ...

  6. Servlet & JSP - UrlRewriteFilter

    重写 URL 的好处有很多: 静态化页面,有利于搜索引擎收录. 隐藏真实的 URL,提高安全性. 当网站的结构发生变化时,无需要求用户修改书签. UrlRewriteFilter 的简单应用 1. M ...

  7. Spring(3.2.3) - Beans(4): p-namespace & c-namespace

    p 命名空间 p 命名空间允许你使用 bean 元素的属性而不是 <property/>子元素来描述 Bean 实例的属性值.从 Spring2.0 开始,Spring 支持基于 XML ...

  8. Ehcache(2.9.x) - API Developer Guide, Cache Eviction Algorithms

    About Cache Eviction Algorithms A cache eviction algorithm is a way of deciding which element to evi ...

  9. WCF Membership and Role Provider

    本文介绍的是如何使用Membership 和 Role Provider 来控制 WCF 调用方法的权限. 比如我们有一个WCF Method 叫 GetData(int num),然后我们只允许Ro ...

  10. echarts标准饼图(二)——标题(title)配置

    标题(title)配置 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...