DBMS_CLOUD URI形式

DBMS_CLOUDの操作におけるソース・ファイルURIの形式について説明します。この形式は、使用しているオブジェクト・ストレージ・サービスによって異なります。

DBMS_CLOUDでは、セキュアな通信が保証され、URIを指定する場合はHTTPSを使用する必要があります(URIの接頭辞はhttps://です)。

Oracle Cloud Infrastructure Object StorageのネイティブURI形式

ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageに存在する場合は、オブジェクト・ストレージ専用エンドポイントを使用する次のURI形式を使用することをお薦めします。詳細は、オブジェクト・ストレージ専用エンドポイントを参照してください。

https://namespace-string.objectstorage.region.oci.customer-oci.com/n/namespace-string/b/bucketname/o/filename
ノート

OCI Object Store専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。

ソース・ファイルがOracle Cloud Infrastructure Object Storageにあり、商用レルム(OC1)にない場合は、次の形式を使用する必要があります。

https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucket/o/filename

たとえば、商用レルム(OC1)では、Phoenixデータ・センターのbucketnameバケット内にあるファイルchannels.txtのネイティブURIは次のとおりです:

https://namespace.objectstorage.region.oci.customer-oci.com/n/namespace/b/bucketname/o/channels.txt

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

URIは、オブジェクト・ストアの右側の省略記号メニューにあるOracle Cloud Infrastructure Object Storageの「オブジェクトの詳細」にあります:

  1. Oracle Cloudの横にあるナビゲーション・アイコンをクリックして、Oracle Cloud Infrastructureコンソールを開きます。
  2. Oracle Cloud Infrastructureの左側のナビゲーション・メニューから、「コア・インフラストラクチャ」をクリックします。「Object Storage」の下で、「Object Storage」をクリックします。
  3. 「リスト範囲」の下で、「コンパートメント」を選択します。
  4. 「名前」列からバケットを選択します。
  5. 「オブジェクト」領域で、「オブジェクト詳細の表示」をクリックします。
    ad_oci_view_object_details.pngの説明が続きます
  6. 「オブジェクトの詳細」ページのURLパス(URI)フィールドに、オブジェクトにアクセスするためのURIが表示されます。
ノート

ソース・ファイルは、オブジェクト・ストレージ層バケットに格納されている必要があります。Autonomous Databaseは、アーカイブ・ストレージ層のバケットをサポートしていません。詳細は、オブジェクト・ストレージの概要を参照してください。

Oracle Cloud Infrastructure Object StorageのSwift URI形式

ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageに存在する場合は、オブジェクト・ストレージ専用エンドポイントを使用する次のURI形式を使用することをお薦めします。詳細は、オブジェクト・ストレージ専用エンドポイントを参照してください。

https://namespace-string.swiftobjectstorage.region.oci.customer-oci.com/v1/namespace-string/bucket/filename
ノート

OCI Object Store専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。

ソース・ファイルがOracle Cloud Infrastructure Object Storageにあり、商用レルム(OC1)にない場合は、次の形式を使用する必要があります。

https://swiftobjectstorage.region.oraclecloud.com/v1/namespace-string/bucket/filename

たとえば、商用レルム(OC1)では、Phoenixデータ・センターのbucketnameバケット内にあるファイルchannels.txtのSwift URIは次のとおりです:

https://namespace-string.swiftobjectstorage.us-phoenix-1.oci.customer-oci.com/v1/namespace-string/bucketname/channels.txt

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

ノート

ソース・ファイルは、オブジェクト・ストレージ層バケットに格納されている必要があります。Autonomous Databaseは、アーカイブ・ストレージ層のバケットをサポートしていません。詳細は、オブジェクト・ストレージの概要を参照してください。

事前認証済リクエストのURLを使用したOracle Cloud Infrastructure Object StorageのURI形式

ソース・ファイルがOracle Cloud Infrastructure Object Storageにある場合は、Oracle Cloud Infrastructureの事前認証済URIを使用できます。事前認証済リクエストの作成時に、一意のURLが生成されます。この一意のURLを組織内のユーザー、パートナまたはサードパーティに提供すると、事前認証済リクエストで識別されたオブジェクト・ストレージ・リソース・ターゲットにアクセスできるようになります。

ノート

事前認証済アクセスのビジネス要件およびセキュリティへの影響は慎重に評価してください。事前認証済リクエストURLの作成時には、有効期限アクセス・タイプに注意して、それらが使用に適していることを確認します。

事前認証済リクエストのURLは、リクエストがアクティブであるかぎり、URLを持つすべてのユーザーにリクエストで識別されたターゲットへのアクセス権を付与します。事前認証済アクセスの動作要件を考慮することに加えて、その配布を管理することも同様に重要です。

ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageに存在する場合は、オブジェクト・ストレージ専用エンドポイントを使用する次のURI形式を使用することをお薦めします。詳細は、オブジェクト・ストレージ専用エンドポイントを参照してください。

https://namespace-string.objectstorage.region.oci.customer-oci.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename
ノート

OCI Object Store専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。

ソース・ファイルがOracle Cloud Infrastructure Object Storageにあり、商用レルム(OC1)にない場合は、次の形式を使用する必要があります。

https://objectstorage.region.oraclecloud.com.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename

たとえば、商用レルム(OC1)では、Phoenixデータ・センターのbucketnameバケット内のファイルchannels.txtに対するサンプル事前認証済URIは次のとおりです:

https://namespace-string.objectstorage.us-phoenix-1.oci.customer-oci.com/p/2xN-uDtWJNsiD910UCYGue/n/namespace-string/b/bucketname/o/channels.txt

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

事前認証済URLは、資格証明を作成する必要なく、Oracle Cloud Infrastructureオブジェクト・ストア内のファイルにアクセスするためのURLを取得する任意のDBMS_CLOUDプロシージャで使用できます。credential_nameパラメータにNULLを指定するか、credential_nameパラメータを指定しない必要があります。

たとえば:

BEGIN
  DBMS_CLOUD.COPY_DATA(
     table_name =>'CHANNELS',
     file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/channels.txt',
     format => json_object('delimiter' value ',') );
END;
/
ノート

混合URLのリストが有効です。URLリストに事前認証済URLと認証を必要とするURLの両方が含まれている場合、DBMS_CLOUDは、認証を必要とするURLへのアクセスには指定されたcredential_nameを使用し、事前認証済URLについては指定されたcredential_nameを無視します。

詳細は、事前認証済リクエストの使用を参照してください。

パブリックURLを使用したURI形式

ソース・ファイルがパブリックURLを提供するオブジェクト・ストアに存在している場合は、DBMS_CLOUDプロシージャでパブリックURLを使用できます。パブリックとは、オブジェクト・ストレージ・サービスが、オブジェクト・ストア・ファイルへの匿名の未認証アクセスをサポートすることを意味します。サポートされているオブジェクト・ストアでオブジェクトをパブリックにする方法の詳細は、対象のCloud Object Storageサービスを参照してください。

ノート

ビジネス要件およびパブリックURLの使用によるセキュリティへの影響は慎重に評価してください。パブリックURLを使用するときは、ファイル・コンテンツが認証されていないため、これが使用に適していることを確認してください。

パブリックURLは、資格証明を作成することなく、オブジェクト・ストア内のファイルにアクセスするためのURLを取得するすべてのDBMS_CLOUDプロシージャで使用できます。credential_nameパラメータにNULLを指定するか、credential_nameパラメータを指定しない必要があります。

次の例では、credential_nameなしでDBMS_CLOUD.COPY_DATAを使用しています:

BEGIN
  DBMS_CLOUD.COPY_DATA(
     table_name =>'CHANNELS',
     file_uri_list =>'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/chan_v3.dat',
     format => json_object('delimiter' value ',') );
END;
/

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

ノート

混合URLのリストが有効です。パブリックURLと認証を必要とするURLの両方がURLリストに含まれている場合、DBMS_CLOUDは、認証を必要とするURLへのアクセスには指定されたcredential_nameを使用し、パブリックURLについては指定されたcredential_nameを無視します。

Oracle Cloud Infrastructureパブリック・バケットの使用方法の詳細は、パブリック・バケットを参照してください。

Oracle Cloud Infrastructure Object Storage ClassicのURIフォーマット

ソース・ファイルがOracle Cloud Infrastructure Object Storage Classicに存在する場合は、RESTページを参照して、ファイルにアクセスするためのURIフォーマットの説明を確認してください: Oracle Cloud Infrastructure Object Storage ClassicリソースのREST URLについて

Amazon S3 URI形式

ソース・ファイルがAmazon S3にある場合、ファイルにアクセスするためのURI形式の詳細は、バケットへのアクセスを参照してください。

次の例では、us-west-2地域のadbバケットにあるファイルchannels.txtを参照します。

https://s3-us-west-2.amazonaws.com/adb/channels.txt 

署名済URLは、資格証明を作成する必要なく、Amazon S3オブジェクト・ストア内のファイルにアクセスするためのURLを取得する任意のDBMS_CLOUDプロシージャで使用できます。DBMS_CLOUDプロシージャで署名付きURLを使用するには、credential_nameパラメータをNULLとして指定するか、credential_nameパラメータを指定しないでください。

詳細については、Share an Object with Othersを参照してください。

ノート

DBMS_CLOUDでは、バケットにアクセスするための標準のAmazon S3エンドポイント構文がサポートされています。DBMS_CLOUDでは、Amazon S3のレガシー・エンドポイントはサポートされていません。詳細は、レガシー・エンドポイントを参照してください。

Azure Blob Storage URI形式

ソース・ファイルがAzure Blob Storageにある場合、ファイルにアクセスするためのURI形式の説明について次を参照してください: Resource URI Syntax

次の例では、ストレージ・アカウントadb_useradbコンテナにあるファイルchannels.txtを参照します:

https://adb_user.blob.core.windows.net/adb/channels.txt
ノート

Shared Access Signatures (SAS) URLは、資格証明を作成することなく、Azure Blob Storage内のファイルにアクセスするためのURLを取得するすべてのDBMS_CLOUDプロシージャで使用できます。共有アクセス署名(SAS) URLを使用するには、credential_nameパラメータをNULLとして指定するか、credential_nameパラメータを指定しないでください。

詳細は、Shared Access Signatures (SAS)を使用したAzure Storageリソースへの制限されたアクセス権の付与を参照してください。

Amazon S3互換URI形式

DBMS_CLOUDは、次のサービスを含むAmazon S3互換URLをサポートするオブジェクト・ストレージ・サービス実装をサポートしています:

  • Amazon S3互換URLを使用したOracle Cloud Infrastructure Object Storage
  • Amazon S3互換URLを使用したGoogle Cloud Storage
  • Amazon S3互換URLを使用したWasabi Hot Cloud Storage
ノート

Amazon S3互換オブジェクト・ストアでDBMS_CLOUDを使用するには、有効な資格証明を指定する必要があります。詳細は、CREATE_CREDENTIALプロシージャを参照してください。

ソース・ファイルがAmazon S3互換URIをサポートするサービスに存在する場合は、次のURI形式を使用してファイルにアクセスします:

  • Oracle Cloud Infrastructure Object Storage S3互換URL

    ソース・ファイルが商用レルム(OC1)のOracle Cloud Infrastructure Object Storageに存在する場合は、商用レルム(OC1)に次に示すオブジェクトURLおよびバケットURL形式を使用することをお薦めします。詳細は、オブジェクト・ストレージ専用エンドポイントを参照してください。

    ノート

    OCI Object Store専用エンドポイントURLは、商用レルム(OC1)でのみサポートされています。

    オブジェクトURLフォーマット

    • 商用レルム(OC1)でのみサポートされます。

      https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name/object_name
    • すべてのゾーンでサポートされています。

      https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name/object_name

    バケットURLの形式:

    • 商用レルム(OC1)でのみサポートされます。

      https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name
    • すべてのゾーンでサポートされています。

      https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name

    詳細は、Amazon S3の互換性およびObject Storage Service APIを参照してください。

  • Google Cloud Storage S3互換URL

    オブジェクトURL形式:

    https://bucketname.storage.googleapis.com/object_name

    バケットURLフォーマット:

    https://bucketname.storage.googleapis.com/

    詳細については、Migrating from Amazon S3 to Cloud StorageおよびRequest Endpointsを参照してください。

  • Wasabi S3互換URL

    オブジェクトURL形式:

    https://bucketname.s3.region.wasabisys.com/object_name

    バケットURLフォーマット:

    https://bucketname.s3.region.wasabisys.com/

    詳細は、Wasabi S3 APIリファレンスおよびWasabiのストレージ・リージョンのサービスURLを参照してください。

GitHub RAW URL形式

DBMS_CLOUDは、GitHubリポジトリのデータにアクセスするためのGitHub RAW URLをサポートしています。

ノート

GitHub RAW URLを使用したDBMS_CLOUDアクセスの場合、リポジトリ・アクセスは読取り専用機能に制限されます。データを書き込むDBMS_CLOUD.PUT_OBJECTなどのDBMS_CLOUD APIは、GitHubリポジトリのDBMS_CLOUD APIではサポートされません。

または、DBMS_CLOUD_REPO.PUT_FILEを使用してGitHubリポジトリにデータをアップロードします。

DBMS_CLOUD APIでGitHub RAW URLを使用して、GitHubリポジトリに存在するソース・ファイルにアクセスします。GitHub上のファイルを参照して「RAW」リンクをクリックすると、GitHub RAW URLが表示されます。raw.githubusercontent.comドメインは、GitHubリポジトリに格納されているファイルの未処理バージョンを提供します。

たとえば、DBMS_CLOUD.GET_OBJECTを使用する場合:

BEGIN
 DBMS_CLOUD.GET_OBJECT(
   credential_name => 'MY_CRED',
   object_uri      => 'https://raw.githubusercontent.com/myaccount/myrepo/master/data-management-library/autonomous-database/adb-loading.csv',
   directory_name  => 'DATA_PUMP_DIR'
  );
END;
/

たとえば、DBMS_CLOUD.CREATE_EXTERNAL_TABLEを使用する場合:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
    credential_name => 'MY_CRED',
    table_name      => 'EMPLOYEES_EXT',
    file_uri_list   => 'https://raw.githubusercontent.com/myaccount/myrepo/master/data-management-library/autonomous-database/*.csv',
    column_list     => 'name varchar2(30), gender varchar2(30), salary number',
    format          => JSON_OBJECT('type' value 'csv')
  );
