Oracle扩展分区表分区的脚本

declare
  v_tn    varchar2(100) := 'LSDAS'; --决策库名 大写
  v_ny    varchar2(100) := '201901'; --创建起始分区的时间
  v_tpnum number := 60; --增加分区月数 默认五年60个月
  v_tp    varchar2(100) := ''; -- 决策库表空间 可不指定 可自动获取
  v_sql   varchar2(4000) := ''; --不要动
  v_num   number := 1; --不要动
  v_t     date := to_date(v_ny, 'YYYYMM'); --不要动
begin
  select default_tablespace into v_tp from dba_users where username = v_tn;
  for rowdata in (select distinct a.table_name from user_tab_partitions a) loop
    v_num := 1;
    v_t   := to_date(v_ny, 'YYYYMM');
    loop
      BEGIN
        exit when v_num > v_tpnum;
        v_sql := 'alter table ' || rowdata.table_name ||
                 ' add
         partition P_SJQB_' || to_char(v_t, 'YYYYMM') ||
                 ' values (''' || to_char(v_t, 'YYYYMM') || ''')
        tablespace ' || v_tp || ' 
        pctfree 10
        initrans 1
        maxtrans 255
        storage
        (
          initial 1M
          next 1M
          minextents 1
        )';
        --dbms_output.put_line(v_sql);
        EXECUTE IMMEDIATE v_sql;
        v_num := v_num + 1;
        v_t   := add_months(v_t, 1);
      EXCEPTION
        WHEN OTHERS THEN
          v_num := v_num + 1;
          v_t   := add_months(v_t, 1);
          --DBMS_OUTPUT.PUT_LINE(rowdata.table_name || SQLCODE || '---' ||SQLERRM);
      end;
    end loop;
  end loop;
end;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值