表分区使用时间进行分割的,一个月要维护一次。HIGH_VALUE里面的值如下:
TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
 TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
TO_DATE(' 2008-02-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN') 
 
 
我想删除 小于某一个时刻的所有表分区。怎么弄?这个SQL文怎么写问题就在于 HIGH_VALUE里面写的都是 时间比较的原始定义,

解决方案 »

  1.   

    alter table table_name delete partition less than to_date(...)    
    是不是这样
      

  2.   

    疑问
    怎么会有两个相同时间段的分区?
       如 TO_DATE(' 2004-01-01 00:00:00', 'SYYYY-MM-DD HH24:MIS', 'NLS_CALENDAR=GREGORIAN')  楼主的维护,是删除分区,还是清除分区数据?
             从维护角度来说,尽可能不要去动表结构与相关定义。 因此,建议清除数据就可以了,否则,历史数据重新导入时,会有问题。
      

  3.   


    那个是我贴错了。不会有同样定义的分区的,Oracle也不允许。对不起,造成你的混乱。
    这么做我们觉得删除效率会提高。不知道这么理解对不对,恩。
    这个历史数据不会被重新导入了。这些数据是最原始的数据,被统计完以后就没用了。
      

  4.   

    建议保留历史分区,只需清除分区数据就可以了。
    至于效率方面,用 truncate 分区的语句吧。
      

  5.   

    ALTER TABLE tablename drop PARTITION pname;