END;
/
SELECT * FROM employees_ext;

GitHubリポジトリにアクセスするためにURLを取得するDBMS_CLOUDプロシージャには、パブリック可視性GitHubリポジトリの資格証明は必要ありません。パブリック可視性URLを使用するには、credential_nameパラメータをNULLとして指定するか、credential_nameパラメータを指定しないことができます。詳細は、リポジトリの可視性の設定を参照してください。

顧客管理の追加URI形式

DBMS_CLOUDは、完全修飾ドメイン名(FQDNs)を持つ事前構成済で認識されるURIsに加えて、顧客管理エンドポイントURIsの適切な認証スキームを決定できません。このような場合、DBMS_CLOUDは、適切なURIスキームに依存して、顧客管理エンドポイントの認証スキームを識別します。
URIスキーム 認証タイプ アクセス方法摘要 URIの例
基本:// Basic認証 データベース資格証明オブジェクトに格納されているユーザー名とパスワードは、HTTPリクエストの認証に使用されます basic://api.github.com/users/myaccount
bearer:// Bearerトークン認証 データベース資格証明オブジェクトのパスワード・フィールドに格納されたBearerトークンは、HTTPリクエストの認可ヘッダーを指定するために使用されます bearer://api.sendgrid.com/v3/resource
oci:// OCIネイティブ OCI認証プロトコルを使用したリクエストの署名のために格納および使用されるデータベース資格証明オブジェクトから取得されたOCI署名キー oci://objectstorage.us-ashburn-1.oraclecloud.com
パブリック:// 認証なし パブリックURL public://cms.data.gov/
s3:// Amazon Web Services S3互換 データベース資格証明オブジェクトのユーザー名/パスワード・フィールドから取得されたアクセス・キーと秘密キー、およびHTTPリクエストに対して実行されたS3互換認証。 s3://bucket.myprivatesite.com/file1.csv

