zoukankan      html  css  js  c++  java
  • Oracle通过最小分区增加分区的SQL

    以下是参照changjian的分区脚本创建的从最小分区split分区的脚本,供参考。
    
    --split partition from min partition_name 
    DECLARE
      V_BEGIN_DT     DATE;
      IN_PART_TYPE   VARCHAR2(30):= 'PD_MAX';
      STR_PART_DT    VARCHAR2(30);
      STR_DT         VARCHAR2(30);
      v_partitionName VARCHAR2(500);
      
    BEGIN
      FOR I IN(SELECT TABLE_NAME,MIN(PARTITION_NAME) AS PARTITION_NAME
                 FROM USER_TAB_PARTITIONS T
                INNER JOIN CITI_WORKFLOW_TASK_CONFIG T1
                   ON T.TABLE_NAME = 'TEST_TABLE'
                 WHERE PARTITION_NAME NOT IN('PD_MAX')
                GROUP BY TABLE_NAME)
      LOOP
        V_BEGIN_DT := TO_DATE(SUBSTR(I.PARTITION_NAME,4),'YYYYMMDD');
        v_partitionName:=i.partition_name;
        
        WHILE V_BEGIN_DT >= DATE'2018-01-31' --扩展至20171231
        LOOP
          STR_PART_DT := trim(TO_CHAR(trunc(V_BEGIN_DT,'mm'), 'YYYY-MM-DD HH24:MI:SS'));
          STR_DT := TO_CHAR(last_day(add_months(V_BEGIN_DT,-1)),'YYYYMMDD');
          
                ||' AT(TO_DATE('||''||STR_PART_DT||''',''YYYY-MM-DD HH24:MI:SS''))
                INTO (PARTITION PD_'||STR_DT||',PARTITION '||v_partitionName||')');
                    
          EXECUTE IMMEDIATE 'ALTER TABLE '||I.TABLE_NAME||' SPLIT PARTITION '||v_partitionName
                ||' AT(TO_DATE('''||STR_PART_DT||''',''YYYY-MM-DD HH24:MI:SS''))
                INTO (PARTITION PD_'||STR_DT||',PARTITION '||v_partitionName||')';
            V_BEGIN_DT := ADD_MONTHS(V_BEGIN_DT,-1);
            V_PARTITIONNAME:='PD_'||STR_DT;
        END LOOP;
      END LOOP;
    END;
    All for u
  • 相关阅读:
    脑子好,蹦两下!程序员应该玩的小游戏
    推荐博客备份软件blog_bakcup
    经验(转)
    as super
    ActionScript工程如何使用Flash CS的fl包中的UI组件(转)
    astar(转)
    GROUPING,ROLLUP和CUBE(转)
    什么是分区表?为什么要用分区表?如何创建分区表?
    Flash player 详解(zhuan)
    jsfl(转)
  • 原文地址:https://www.cnblogs.com/ayumie/p/13864590.html
Copyright © 2011-2022 走看看