説明のために、 ここではコレクション表という語を、(1)XMLType
の表または列内のOrdered Collection Tables、(2)オブジェクトの表または列内のネスト表、という2つのカテゴリに使用します。
XMLType
またはオブジェクトの表と列を使用する際のパーティション化は、パーティション化の基本的なルールに従います。コレクション表をパーティション化するときは、実表のパーティション化方法がOracle Databaseによって使用されます。また、コレクション表は、実表がパーティション化されるときに自動的にパーティション化されます。パーティション化されたネスト表に対するDMLは、参照パーティション表に対する場合と似た方法で動作します。
例4-25の文によって、ネストした表のパーティションが作成されます。その他の例について、次の項に示します。
パーティション化されたネスト表に対して問合せを発行し、EXPLAIN
PLAN
を使用してパフォーマンスを改善する方法の例は、「コレクション表」を参照してください。
Oracle Databaseで提供されるLOCAL
キーワードを使用して、コレクション表を、パーティション化された実表に対応するように同一レベル・パーティション化します。これは、このリリースでのデフォルト動作です。以前のリリースのデフォルトでは、コレクション表は、パーティション化された実表に対して同一レベル・パーティション化されませんでした。現在、パーティション化されていないコレクション表をパーティション化された実表と一緒に格納するためには、GLOBAL
キーワードを指定する必要があります。詳細は、『Oracle Database SQL言語リファレンス』を参照してください。また、既存のパーティション化されていないコレクション表をパーティション化されたコレクション表に変換するには、「パーティション表への非パーティション表の展開」に示すように、オンライン再定義を使用します。
アウトオブライン(OOL)表のパーティション化がサポートされています。ただし、アウトオブライン表を持つ同じXMLスキーマの表を2つ作成することはできません。つまり、同じスキーマの表を2つ持つことはできないため、OOL表を含むスキーマでは、パーティションの交換は行えません。
例4-25 ネスト表パーティションの作成
CREATE TABLE print_media_part ( product_id NUMBER(6), ad_id NUMBER(6), ad_composite BLOB, ad_sourcetext CLOB, ad_finaltext CLOB, ad_fltextn NCLOB, ad_textdocs_ntab TEXTDOC_TAB, ad_photo BLOB, ad_graphic BFILE, ad_header ADHEADER_TYP) NESTED TABLE ad_textdocs_ntab STORE AS textdoc_nt PARTITION BY RANGE (product_id) (PARTITION p1 VALUES LESS THAN (100), PARTITION p2 VALUES LESS THAN (200));