zoukankan      html  css  js  c++  java
  • 创建分区表(按照年份分区,自动新增分区)

    创建分区表AAA,通过字段创建时间的年份来分区,分区表自动根据插入的数据新增对应的分区,不过此处自动创建的分区名称为系统创建的,如:SYS_24。

    CREATE TABLE AAA 
    ( 
    ID NUMBER(8), 
    CREATETIME DATE, 
    VALUE NUMBER(8) 
    ) 
    PARTITION BY RANGE(CREATETIME) 
    INTERVAL(NUMTOYMINTERVAL(1,'YEAR')) 
    ( 
    PARTITION P2014 VALUES LESS THAN(TO_DATE('2015-01-01','YYYY-MM-DD')) 
    );
    

    不过,这种分区名称难以使用,故后面会使用存储过程来修改分区表的分区名。

    create or replace procedure pro_modified_partition_name
    as
    cursor partitiionList is SELECT TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME,high_value FROM USER_TAB_PARTITIONS WHERE TABLE_NAME ='AAA' and instr(PARTITION_NAME, 'SYS') > 0;  
    row_p partitiionList%rowtype;
    pName VARCHAR2(100);
    hv VARCHAR2(2000);
    hv_year number;
    pNewName varchar2(100);
    SQL_STMT VARCHAR2(200);
    begin
     open partitiionList;
     for row_p in partitiionList loop
          pName:= row_p.PARTITION_NAME;
          hv:= row_p.high_value;
          hv_year := to_number(substr(hv,11,4))-1;
          pNewName := 'P'|| hv_year;
          --执行alter语句要使用动态sql(execute immediate)
          SQL_STMT := 'alter table AAA rename partition '||pName||' to '||pNewName;
          execute immediate SQL_STMT;
      end loop row_p;
      close partitiionList;
    end;

    通过分区表的high_value值来截取对应的时间,再用以修改为分区名。

  • 相关阅读:
    [极客大挑战 2019]EasySQL CTF复现
    [极客大挑战 2019]Havefun (一起来撸猫) CTF复现
    一个简单漂亮的登录页面(前端)
    Python XPath的使用
    Python Requests的基本用法
    Linux配置jdk环境变量
    高性能 Java RPC 框架 Dubbo
    Zookeeper的配置文件及命令
    zookeeper怎么实现分布式锁
    Zookeeper-集群崩溃恢复
  • 原文地址:https://www.cnblogs.com/kehaocheng/p/7388757.html
Copyright © 2011-2022 走看看