例:

S3互換認証を使用する顧客管理エンドポイント。

この例では、新しいURIsについて、顧客はDBMS_NETWORK_ACL_ADMINパッケージを使用してパブリックまたはプライベートのホスト名パターンを追加する方法を示します。ユーザーADMINによって実行されるコード・ブロックは、ドメイン*.myprivatesite.comのエンドポイントへのユーザーSCOTTHTTPSアクセスを有効にします。次に、ユーザーSCOTTが新しく有効化されたエンドポイントにアクセスする方法を示します。ユーザーSCOTTの資格証明MY_CREDには、URI接頭辞で示されるHTTPリクエストに対して実行されるS3互換認証のアクセス・キーおよび秘密キーを格納する必要があります。


BEGIN
   DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => '*.myprivatesite.com',
         ace => xs$ace_type(privilege_list => xs$name_list('http'),
                            principal_name => 'SCOTT',
                            principal_type => xs_acl.ptype_db),
         private_target => TRUE   );
END;
/

BEGIN
   DBMS_CLOUD.get_object(
       credential_name => 'MY_CRED',
       object_uri      => 's3://bucket.myprivatesite.com/file1.csv',
       directory_name  => 'MY_DIR'  );
END;
/

パブリック・アクセスを持つ顧客管理エンドポイント

この例では、SCOTTユーザーを登録してパブリックREST APIにアクセスする方法を示します。ADMINユーザーは、SCOTTユーザーへのアクセスを提供するホストのネットワークACLを作成します。


BEGIN
   DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'data.cms.gov',
         ace => xs$ace_type(privilege_list => xs$name_list('http'),
                            principal_name => 'SCOTT',
                            principal_type => xs_acl.ptype_db)
   );
END;
/

SELECT DBMS_CLOUD.get_response_text(
          DBMS_CLOUD.send_request(
              uri     => 'public://data.cms.gov/provider-data/api/1/datastore/imports/a',
              method  => DBMS_CLOUD.METHOD_GET,
              headers => JSON_OBJECT('Accept' VALUE 'application/json')
          )
       )
   FROM DUAL;
/