外部パーティション・データの問合せ(Partitioning句の使用)
オブジェクト・ストア内の複数のデータ・ファイルを単一の外部表として問い合せるときに、これらのファイルを複数の論理パーティションとして表すことができる場合は、外部パーティション表を使用することを強くお薦めします。外部パーティション表を使用すると、問合せアクセス用のデータ・ファイルの論理パーティションが保持されます。DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEプロシージャを使用して、外部パーティション表を作成します。
Autonomous AI Databaseで外部パーティション表を作成するには、次の2つの方法があります:
-
最初のバージョンは対象です。このタイプの外部パーティション表の使用方法の詳細は、「Hiveフォーマット・ソース・ファイル編成を使用した外部パーティション・データの問合せ」を参照してください。
-
二つ目のバージョンが対象です。この方法でパーティション化された外部表を作成する場合は、
partitioning_clauseパラメータにパーティション化句を含めます。含めるパーティション化句は、クラウドのデータ・ファイルおよび使用するパーティション化のタイプによって異なります。この項では、このタイプの外部パーティション表の使用方法について説明します。
-
プロシージャ
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オブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。
この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。オブジェクト・ストアの資格証明を変更しないかぎり、このステップが必要なのは1回のみです。資格情報を一度格納したら、外部表の作成に同じ資格証明名を使用できます。
様々なオブジェクト・ストレージ・サービスの
usernameおよびpasswordパラメータの詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。 -
プロシージャ
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEを使用して、ソース・ファイルに基づいて外部パーティション表を作成します。プロシージャ
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEは、サポートされているクラウド・オブジェクト・ストレージ・サービスで外部パーティション・ファイルをサポートします。資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストアに存在する必要があります。たとえば:
BEGIN DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE( table_name =>'PET1', 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) location ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_11.txt''), partition p2 values less than (2000) location ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_21.txt''), partition p3 values less than (3000) location ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file_31.txt'') )' ); END; /パラメータは次のとおりです。
-
table_name: 外部表の名前です。 -
credential_name: 前のステップで作成された資格証明の名前です。 -
partitioning_clause: 個々のパーティションの場所情報を含む、完全なパーティション化句です。 -
format: ソース・ファイルのフォーマットを説明するために指定できるオプションを定義します。format: ソース・ファイルのフォーマットを記述するために指定できるオプションを定義します。ソース・ファイル内のデータが暗号化されている場合は、
encryptionオプションを指定してformatパラメータを指定してデータを復号化します。データの復号化の詳細は、オブジェクト・ストレージからのインポート中のデータの復号化を参照してください。 -
column_list: ソース・ファイル内の列定義のカンマ区切りリストです。
この例では、
namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。これで、前のステップで作成した外部パーティション表に対して問合せを実行できます。Autonomous AI Databaseは、外部パーティション表のパーティション化情報を利用して、問合せがオブジェクト・ストア内の関連データ・ファイルにのみアクセスするようにします。たとえば、次の問合せでは、パーティションP1からのみデータ・ファイルを読み取ります:
SELECT * FROM pet1 WHERE col1 < 750;DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEを使用して作成する外部パーティション表には、2つの非表示列file$pathとfile$nameが含まれます。これらの列は、レコードの取得元ファイルの識別に役立ちます。詳細は、外部表メタデータ列を参照してください。指定したフォーマット・オプションに一致しない行がソース・ファイル内にある場合、問合せはエラーを報告します。rejectlimitなどの
DBMS_CLOUDパラメータを使用して、これらのエラーを抑止できます。別の方法として、作成した外部パーティション表を検証し、エラー・メッセージと拒否された行を確認して、それに従ってフォーマット・オプションを変更することもできます。詳細は、「外部データの検証」および「外部パーティション・データの検証」を参照してください。パラメータの詳細は、「CREATE_EXTERNAL_PART_TABLEプロシージャ」を参照してください。
サポートされるクラウド・オブジェクト・ストレージ・サービスの詳細は、「DBMS_CLOUD URI形式」を参照してください。
-