2012-05-18 73 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)) 
;