DBMS_CLOUD_LINKパッケージ

DBMS_CLOUD_LINKパッケージを使用すると、ユーザーは、クラウド・リンクへの読取り専用アクセス用のデータ・セットとして表またはビューを登録できます。

DBMS_CLOUD_LINK概要

DBMS_CLOUD_LINKパッケージの使用について説明します。

DBMS_CLOUD_LINKパッケージには、クラウド・リンクで使用するデータ・セットとして表またはビューを登録できるREGISTERプロシージャが用意されています。データ・セットを登録する前に、ADMINユーザーは、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERプロシージャを使用してデータ・セットを登録する権限をユーザーに付与する必要があります。ADMINがGRANT_REGISTERを実行した後、ユーザーは、登録済データ・セットとして所有する表またはビューを登録できます(または、ユーザーがオブジェクトに対するREAD WITH GRANT OPTION権限を持っている場合は、オブジェクトを別のスキーマに登録できます)。登録済データ・セットは、REGISTERプロシージャで指定されたスコープに従って、登録済オブジェクトへのクラウド・リンクのリモート・アクセスを提供します。

DBMS_CLOUD_LINK.REGISTERを実行するには、以前にDBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERを実行したことに加えて、DBMS_CLOUD_LINK.REGISTERに対する実行権限が必要です。ADMINユーザーおよびPDB_DBAロールを持つスキーマのみが、デフォルトでDBMS_CLOUD_LINK.REGISTERに対する実行権限を持ちます。

DBMS_CLOUD_LINKサブプログラムの概要

DBMS_CLOUD_LINKパッケージに含まれるサブプログラムのサマリーを含む表を示します。

サブプログラム 説明

DESCRIBEファンクション

この関数は、データ・セットの説明を取得します。この説明は、データセットが DBMS_CLOUD_LINK.REGISTERに登録されるときに提供されます。

FINDプロシージャ

検索文字列に一致するデータ・セットのネームスペース、名前および説明を取得します。一致するデータセットは、アクセス制限に基づいてユーザーがアクセスできる場合にのみ表示されます。

GET_DATABASE_IDファンクション

Autonomous Databaseインスタンスの一意の識別子を返します。同じインスタンスでDBMS_CLOUD_LINK.GET_DATABASE_IDを繰り返しコールすると、常に同じ値が返されます。

GRANT_AUTHORIZATIONプロシージャ

指定されたデータ・セットにアクセスするための認可を指定されたデータベースに付与します。

REGISTERプロシージャ

表またはビューをデータ・セットとして登録します。

REVOKE_AUTHORIZATIONプロシージャ

指定されたデータベースに対する認可を取り消して、指定されたデータ・セットにアクセスします。

UNREGISTERプロシージャ

登録されたデータ・セットを削除します。

DESCRIBEファンクション

この関数は、データ・セットの説明を取得します。この説明は、データ・セットがDBMS_CLOUD_LINK.REGISTERに登録されるときに提供されます。

構文

DBMS_CLOUD_LINK.DESCRIBE(
      namespace        IN   VARCHAR2,
      name             IN   VARCHAR2
) return CLOB;

パラメータ

パラメータ 説明

namespace

登録済データ・セットのネームスペースを指定します。

name

登録済データ・セットの名前を指定します。

使用上のノート

この関数は、DBMS_CLOUD_LINK.REGISTERへの登録時に課されるアクセス制限に従って使用できます。データ・セットにデータベースにアクセスできない場合、その説明は取得されません。

FINDプロシージャ

このプロシージャは、検索文字列に一致するデータ・セットのネームスペース、名前および説明を取得します。一致するデータセットは、アクセス制限に基づいてユーザーがアクセスできる場合にのみ表示されます。

構文

DBMS_CLOUD_LINK.FIND(
      search_string        IN   VARCHAR2,
      search_result        OUT   CLOB
);

パラメータ

パラメータ 説明

search_string

検索文字列を指定します。検索文字列の大文字と小文字は区別されません。

search_result

データ・セットのネームスペース、名前および説明の値を含むJSONドキュメント。

使用上のノート

検索文字列の大/小文字は区別されず、パッケージはOracle Textを使用したフリー・テキスト検索を利用します。

GET_DATABASE_IDファンクション

このファンクションは、Autonomous Databaseインスタンスの一意の識別子を返します。同じインスタンスでDBMS_CLOUD_LINK.GET_DATABASE_IDを繰り返しコールすると、常に同じ値が返されます。

この関数は、登録されたデータ・セットにリモートでアクセスしているデータベースでコールして、データベースIDを取得できます。これにより、リモート・サイトからの指定されたデータベースIDに基づいて、データ・セット所有者がVPDなどのより詳細なデータ・アクセス制御を利用できるように、データベースiDを提供できます。

