2012-05-18 29 views
0

是否有sql的任何子集专门处理水平分割表分配?片段分配表ORACLE SQL

我必须将库存表分段以在商店之间分配。我没有找到一个完整的解决方案,只是在正确的方向点头。

我有一个founs IBM的例子,确实相似,我想(我认为)

CREATE TABLE Tab1 (Col1 INT...) 
    FRAGMENT BY RANGE (Col1 MIN 100 MAX 200) 
     IN db1, db2, db3, db4; 

但我需要为Oracle为例(最多11g2)。

+1

我想你想在Oracle中进行范围分区(http://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm) – tbone

回答

1

如果您希望数据在不同的Oracle数据库之间分布(即每个存储都安装了Oracle数据库实例),您通常可以通过在每个存储的数据库中创建物化视图来实现这一点,商店需要访问的任何数据。

如果您希望数据分布在同一个数据库中的多个段上,您可以使用分区作为@tbone在他的评论中提出的建议。例如,从CREATE TABLE文档可以创建按季度分区的SALES表。

CREATE TABLE range_sales 
    (prod_id  NUMBER(6) 
    , cust_id  NUMBER 
    , time_id  DATE 
    , channel_id  CHAR(1) 
    , promo_id  NUMBER(6) 
    , quantity_sold NUMBER(3) 
    , amount_sold   NUMBER(10,2) 
    ) 
PARTITION BY RANGE (time_id) 
    (PARTITION SALES_Q1_1998 VALUES LESS THAN (TO_DATE('01-APR-1998','DD-MON-YYYY')), 
    PARTITION SALES_Q2_1998 VALUES LESS THAN (TO_DATE('01-JUL-1998','DD-MON-YYYY')), 
    PARTITION SALES_Q3_1998 VALUES LESS THAN (TO_DATE('01-OCT-1998','DD-MON-YYYY')), 
    PARTITION SALES_Q4_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')), 
    PARTITION SALES_Q1_1999 VALUES LESS THAN (TO_DATE('01-APR-1999','DD-MON-YYYY')), 
    PARTITION SALES_Q2_1999 VALUES LESS THAN (TO_DATE('01-JUL-1999','DD-MON-YYYY')), 
    PARTITION SALES_Q3_1999 VALUES LESS THAN (TO_DATE('01-OCT-1999','DD-MON-YYYY')), 
    PARTITION SALES_Q4_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')), 
    PARTITION SALES_Q1_2000 VALUES LESS THAN (TO_DATE('01-APR-2000','DD-MON-YYYY')), 
    PARTITION SALES_Q2_2000 VALUES LESS THAN (TO_DATE('01-JUL-2000','DD-MON-YYYY')), 
    PARTITION SALES_Q3_2000 VALUES LESS THAN (TO_DATE('01-OCT-2000','DD-MON-YYYY')), 
    PARTITION SALES_Q4_2000 VALUES LESS THAN (MAXVALUE)) 
;