我对ORACLE了解的不多,只是多年前上学的时候学过,没具体用过,我们公司最近要做一个监控项目,其中有一个实时数据表的数据量将会特别大,因此我想每个月自动建一个新表来存储数据,不知道这样做可不可行,或者有什么更好的办法?而如果每个月建个新表可行的话具体又应该怎么操作?

解决方案 »

  1.   

    弄一个按月分区的表。
    然后写2个过程实现对该分区表中分区的添加与删除操作,最后创建一个job,把先前创建的添加与删除分区操作的过程加进行。这样就实现了对分区表的知道维护。
      

  2.   

    --创建分区表,例:
    create table your_table(id number,cdate date)
      partition by range(cdate)(
      partition p1 values less than (date'2010-01-01'),
      partition p2 values less than (date'2010-02-01'),
      partition p3 values less than (date'2010-03-01'),
      partition p4 values less than (maxvalue))
      

  3.   

    感谢楼上,那么……JOB里面怎么写呢?呵呵
      

  4.   

    在pl/sql里创建一个job.begin
      sys.dbms_job.submit(job => :job,
                          what => 'DECLARE
                                  avc_table_name     varchar2(20);
                        begin
                           p_create_mon_tab(
                                  avc_table_name
                                  );
                          End;',
                          next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
                          interval => 'trunc(add_months(sysdate,1),''MONTH'') + 7 + 1/24');
      sys.dbms_job.broken(job => :job,
                          broken => true,
                          next_date => to_date('01-01-4000', 'dd-mm-yyyy'));
      commit;
    end;然后写一个p_create_mon_tab(avc_table_name varchar2)类型的存储过程.
      

  5.   

    --创建分区表,例:
    create table your_table(id number,cdate date)
      partition by range(cdate)(
      partition p1 values less than (date'2010-01-01'),
      partition p2 values less than (date'2010-02-01'),
      partition p3 values less than (date'2010-03-01'),
      partition p4 values less than (maxvalue))
    最后一行中的maxvalue是什么意思,为什么要加这行?