データベースIDは、登録済データ・セットを所有するデータベース上のV$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビューでアクセスを追跡および監査するために、登録済データ・セットにアクセスする各リモート・データベースを識別します。

構文

DBMS_CLOUD_LINK.GET_DATABASE_ID()
  RETURN VARCHAR2;

使用上のノート

クラウド・リンクは、DBMS_CLOUD_LINK.GET_DATABASE_IDがリモートでデータ・セットにアクセスしている個々のデータベースを識別するために戻す一意の識別子を使用します。登録済データ・セットを所有するデータベースは、V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビューのデータ・セット・アクセスのオリジン・レコードとしてデータベースIDを追跡および監査します。

DBMS_CLOUD_LINK.GET_DATABASE_ID識別子はSYS_CONTEXT値として使用できるため、SYS_CONTEXTを使用して接続リモート・セッションに関するこの情報をプログラムで取得し、仮想プライベート・データベース(VPD)を使用する個々のAutonomous Databaseインスタンスによってリモートでアクセスできる特定のデータをさらに制限および制御できます。

戻り値

VARCHAR2Autonomous Databaseインスタンスの一意の識別子。

GRANT_AUTHORIZATIONプロシージャ

このプロシージャは、指定されたデータ・セットにアクセスするための認可を指定されたデータベースに付与します。

構文

DBMS_CLOUD_LINK.GRANT_AUTHORIZATION(
      database_id        IN   VARCHAR2,
      namespace          IN   VARCHAR2 DEFAULT,
      name               IN   VARCHAR2
);

パラメータ

パラメータ 説明

database_id

Autonomous DatabaseインスタンスのデータベースIDを指定します。データベースIDを取得するには、DBMS_CLOUD_LINK.GET_DATABASE_IDを使用します。

namespace

指定されたdatabase_idのアクセス認可を付与するデータ・セット・ネームスペースを指定します。

name

指定されたdatabase_idに対するアクセス認可を付与するデータ・セット名を指定します。

REGISTERプロシージャ

このプロシージャは、scopeパラメータによって課される制限に従って、表またはビューをデータ・セットとして登録し、リモートの読取り専用アクセスを許可します。

構文

DBMS_CLOUD_LINK.REGISTER(
     schema_name      IN VARCHAR2,
     schema_object    IN VARCHAR2,
     namespace        IN VARCHAR2,
     name             IN VARCHAR2,
     description      IN CLOB,
     scope            IN CLOB,
     auth_required    IN BOOLEAN DEFAULT,
     data_set_owner   IN VARCHAR2 DEFAULT,
     offload_targets  IN CLOB DEFAULT

);

パラメータ

パラメータ 説明

schema_name

schema_objectパラメータで指定された表またはビューの所有者を指定します。

schema_object

表またはビューの名前を指定します。有効なオブジェクトは次のとおりです。

  • 表(ヒープ、外部またはハイブリッドを含む)
  • ビュー
  • マテリアライズド・ビュー
  • クラウド表

分析ビューやシノニムなどの他のオブジェクトはサポートされていません。

namespace

データセットのネームスペースを指定します。

NULL値は、Autonomous Databaseインスタンスに対して一意のシステム生成のnamespace値を指定します。

name

データ・セットの名前を指定します。

description

データを説明するテキストを指定します。

scope

データ・セットへのアクセスを許可されるユーザーを示します。値は、次の1つ以上で構成されるカンマ区切りのリストです。

  • データベースOCID: データ・セットへのアクセスは、OCIDによって識別される特定のAutonomous Databaseインスタンスに使用できます。

  • コンパートメントOCID: データセットへのアクセスは、コンパートメントOCIDによって識別されるコンパートメント内のデータベースに対して許可されます。

  • テナンシOCID: データ・セットへのアクセスは、テナンシOCIDによって識別されるテナント内のデータベースに対して許可されます。

  • リージョン名: データ・セットへのアクセスは、指定されたリージョンによって識別されるリージョン内のデータベースに対して許可されます。スコープによって、クラウド・リンク・アクセスは1つのリージョン内に制限され、クロスリージョンではありません。異なるリージョンのコンシューマは、データ・セット所有者であるデータベースのクロスリージョン・リフレッシュ可能クローンがコンシューマ・データベースのリージョンに存在する場合にのみ、データ・セットにアクセスできます。

    詳細は、別のリージョンでのデータ・セットの登録または登録解除を参照してください。

  • MY$COMPARTMENT: データ・セットへのアクセスは、データ・セット所有者と同じコンパートメント内のデータベースに対して許可されます。

  • MY$TENANCY: データ・セットへのアクセスは、データ・セット所有者と同じテナンシ内のデータベースに対して許可されます。

  • MY$REGION: データ・セットへのアクセスは、データ・セット所有者と同じリージョン内のデータベースに対して許可されます。

  • リージョンのリスト: データ・セットへのアクセスは、指定したリージョンのデータベースに対して許可されます

    次に例を示します。

    scope   =>  'us-phoenix-1,us-ashburn-1',

    異なるリージョンのコンシューマは、データ・セット所有者であるデータベースのクロスリージョン・リフレッシュ可能クローンがコンシューマ・データベースのリージョンに存在する場合にのみ、データ・セットにアクセスできます。

