Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2841647
  • 博文数量: 627
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 6839
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(627)

文章存档

2022年(121)

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-08-08 22:11:21


  1. 测试表
  2. CREATE TABLE "TEST"."TMP_PART_DAY2"
  3.    ( "ID" NUMBER(20,0) NOT NULL ENABLE,
  4.         "NAME" VARCHAR2(1000),
  5.         "MEMO" VARCHAR2(1000),
  6.         "CREATE_TIME" DATE
  7.    ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  8.   STORAGE(
  9.   BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  10.   TABLESPACE "USERS"
  11.   PARTITION BY RANGE ("CREATE_TIME") INTERVAL (NUMTODSINTERVAL(1, 'DAY'))
  12.  (PARTITION "SYS_P928" VALUES LESS THAN (TO_DATE(' 2021-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE
  13.   PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
  14.  NOCOMPRESS LOGGING
  15.   STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  16.   PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  17.   BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  18.   TABLESPACE "USERS" );

  19. 插入几条数据:
  20. insert into TMP_PART_DAY2 values(1,'aaa','bbb',sysdate -100);
  21. insert into TMP_PART_DAY2 values(1,'aaa','bbb',sysdate -90);
  22. insert into TMP_PART_DAY2 values(1,'aaa','bbb',sysdate -88);
  23. insert into TMP_PART_DAY2 values(1,'aaa','bbb',sysdate -12);
  24. commit;

  25. 找原因,看表定义
  26. set long 1000
  27. SELECT DBMS_METADATA.GET_DDL ('TABLE','TMP_PART_DAY2','TEST') FROM DUAL;

  28. 找规律,准备清理
  29. col table_name for a20
  30. col PARTITION_NAME for a20
  31. col HIGH_VALUE for a55
  32. select TABLE_NAME,PARTITION_NAME,HIGH_VALUE,PARTITION_POSITION,TABLESPACE_NAME,NUM_ROWS from DBA_tab_partitions where TABLE_NAME='TMP_PART_DAY2';

  33. 拼脚本,然后执行
  34. select 'alter table test.TMP_PART_DAY2 drop partition '||partition_name||' update indexes; ' c
  35. from dba_segments where segment_name='TMP_PART_DAY2' and PARTITION_NAME<='SYS_P950';
然后即可执行生成的脚本,对不想要的分区清理,如果PARTITION_NAME比较乱,没有规律,那么PARTITION_POSITION条件也可以考虑(and partition_position<900)。
阅读(252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~