0

配布のためにテーブルを水平方向に断片化することを具体的に扱うSQLのサブセットはありますか?

店舗間で配布する在庫テーブルを断片化する必要があります。私は完全な解決策を探しているのではなく、正しい方向にうなずきます。

私が望むものと同様のIBMの例があります(私は思います)

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

しかし、Oracleの例が必要です(最大11g2)。

4

1 に答える 1

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))
;
于 2012-05-18T16:02:39.243 に答える