スコープ値MY$REGIONMY$TENANCYおよびMY$COMPARTMENTは、便利なマクロとして機能し、OCIDsに解決される変数です。

auth_required

データベースがデータ・セットから読み取るために追加の認可が必要であることを指定します。考えられるケースは次のとおりです。

  • 指定されたSCOPE内にあり、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONで認可されているデータベースは、データ・セットから行を表示できます。

  • 指定されたSCOPE内にあるが、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONで認可されていないデータベースは、データ・セット行を表示できません。この場合、認可されていないコンシューマでは、データ・セットは空とみなされます。

  • 指定されたSCOPE内にないデータベースでは、データ・セットにアクセスしようとするとエラーが表示されます。

data_set_owner

データセット所有者を指定します。これは、データ・セットが誰に属しているか、またはデータ・セットの更新および保守を担当しているユーザーを示します。たとえば、data_set_ownerを、データ・セットを登録したユーザーの電子メール・アドレスに設定できます。

offload_targets

データ・セットが登録されているAutonomous Databaseから、データ・セットへのアクセスがオフロードされるリフレッシュ可能クローンの1つ以上のAutonomous Database OCIDsを指定します。

offload_targets値は、1つ以上のCLOUD_LINK_DATABASE_IDOFFLOAD_TARGETのキー値ペアを定義するJSONドキュメントです。

  • CLOUD_LINK_DATABASE_IDは次のいずれかです。

    • データベースID: OFFLOAD_TARGET値で指定された対応するリフレッシュ可能クローンにリクエストがオフロードされるデータ・セット・コンシューマのデータベースIDを指定します。

      DBMS_CLOUD_LINK.GET_DATABASE_IDを実行してデータベースIDを取得します。詳細は、GET_DATABASE_IDファンクションを参照してください。

    • ANY: データ・セット・コンシューマのリクエストが、対応するオフロード・ターゲットにオフロードされることを指定します。コンシューマのデータ・セット・リクエストは、対応するオフロード・ターゲットにルーティングされます。

      データベースIDを指定せずにANYを指定すると、コンシューマからのすべてのデータ・セット・リクエストが、OFFLOAD_TARGET値で指定されたリフレッシュ可能クローンにオフロードされます。

      データベースIDとANYの両方を指定した場合、データベースIDと一致しないコンシューマからのデータ・セット・リクエストは、OFFLOAD_TARGET値で指定されたリフレッシュ可能クローンにオフロードされます。

  • OFFLOAD_TARGETは、リフレッシュ可能なクローンであるAutonomous DatabaseインスタンスのOCIDです。

たとえば、OFFLOAD_TARGET/CLOUD_LINK_DATABASE_ID値のペアが3つあるJSONサンプルを次に示します。

{
  "OFFLOAD_TARGETS": [
    {
      "CLOUD_LINK_DATABASE_ID": "34xxxxx69708978",
      "OFFLOAD_TARGET":
"ocid1.autonomousdatabase.oc1..xxxxx3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfabc"
    },
    {
      "CLOUD_LINK_DATABASE_ID": "34xxxxx89898978",
      "OFFLOAD_TARGET":
"ocid1.autonomousdatabase.oc1..xxxxx3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfdef"
    },
    {
      "CLOUD_LINK_DATABASE_ID": "34xxxxx4755680",
      "OFFLOAD_TARGET":
"ocid1.autonomousdatabase.oc1..xxxxx3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfghi"
    }
  ]
}

データ・セット・コンシューマが、ANYキーワードを使用してoffload_targetsに登録したデータ・セットへのアクセスをリクエストすると、アクセスのリクエストは、指定されたJSONでOFFLOAD_TARGETで識別されたリフレッシュ可能クローンにオフロードされます(指定されたJSONに明示的なエントリがあるリクエストを除く)。

たとえば、1つの明示的なOFFLOAD_TARGET/CLOUD_LINK_DATABASE_ID値ペアと1つのANYエントリを持つJSONサンプルを次に示します。

{
  "OFFLOAD_TARGETS": [
    {
      "CLOUD_LINK_DATABASE_ID": "ANY",
      "OFFLOAD_TARGET":
"ocid1.autonomousdatabase.oc1..xxxxx3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfdef"
    },
    {
      "CLOUD_LINK_DATABASE_ID": "34xxxxx4755680",
      "OFFLOAD_TARGET":
"ocid1.autonomousdatabase.oc1..xxxxx3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfghi"
    }
  ]
}

