暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 自动分区命名

ASKTOM 2020-05-25
606

问题描述

嗨,使用此DBMS_REDEFINITION.start_redef_table包时,有什么方法可以为自动分区赋予名称。

提前谢谢你。


专家解答

不幸的是没有,但是一旦操作完成,您可以根据自己的需要重命名分区。

可以使用一些plsql (下面的伪代码) 来查看定义,例如

declare
    l_stamp_clause varchar2(200);
    l_new_parname  varchar2(200);
begin
    for i in (  select t.table_name, p.partition_name, p.high_value, t.owner
                from dba_part_tables t,
                     dba_tab_partitions p
                where t.owner = ...
                and   t.partitioning_type = 'RANGE'
                and   t.interval is not null
                and   t.owner = p.table_owner
                and   t.table_name = p.table_name
                and   p.partition_name like 'SYS\_P%' escape '\'
                and   t.table_name not like 'SYS\_P%' escape '\'
           ) loop
      l_stamp_clause := i.high_value;

      execute immediate
        'select to_char('||l_stamp_clause||',''YYYYMM'') from dual' into l_new_parname;

      l_new_parname := 'MEANINGFUL_NAME'||'_p'||l_new_parname;

      execute immediate 'alter table '||i.owner||'.'||i.table_name||' rename partition '||i.partition_name||' to '||l_new_parname;

    end loop;
end;


在表处于活动状态时,请稍微小心重命名分区。你永远不会引用现有的名字。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论