间隔分区:每日一个示例-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3502469
  • 博文数量: 718
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7790
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(718)

文章存档

2024年(4)

2023年(74)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

最近访客
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2022-09-01 10:06:58

1
  1. drop table acct;
  2. create table acct
  3. (
  4.   user_id number,
  5.   user_name varchar2(20),
  6.   insertdate date
  7. )
  8. tablespace users
  9. partition by range(insertdate)
  10. interval (numtodsinterval(1,'day')) store in (users)
  11. (
  12.   partition part20220820 values less than(to_date('2022-08-21 00:00:00','yyyy-mm-dd hh24:mi:ss'))
  13. );

  14. insert into acct values (1,'aaa',to_date('2022-08-10','yyyy-mm-dd'));
  15. insert into acct values (2,'bbb',to_date('2022-08-25','yyyy-mm-dd'));
  16. insert into acct values (3,'ccc',to_date('2022-08-26','yyyy-mm-dd'));
  17. insert into acct values (4,'ddd',to_date('2022-09-11','yyyy-mm-dd'));
  18. commit;
  19. select * from acct;

  20. set lin 200
  21. col tablespace_name for a12
  22. col table_name for a10
  23. col partition_name for a20
  24. col high_value for a85
  25. col partition_position for 999
  26. select table_name,partition_name,high_value,partition_position,tablespace_name,num_rows from dba_tab_partitions where table_name='acct';


如果想要改这些间隔分区的名称,可以尝试一下:
  1. set serverout on

  2. create function dailypartition(tablename in varchar2) return boolean is

  3.     expression_is_of_wrong_type exception;
  4.     pragma exception_init(expression_is_of_wrong_type, -6550);

  5.     ds interval day to second;
  6.     ym interval year to month;
  7.     str varchar2(1000);

  8. begin
  9.     select interval into str
  10.     from user_part_tables
  11.     where table_name = tablename;

  12.     execute immediate 'begin :ret := '||str||'; end;' using out ym;
  13.     return false;
  14. exception
  15.     when expression_is_of_wrong_type then
  16.         execute immediate 'begin :ret := '||str||'; end;' using out ds;
  17.         return true;
  18. end dailypartition;
  19. /



  20. create procedure renamepartitions is

  21.     ts timestamp;
  22.     newname varchar2(30);

  23.     cursor tabpartitions is
  24.     select table_name, partition_name, high_value
  25.     from user_tab_partitions
  26.     where table_name in ('acct', 'test') --这里改为你想要改分区名称的间隔分区表
  27.         and partition_name <> 'p_initial'
  28.     order by 1,2;

  29. begin

  30.     execute immediate 'alter session set ddl_lock_timeout = 180';

  31.     for apart in tabpartitions loop
  32.         execute immediate 'begin :ret := '||apart.high_value||'; end;' using out ts;
  33.         if dailypartition(apart.table_name) then
  34.             ts := ts - interval '1' day;
  35.             newname := 'p_'||to_char(ts,'yyyy_mm_dd');
  36.         else
  37.             ts := add_months(ts, -1);
  38.             newname := 'p_'||to_char(ts,'yyyy_mm');
  39.         end if;
  40.         if apart.partition_name <> newname then
  41.             execute immediate 'alter table '||apart.table_name||' rename partition '||apart.partition_name||' to '||newname;
  42.         end if;
  43.     end loop;

  44. end renamepartitions;
  45. /
引自
  1. https://stackoverflow.com/questions/41443756/oracle-automatic-partitioning-name-pattern-for-partitions
修改后效果如下:
看着清晰多了吧。

阅读(407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图