设为首页 加入收藏

TOP

Oracle 动态添加分区的实现方法(二)
2018-12-02 22:09:00 】 浏览:230
Tags:Oracle 动态 添加 分区 实现 方法
ms_output.put_Line('数据日期已经小于分区表最小日期,请重建表,重新设定最小日期分区');
            raise less_than_latest_exception;
        end if;


        dbms_output.put_line('添加分区,按照指定频率添加分区');
        MAX_PARTITION_DATE := MAX_PARTITION_DATE + ADD_FREQ;
        while MAX_PARTITION_DATE <= curDate loop
            begin
                V_SQL := 'alter table '|| tname || ' add partition P' || to_char(MAX_PARTITION_DATE,'YYYYMMDD') || ' values less than ';
                V_SQL := V_SQL || '(to_date(''' || to_char(MAX_PARTITION_DATE + ADD_FREQ,'YYYY-MM-DD') ||''',''YYYY-MM-DD''))';
                --dbms_output.put_line(V_SQL);
                execute immediate V_SQL;
                MAX_PARTITION_DATE := MAX_PARTITION_DATE + ADD_FREQ;
            end;
        end loop;
    else
        dbms_output.put_line('清除分区中的数据');
        V_SQL := 'alter table '||tname||' truncate partition P'||P_LABEL;
        dbms_output.put_line(V_SQL);
        execute immediate V_SQL;
    end if;       
end manage_table_partitions;


上边这段程序,默认情况下查询的是用户自己的表,如user_tab_partitions,user_part_tables,tab。所以,默认只能对用户自己的表的分区进行动态扩展和分区数据清除。如果想要对其他用户的表进行动态分区管理,需要将user_tab_partitions,user_part_tables,tab换成dba_tab_partitions,dba_part_tables,dba_tables,并且还需要有操作其他用户下表的权限。这样会导致权限放大,建议不要这么操作。


如果各个用户都需要使用动态分区扩展与清理,可以在每个用户下边部署这个存储过程,这样就不用跨用户之间动态管理分区。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux系统下virtuoso数据库安装与.. 下一篇MongoDB主从复制和副本集

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目