ハイブリッド・パーティション・データの問合せ

オブジェクト・ストア内の内部データおよび複数のデータ・ファイルを単一の論理表として問い合せるには、ハイブリッド・パーティション表を使用してデータを単一のオブジェクトとして表すことができます。プロシージャDBMS_CLOUD.CREATE_HYBRID_PART_TABLEを使用して、ハイブリッド・パーティション表を作成します。

内部または外部のデータを複数の論理パーティションとしてより詳細に表すことができる場合は、問合せアクセス用のデータの論理パーティションを保持したまま、複数の内部および外部パーティションを含むハイブリッド・パーティション表を作成することを強くお薦めします。

ハイブリッド・パーティション表を作成する場合は、DBMS_CLOUD.CREATE_HYBRID_PART_TABLE文にパーティション化句を含めます。含めるパーティション化句は、データ・ファイルおよび使用するパーティション化のタイプによって異なります。詳細は、ハイブリッド・パーティション表の作成を参照してください。

  1. プロシージャDBMS_CLOUD.CREATE_CREDENTIALを使用してオブジェクト・ストアの資格証明を保存します。

    たとえば、次のとおりです。

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password' );
    END;
    /
    

    リソース・プリンシパル資格証明を有効にする場合、Oracle Cloud Infrastructure Object Storeにアクセスするための資格証明を作成する必要はありません。詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。

    この操作では、暗号化された形式で資格証明がデータベースに格納されます。資格証明名には任意の名前を使用できます。このステップは、オブジェクト・ストアの資格証明を変更しないかぎり1回のみ必要です。資格証明を保存したら、ハイブリッド・パーティション表の作成に同じ資格証明名を使用できます。

    様々なオブジェクト・ストレージ・サービスのusernameおよびpasswordパラメータの詳細は、CREATE_CREDENTIALプロシージャを参照してください。

  2. プロシージャDBMS_CLOUD.CREATE_HYBRID_PART_TABLEを使用して、ソース・ファイルに基づいてハイブリッド・パーティション表を作成します。

    プロシージャDBMS_CLOUD.CREATE_HYBRID_PART_TABLEは、サポートされているクラウド・オブジェクト・ストレージ・サービスの外部パーティション・ファイルをサポートします。資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストアに存在する必要があります。

    次に例を示します。

    BEGIN
      DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
          table_name =>'HPT1',  
          credential_name =>'DEF_CRED_NAME',  
          format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),  
          column_list => 'col1 number, col2 number, col3 number',
          partitioning_clause => 'partition by range (col1)
               (partition p1 values less than (1000) external location
                  ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_11.txt'') ,
                partition p2 values less than (2000) external location
                  ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_21.txt'') ,
                partition p3 values less than (3000) )'
         );
    END;
    /
    

    パラメータは次のとおりです:

    • table_name: ハイブリッド・パーティション表の名前です。

    • credential_name: 前のステップで作成された資格証明の名前です。

    • partitioning_clause: 個々のパーティションの場所情報を含む、完全なパーティション化句です。

    • format: ソース・ファイルのフォーマットを説明するために指定できるオプションを定義します。

      ソース・ファイルのデータが暗号化されている場合は、encryptionオプションを指定してformatパラメータを指定して、データを復号化します。データの復号化の詳細は、オブジェクト・ストレージからのインポート中のデータの復号化を参照してください。

    • column_list: ソース・ファイル内の列定義のカンマ区切りリストです。

    この例では、namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。

    これで、前のステップで作成したハイブリッド・パーティション表に対して問合せを実行できます。Autonomous Databaseは、ハイブリッド・パーティション表のパーティション化情報を利用して、問合せがオブジェクト・ストア内の関連データ・ファイルにのみアクセスするようにします。たとえば、次の問合せでは、パーティションP1からのみデータ・ファイルを読み取ります:

    SELECT * FROM hpt1 WHERE col1 < 750;

    DBMS_CLOUD.CREATE_HYBRID_PART_TABLEを使用して作成するハイブリッド・パーティション表には、2つの非表示列file$pathおよびfile$nameが含まれます。これらの列は、レコードの取得元ファイルの識別に役立ちます。詳細は、外部表のメタデータ列を参照してください。

    指定したフォーマット・オプションに一致しない行がソース・ファイル内にある場合、問合せはエラーを報告します。これらのエラーを抑制するには、rejectlimitなどのDBMS_CLOUDパラメータを使用できます。または、作成したハイブリッド・パーティション表を検証し、エラー・メッセージと拒否された行を確認して、それに従ってフォーマット・オプションを変更することもできます。詳細は、外部データの検証およびハイブリッド・パーティション・データの検証を参照してください。

    パラメータの詳細は、CREATE_HYBRID_PART_TABLEプロシージャを参照してください。

    サポートされるクラウド・オブジェクト・ストレージ・サービスの詳細は、DBMS_CLOUD URI形式を参照してください。