已经运行的系统中,分区应该在何时建?

解决方案 »

  1.   

    brucelau(通菜@素食主义者):我问的是数据库设计就要建好吗?如何建?
      

  2.   

    建表的时候可以通过加入partition字句进行分区,分区的规则按照你的需要选定,比如一个表每个月会产生上百万的记录,你可以用月份(或诸如此类的字段)作为分区的规则:
    create table partdemo ( 
      yearmonth  varchar2(6),
      data   varchar2(100))
    partition by range (yearmonth)
    (
    partition part0000 values less than ('200301'),
    partition part0001 values less than ('200302'),
    partition part0011 values less than ('200312'),
    partition part0023 values less than ('200412')
    ); 
    这样,200301之前的记录就放在part0000,200301的记录就放在part0001,.......当然你还可以添加很多个分区,也可以把不同的分区放在不同的表空间上。
      

  3.   

    用range分区时,range(列名)中的列名可不可以是数据表中的列的部分内容阿?
    如:partition by range (substr(yearmonth,0,6))呢?谢谢
      

  4.   

    范围分区(通常使用与分区字段是日期类型的表)
    create table sales_range
    (
     salesman_id number(5),
     salesman_name varchar2(30),
     sales_amount number(10),
     sales_data date
    )
    partition by range(sales_date)
    (
     partition pt_sales1999_q4 values less than
    (to_date('01/01/2000','DD/MM/YYY'))
    tablespace sale1999_q4,
    pctfree 0
    storage (initial 100M next 100M pctincrease 0)
     partition pt_sales2000_q1 values less than
    (to_date('01/04/2000','DD/MM/YYY'))
    tablespace sale2000_q1,
     partition pt_sales2000_q2 values less than
    (to_date('01/07/2000','DD/MM/YYY'))
    tablespace sale2000_q2,
     partition pt_sales2000_q3 values less than
    (to_date('01/10/2000','DD/MM/YYY'))
    tablespace sale2000_q3,
     partition pt_sales2000_q4 values less than
    (maxvalue)
    tablespace sale2000_q4,
    )
    storage (initial 50M next 50M pctincrease 0  maxentents 4096)
    nologging