ALTER TABLE EXCHANGE PARTITION文のセマンティックは、「ハッシュ・パーティション表と* - ハッシュ・パーティションの交換」で説明されているセマンティックと同じです。次の例では、リスト - リスト・パーティション表のパーティションの交換シナリオを示します。
CREATE TABLE customers_apac
( id NUMBER
, name VARCHAR2(50)
, email VARCHAR2(100)
, region VARCHAR2(4)
, credit_rating VARCHAR2(1)
)
PARTITION BY LIST (credit_rating)
( PARTITION poor VALUES ('P')
, PARTITION mediocre VALUES ('C')
, PARTITION good VALUES ('G')
, PARTITION excellent VALUES ('E')
);
表にAPACの顧客を移入します。次に、リスト - リスト・パーティション表を作成します。
CREATE TABLE customers
( id NUMBER
, name VARCHAR2(50)
, email VARCHAR2(100)
, region VARCHAR2(4)
, credit_rating VARCHAR2(1)
)
PARTITION BY LIST (region)
SUBPARTITION BY LIST (credit_rating)
SUBPARTITION TEMPLATE
( SUBPARTITION poor VALUES ('P')
, SUBPARTITION mediocre VALUES ('C')
, SUBPARTITION good VALUES ('G')
, SUBPARTITION excellent VALUES ('E')
)
(PARTITION americas VALUES ('AMER')
, PARTITION emea VALUES ('EMEA')
, PARTITION apac VALUES ('APAC')
);
customers_apac表のパーティション化キーが、customers表のサブパーティション化キーと一致していることが重要です。
次に、apacパーティションを交換します。
ALTER TABLE customers EXCHANGE PARTITION apac WITH TABLE customers_apac WITH VALIDATION;