たとえば、テーブル名がEmpで、empname、designation、salaryが列です。私はこのテーブルに2つのパーティションを持たせたいと思います.1つのパーティション内のマネージャであり、残りのパーティション(エンジニア、PEON、店員)の従業員のリストです。1つのパーティション内に1つの値を持ち、残りのパーティションを別のパーティションに分割する
は、誰かがそれを
たとえば、テーブル名がEmpで、empname、designation、salaryが列です。私はこのテーブルに2つのパーティションを持たせたいと思います.1つのパーティション内のマネージャであり、残りのパーティション(エンジニア、PEON、店員)の従業員のリストです。1つのパーティション内に1つの値を持ち、残りのパーティションを別のパーティションに分割する
は、誰かがそれを
この場合、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)
);
次の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
あなたはこのことについていくつかのアイデアを得るでしょう。
2パーティションテーブルのためのあなたの動機は何ですか? – BobC
例えば@BobCのパフォーマンス理由。履歴データを持つ1つの巨大なパーティションには、ほとんどのクエリで使用されることはほとんどありません。 –
@WernfriedDomscheit。それは一つの例かもしれません。私はこの作業のような2つのパーティション戦略はほとんど見ていません。さらに、「履歴」パーティションは、提示されたユースケースではないようです。私は、OPが間違っているとか、そうすることはできないと言っているわけではありませんが、問題が何であれ間違ったアプローチをとっているかもしれません。 – BobC