2017-01-20 9 views
0

たとえば、テーブル名がEmpで、empname、designation、salaryが列です。私はこのテーブルに2つのパーティションを持たせたいと思います.1つのパーティション内のマネージャであり、残りのパーティション(エンジニア、PEON、店員)の従業員のリストです。1つのパーティション内に1つの値を持ち、残りのパーティションを別のパーティションに分割する

は、誰かがそれを

答えて

2

この場合、LISTベースのパーティションを使用する必要があります。 ROLE = MANAGERのパーティションを作成し、デフォルトの別のパーティションを作成します。あなたに役立つ例がここにあります。

Exclude values from oracle partition

CREATE TABLE EMPLOYEE (EMP_ID VARCHAR2(25), 
         EMP_NAME VARCHAR2(250), 
         ROLE VARCHAR2(100) 
         ) 
    PARTITION BY LIST (ROLE) 
    (
    PARTITION part_managers 
     VALUES ('MANAGER'), 

    PARTITION part_others 
     VALUES (DEFAULT) 
    ); 
0

次のURLと例を参照してください作成する方法に役立ちます。たとえば を、次のSQL文は、に対応する5つのパーティションに範囲テーブルの販売分割で仕切らのsales_Q4_2007パーティションを分割します来年の四半期。この例では、パーティションsales_Q4_2008が暗黙的に分割パーティションの上限になります。

ALTER TABLE sales SPLIT PARTITION sales_Q4_2007 INTO 
(PARTITION sales_Q4_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','dd-MON-yyyy')), 
    PARTITION sales_Q1_2008 VALUES LESS THAN (TO_DATE('01-APR-2008','dd-MON-yyyy')), 
    PARTITION sales_Q2_2008 VALUES LESS THAN (TO_DATE('01-JUL-2008','dd-MON-yyyy')), 
    PARTITION sales_Q3_2008 VALUES LESS THAN (TO_DATE('01-OCT-2008','dd-MON-yyyy')), 
    PARTITION sales_Q4_2008); 

リストでパーティション化されたサンプル・テーブルの顧客の場合、次の文はパーティション・ヨーロッパを3つのパーティションに分割します。

ALTER TABLE list_customers SPLIT PARTITION Europe INTO 
    (PARTITION western-europe VALUES ('GERMANY', 'FRANCE'), 
    PARTITION southern-europe VALUES ('ITALY'), 
    PARTITION rest-europe); 

https://docs.oracle.com/database/121/VLDBG/GUID-01C14320-0D7B-48BE-A5AD-003DDA761277.htm

あなたはこのことについていくつかのアイデアを得るでしょう。

+0

2パーティションテーブルのためのあなたの動機は何ですか? – BobC

+0

例えば@BobCのパフォーマンス理由。履歴データを持つ1つの巨大なパーティションには、ほとんどのクエリで使用されることはほとんどありません。 –

+0

@WernfriedDomscheit。それは一つの例かもしれません。私はこの作業のような2つのパーティション戦略はほとんど見ていません。さらに、「履歴」パーティションは、提示されたユースケースではないようです。私は、OPが間違っているとか、そうすることはできないと言っているわけではありませんが、問題が何であれ間違ったアプローチをとっているかもしれません。 – BobC

関連する問題