DBMS_CLOUD_LINK.REGISTERは、OFFLOAD_TARGET値として指定されたOCIDが同じリージョン内のリフレッシュ可能クローンのOCIDでない場合にエラーを報告します。

リフレッシュ可能クローンの使用の詳細は、Autonomous Databaseでのリフレッシュ可能クローンの使用を参照してください。

使用上のノート

  • オブジェクトに対するREAD WITH GRANT OPTION権限がある場合は、別のスキーマにオブジェクトを登録できます。

  • オブジェクトを登録した後、ユーザーは、クラウド・リンクを使用してオブジェクトにアクセスするために最大10分待機する必要がある場合があります。

  • 既存のデータセットのスコープを変更するには、まず DBMS_CLOUD_LINK.UNREGISTERでデータセットを登録解除する必要があります。次に、DBMS_CLOUD_LINK.REGISTERにデータ・セットを新しいスコープに登録する必要があります。これら2つの操作の合計待機時間は、最大20分(登録解除に10分、レジスタが伝播されてクラウド・リンクからアクセス可能になるまでさらに10分)です。

    この遅延は、DBA_CLOUD_LINK_REGISTRATIONSビューとDBA_CLOUD_LINK_ACCESSビューの両方のデータ・セットの可視性にも影響します。

  • 表またはビューに対するREAD WITH GRANT OPTION権限がある場合は、別のユーザーのスキーマに存在する表またはビューを登録できます。

  • データ・セットを登録するときに設定するスコープは、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERで設定した値セットと一致する場合、またはそれより制限的な場合にのみ適用されます。たとえば、ADMINがGRANT_REGISTERでスコープ'MY$TENANCY'を付与し、ユーザーがDBMS_CLOUD_LINK.REGISTERでデータ・セットを登録するときに'MY$REGION'を指定したとします。この例の場合、次のようなエラーが表示されます。

    ORA-20001: Share privileges are not enabled for current user or it is enabled but not for scope MY$REGION
  • 登録の階層妥当性チェックは、登録時に実行できません。無効な登録は、表示、検出、または誰でもアクセスできなくなります。

  • DBMS_CLOUD_LINK.REGISTERを使用するには、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERに割り当てられているレジスタ権限に加えて、DBMS_CLOUD_LINKパッケージに対する実行権限も必要です。デフォルトでは、ADMINユーザーおよびPDB_DBAを持つスキーマのみがこの権限を持ちます。

  • リモート・リージョンのリフレッシュ可能クローンにデータ・セットを登録する場合、リモート・リージョン・クローンでのDBMS_CLOUD_LINK.REGISTERの起動では、offload_targetsパラメータを除いて、ソース・データベースと同じ値を持つ同じパラメータを使用する必要があります。

    たとえば、ソースAutonomous DatabaseインスタンスでスコープをMY$COMPARTMENTに設定してDBMS_CLOUD_LINK.REGISTERを実行する場合は、同じスコープ・パラメータ値(MY$COMPARTMENT)を持つクロスリージョン・リフレッシュ可能クローンでプロシージャを再度実行します。

  • ソースでoffload_targetsパラメータにDBMS_CLOUD_LINK.REGISTERを指定する場合は、クロスリージョン・リフレッシュ可能クローンにデータ・セットを登録するときに、このパラメータを省略する必要があります。

REVOKE_AUTHORIZATIONプロシージャ

このプロシージャは、指定されたデータベースに対する認可を取り消して、指定されたデータ・セットにアクセスします。

構文

DBMS_CLOUD_LINK.REVOKE_AUTHORIZATION(
      database_id        IN   VARCHAR2,
      namespace          IN   VARCHAR2 DEFAULT,
      name               IN   VARCHAR2
);

パラメータ

パラメータ 説明

database_id

Autonomous DatabaseインスタンスのデータベースIDを指定します。データベースIDを取得するには、DBMS_CLOUD_LINK.GET_DATABASE_IDを使用します。

namespace

指定されたdatabase_idのアクセス認可を取り消すデータ・セット・ネームスペースを指定します。

name

指定されたdatabase_idのアクセス認可を取り消すデータ・セット名を指定します。

UNREGISTERプロシージャ

このプロシージャを使用すると、以前に表またはビューをREGISTERプロシージャに登録したユーザーは、リモート・アクセスに使用できなくなるように表またはビューを登録解除できます。

構文

DBMS_CLOUD_LINK.UNREGISTER(
      namespace        IN   VARCHAR2,
      name             IN   VARCHAR2
);

パラメータ

パラメータ 説明

namespace

ユーザー名を指定します。

name

データ・セットの名前を指定します。

使用上のノート

DBMS_CLOUD_LINK.UNREGISTERは、完全伝播に最大10分かかる場合があり、その後、リモートからデータにアクセスする時間が長くなります。