做一个oracle的job,在每月1日0:00时执行一次

解决方案 »

  1.   

    存储分区数据的表空间请务必采用 LOCAL MANAGEMENT。
      

  2.   

    搂主的方案很好。
    我以前也一直被这个问题困扰。
    不知道露住能否给我再稍微详细介绍一下你的方法。
    多谢
    [email protected]
      

  3.   

    我Oracle老师曾经告诉我一个的解决方案,希望对楼主有一点点用处:
    1.用SET UNUSED 选项标记为未用,但未删除占用的空间.
    2.然后在空闲的时间一部分一部分的删除(加入你自己的编的线程).计算好删除的时间,最好维持在1-2分钟左右.
    3.在删除时,随便给用户报个信息,比如"您长的太丑,暂时无法登陆数据库,请稍后再试",用户一般都不容易察觉.
      

  4.   

    还是建议分区——如果你的数据库支持
    然后drop分区就行了,当然,为了速度,不要建立全局索引,分区索引挺好的
      

  5.   

    比如原来表是 bussiness_detail
    将原来的表分为
       bussiness_detail01
       bussiness_detail02
       ...
       bussiness_detail12
    把数据按月存到不同的表中,删除时用truncate table 
      建一个视图 
       create bussiness_detail 
       as 
       select * from bussiness_detail01 
       union all 
       ...
       union all 
       select * from bussiness_detail12   
      

  6.   

    在楼上的基础上:
    你是怎么删除分区的,不会是直接drop吧?
    truncate table table_name partition partition_name;
    drop table table_name partition partition_name CASCADE CONSTRAINTS;
      

  7.   

    就是直接drop分区的!有什么问题吗?
      

  8.   

    CASCADE CONSTRAINTS;这句是什么意思?
      

  9.   

    FT,直接drop的速度肯定没有先清空数据(truncate)再删除(drop)来得快。CASCADE CONSTRAINTS只是用来删除和这个分区相关得约束的。
      

  10.   

    to  nowait(独行天涯路):  你的这句:truncate table table_name partition partition_name;
    drop table table_name partition partition_name CASCADE CONSTRAINTS;
    好像有点问题!
      

  11.   

    汗!
    应该是:alter table table_name truncate partition partition_name;