ハイブリッド・パーティション・データの問合せ
オブジェクト・ストア内の内部データおよび複数のデータ・ファイルを単一の論理表として問い合せるには、ハイブリッド・パーティション表を使用してデータを単一のオブジェクトとして表すことができます。 DBMS_CLOUD.CREATE_HYBRID_PART_TABLEプロシージャを使用して、ハイブリッド・パーティション表を作成します。
内部または外部のデータを複数の論理パーティションとしてより細かく表すことができる場合は、問合せアクセス用のデータの論理パーティションを保持したまま、複数の内部および外部パーティションを含むハイブリッド・パーティション表を作成することを強くお薦めします。
ハイブリッド・パーティション表を作成する際には、DBMS_CLOUD.CREATE_HYBRID_PART_TABLE文にパーティション化句を含めます。 含めるパーティション化句は、使用するデータファイルおよびパーティション化のタイプによって異なります。 詳細については、「ハイブリッド・パーティション表の作成」を参照してください。
- プロシージャ
DBMS_CLOUD.CREATE_CREDENTIALを使用してオブジェクト・ストアの資格証明を保存します。たとえば:
BEGINDBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DEF_CRED_NAME', username => 'adb_user@example.com', password => 'password' ); END; /リソース・プリンシパル資格証明を有効にした場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。 詳細については、「リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス」を参照してください。
この操作では、資格証明がデータベースに暗号化された形式で保存されます。 資格証明名には任意の名前を使用できます。 このステップは、オブジェクト・ストア資格証明が変更されないかぎり、1回のみ実行すれば済みます。 資格証明を格納したら、ハイブリッド・パーティション表を作成するために同じ資格証明名を使用できます。
様々なオブジェクト・ストレージ・サービスの
usernameおよびpasswordパラメータの詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。 DBMS_CLOUD.CREATE_HYBRID_PART_TABLEプロシージャを使用して、ソース・ファイルに基づいてハイブリッド・パーティション表を作成します。DBMS_CLOUD.CREATE_HYBRID_PART_TABLEプロシージャは、サポートされているクラウド・オブジェクト・ストレージ・サービスで外部パーティション・ファイルをサポートします。 資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストアに存在する必要があります。たとえば:
BEGINDBMS_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 Object Storageネームスペースで、bucketnameはバケット名です。 詳細は、「オブジェクト・ストレージ・ネームスペースの理解」を参照してください。これで、前のステップで作成したハイブリッド・パーティション表に対して問合せを実行できます。 Autonomous Databaseは、ハイブリッド・パーティション表のパーティション化情報を利用して、問合せがオブジェクト・ストア内の関連データ・ファイルにのみアクセスするようにします。 たとえば、次の問合せでは、パーティションP1からのみデータ・ファイルを読み取ります:
SELECT * FROM hpt1 WHERE col1 < 750;DBMS_CLOUD.CREATE_HYBRID_PART_TABLEを使用して作成するハイブリッド・パーティション表には、2つの非表示列file$pathおよびfile$nameが含まれます。 これらの列は、レコードの起点となるファイルの識別に役立ちます。 詳細については、「外部表のMetadata列」を参照してください。指定したフォーマット・オプションと一致しない行がソース・ファイル内にある場合、問合せはエラーを通知します。 これらのエラーを抑制するには、rejectlimitなどの
DBMS_CLOUDパラメータを使用できます。 別の方法として、作成したハイブリッド・パーティション表を検証し、エラー・メッセージと拒否された行を確認して、それに従ってフォーマット・オプションを変更することもできます。 詳細は、「外部データの検証」および「ハイブリッド・パーティション・データの検証」を参照してください。パラメータの詳細は、「CREATE_HYBRID_PART_TABLEプロシージャ」を参照してください。
サポートされているクラウド・オブジェクト・ストレージ・サービスの詳細は、「DBMS_CLOUD URIの書式」を参照してください。
-