機械翻訳について

外部データ・ポンプ・ダンプ・ファイルの問合せ

DBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用して外部表を作成することで、クラウド内のOracle Data Pumpダンプ・ファイルを問い合せることもできます。

このタイプの外部表を作成するソース・ファイルは、外部表のORACLE_DATAPUMPアクセス・ドライバを使用してソース・システムからエクスポートする必要があります。 ORACLE_DATAPUMPアクセス・ドライバを使用したエクスポートの詳細は、「ORACLE_DATAPUMPアクセス・ドライバを使用したデータのアンロードおよびロード」を参照してください。

外部表を作成するには、ORACLE_DATAPUMPアクセス・ドライバを使用してエクスポートされたOracle Data Pumpダンプ・ファイルをオブジェクト・ストアに移動してから、DBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用して外部表を作成します。

この例のソース・ファイルは、Oracle Data Pumpダンプ・ファイルexp01.dmpおよびexp02.dmpです。

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

    たとえば:

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

    この操作では、資格証明がデータベースに暗号化された形式で保存されます。  資格証明名には任意の名前を使用できます。 このステップは、オブジェクト・ストア資格証明が変更されないかぎり、1回のみ実行すれば済みます。  資格証明を保存したら、外部表の作成に同じ資格証明名を使用できます。

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

  2. DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャを使用して、ソース表の上に外部表を作成します。

    たとえば:

    BEGIN
       DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'CHANNELS_EXT',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp01.dmp,
                         https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp02.dmp'
        format => json_object('type' value 'datapump', 'rejectlimit' value '1'),
        column_list => 'CHANNEL_ID NUMBER, CHANNEL_DESC VARCHAR2(20), CHANNEL_CLASS VARCHAR2(20)' );
    END;
    /
    

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

    • table_name: 外部表名です。

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

    • file_uri_list: 問い合せるデータ・ポンプ・ダンプ・ファイルのカンマ区切りリストです。

    • format: ソース・ファイルの形式を記述するために指定できるオプションを定義します。 typeを'datapump'として指定する場合、他の有効な書式パラメータは'rejectlimit'のみです。

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

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

    これで、前のステップで作成した外部表に問合せを実行できます。 たとえば:

    SELECT count(*) FROM channels_ext;

    デフォルトでは、データベースは、外部データ・ファイルのすべての行が有効であり、ターゲットのデータ型定義とファイルのフォーマット定義の両方に一致することを前提としています。 検証の一環として、DBMS_CLOUDは、必要なすべてのダンプ・ファイル部分が存在することを確認し、ダンプ・ファイルが有効で破損していないことも確認します(exp01.dmpexp02.dmpなど)。 DBMS_CLOUDフォーマット・オプションrejectlimitを使用すると、これらのエラーを抑止できます。 または、作成した外部表を検証して、エラー・メッセージおよび拒否された行を確認することもできます。 詳細は、「外部データの検証」を参照してください。

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

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