Autonomous Databaseの読取り専用データ・アクセスにクラウド・リンクを使用
クラウド・リンクは、Autonomous Databaseインスタンス上の読取り専用データにリモートでアクセスするためのクラウド・ベースのメソッドを提供します。
Autonomous Databaseのクラウド・リンクについて
クラウド・リンクを使用すると、データ所有者は、データ所有者が定義したとおりに、選択したオーディエンスのリモート・アクセス用の表またはビューを登録し、登録時にアクセス権が付与されたユーザーからデータにアクセスできます。 クラウド・リンクを設定するためにこれ以上のアクションは必要ありません。また、データを表示してアクセスするユーザーは、データを検出して操作できます。
クラウド・リンクの実装では、Oracle Cloud Infrastructureアクセス・メカニズムを利用して、特定のスコープ内でデータにアクセスできるようにします。 スコープは、データにリモートでアクセスできるユーザーを示します。 スコープは、データベースが存在するリージョン、個々のテナンシ、コンパートメントなどの様々なレベルに設定できます。 また、データ・セットにアクセスするための認可は、1つ以上のAutonomous Databaseインスタンスに制限されるように指定できます。
ソース(データ・セット所有者の) Autonomous Databaseインスタンスから1つ以上のクロス・リージョン・リフレッシュ可能クローンを作成することで、クラウド・リンクを使用して複数のリージョン間でデータを共有できます。
クラウド・リンクは、従来のデータベース・リンク・メカニズムと比較して、Autonomous Databaseインスタンス間での表またはビューの共有を大幅に簡略化します。 クラウド・リンクを使用すると、複雑なデータベース・リンク設定を必要とせずにデータを検出できます。 Autonomous Databaseは、SQLを使用した透過的アクセスを提供し、クラウド・リンク・スコープおよび個々のAutonomous Databaseインスタンスに許可を付与することによって、権限の適用を実装します。
クラウド・リンクは、リモートからアクセスできるようになったデータのリージョン・ネームスペースおよび名前の概念を紹介します。 これは、表が存在する既存のOracle表に似ています。たとえば、ネームスペース(スキーマ)に存在する"EMP"などです(例: "LWARD")。 データベース内に存在できるLWARD.EMPは1つのみです。 クラウド・リンクは、リージョン・レベルで同様の名前空間と名前を提供します。これは、単一のデータベースには関連付けられていませんが、スコープで指定された多数のAutonomous Databaseインスタンスおよびオプションでデータベース認可に適用されます。
たとえば、ネームスペースFORESTの下にデータ・セットを登録し、セキュリティ目的または命名便宜のために、元のスキーマ名およびオブジェクト名以外のネームスペースおよび名前を指定できます。 この例では、TREE_DATAが登録済データ・セットの可視名であり、この名前をソース表の名前にする必要はありません。 ネームスペースおよび名前に加えて、cloud$linkキーワードは、ソースをクラウド・リンクとして解決する必要があることをデータベースに示します。
登録済のデータ・セットにアクセスするには、SELECT文のFROM句にネームスペース、名前およびcloud$linkキーワードを含めます:
SELECT county, species, height FROM FOREST.TREE_DATA@cloud$link;オプションで、1つ以上のデータベースからデータ・セットへのアクセスをリフレッシュ可能クローンにオフロードするように指定できます。 コンシューマAutonomous Databaseがデータ・セットのオフロード・リストにリストされている場合、データ・セットへのアクセスはリフレッシュ可能クローンに送信されます。 また、統合問合せオフロード機能を使用すると、エラスティック・プール・リーダーまたはメンバーをクラウド・リンク・プロバイダとして構成し、ProxySQL問合せオフロードを有効にして、任意の数のリフレッシュ可能クローンに問合せ(読取り)をオフロードできます。
ノート:
クラウド・リンクは、Autonomous Databaseインスタンス上のリモート・オブジェクトへの読取り専用アクセスを提供します。 他のOracleデータベースまたはOracle以外のデータベースとのデータベース・リンクを使用する場合、またはDML操作でリモート・データを使用する場合は、データベース・リンクを使用する必要があります。 詳細については、「Autonomous Databaseでのデータベース・リンクの使用」を参照してください。FOREST.TREE_DATA@cloud$linkのシノニムを定義して使用できます: CREATE SYNONYM S1 for FOREST.TREE_DATA@cloud$link;
SELECT county, species, height FROM S1;
CREATE PUBLIC SYNONYM S2 for FOREST.TREE_DATA@cloud$link;
SELECT * FROM S2;シノニムの詳細は、「シノニムの概要」を参照してください。
クラウド・リンクの用語
クラウド・リンクを操作するときに使用する概念と用語はいくつかあります:
-
登録済データ・セット(データ・セット): Autonomous Databaseでリモート・アクセスが有効になっている表またはビューを識別します。 登録されたデータ・セットは、データ・セットへのアクセスを許可されたユーザー(そのスコープ)も示します。 データ・セット登録では、ネームスペースおよびクラウド・リンクで使用する名前を定義します。 データ・セット登録後、これらの値を組み合せてリモート・アクセス用に完全修飾名(FQN)を指定し、クラウド・リンクでデータ・セットのアクセシビリティを管理できるようにします。
-
データ・セット所有者: データ・セットに関する質問の連絡先を提供するデータ・セット所有者を指定します。
-
スコープ: 登録済データ・セットへのアクセスをユーザーが許可されるユーザーと場所を指定します。 スコープの詳細は、「データ・セット・スコープ、アクセス制御および認可」を参照してください。
-
OCID (Oracle Cloud識別子): 特定のテナンシ、コンパートメントまたはデータベースを識別します。 登録済データ・セットのスコープは、OCIDsで表すことができます。 詳細については、「リソース識別子」を参照してください。
-
データ登録: データ登録を使用すると、ユーザーは、スコープによって課されるアクセス制限に従って、表またはビューをリモート・アクセスで使用できるようにし、オプションで追加の認可ステップに従います。 データベースに格納されている表またはビュー、またはオブジェクト・ストアに格納されているデータにクラウド・リンクを使用したリモート・アクセスを許可できます。
-
データ検出: 登録済のデータ・セットは、データベースからのテキスト問合せを使用して検出できます。 データ・セットにアクセスする権限がある場合のみ、検出にはデータ・セットが表示されます。 登録済データ・セットを名前または摘要で検索できます。
-
データの説明: ユーザーは、登録済データ・セットとして使用可能な表またはビューの説明またはメタデータを取得できます。
-
ターゲットのオフロード: オプションで、1つ以上のオフロード・ターゲットを指定できます。 オフロード・ターゲットは、クラウド・リンク・データセットを指定されたAutonomous Databaseインスタンスに提供するリフレッシュ可能なクローンです。 オフロード・ターゲットを指定することで、Autonomous Databaseインスタンスを専用にして、本番と開発、パフォーマンス、セキュリティの保証、またはその他の理由で分離するデータ・セットを提供できます。 詳細については、「リフレッシュ可能クローンをAutonomous Databaseとともに使用」を参照してください。
クラウド・リンク監査
クラウド・リンクを使用した登録済データ・セットへのアクセスは、監査目的で記録されます。 ログには、データ・セットにアクセスしたテナンシ、コンパートメントまたはデータベース、アクセスされるデータの量および追加情報が含まれます。 「V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビュー」は監査情報を表示します。
データ・セットMetadataおよび監査ビュー
各Autonomous Databaseインスタンスは、データ・セットのメタデータを公開するビューを提供し、データの使用状況を監視および監査できます。 詳細については、「クラウド・リンク情報のモニターおよび表示」を参照してください。
データ・セット・スコープ、アクセス制御および認可
Autonomous Databaseは、次のように登録済データ・セットのアクセシビリティを決定します:
-
ADMINユーザーは、指定されたスコープに基づいてユーザーがデータ・セットを登録できるようにするユーザーのスコープを指定します。
-
データ・セットを登録する権限を付与されたユーザーは、データ・セットの登録時にスコープを指定します。
-
オプションで、データ・セットを登録するときに、許可権限を付与されたユーザーは、データ・セットへのアクセスに必要な許可ステップを指定できます。 この認可ステップは、スコープ・レベルのアクセス認可に加えて行われます。
データ・セット範囲
ADMINは、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERを使用してユーザーのスコープを次のいずれかに設定します:
'MY$REGION''MY$TENANCY''MY$COMPARTMENT'
ユーザーのスコープは階層型であり、これらのスコープのいずれかを付与されたユーザーは、次のようにアクセスを許可できます:
-
MY$REGION: ユーザーは、データ・セットを登録しているAutonomous Databaseインスタンスのリージョンにある他のテナンシへのリモート・データ・アクセス権を付与できます。 これは最も制限の少ないスコープです。 -
MY$TENANCY: ユーザーは、データ・セットを登録しているAutonomous Databaseインスタンスのテナンシ内の任意のリソース、テナンシ、コンパートメントまたはデータベースへのリモート・データ・アクセス権を付与できます。 このスコープは、MY$REGIONスコープよりも制限的です。 -
MY$COMPARTMENT: ユーザーは、データ・セットを登録しているAutonomous Databaseインスタンスのコンパートメント内の任意のリソース、コンパートメントまたはデータベースへのリモート・データ・アクセス権を付与できます。 これは、GRANT_REGISTERを使用してユーザーに設定できる最も制限的な範囲です。
次に、データ・セットの登録時に設定するスコープによって、ユーザーがデータ・セットにアクセスできる場所が決まります。 DBMS_CLOUD_LINK.REGISTER scopeは、次の1つ以上のカンマ区切りリストです:
-
データベースOCID: データ・セットへのアクセスは、OCIDで識別される特定のAutonomous Databaseインスタンスに対して許可されます。
-
コンパートメントのOCID: データ・セットへのアクセスは、コンパートメントOCIDで識別されるコンパートメント内のデータベースに対して許可されます。
-
テナンシOCID: データ・セットへのアクセスは、テナンシOCIDで識別されるテナンシ内のデータベースに対して許可されます。
-
リージョン名: データ・セットへのアクセスは、指定されたリージョンで識別されるリージョン内のデータベースに対して許可されます。 いずれの場合も、クラウド・リンクへのアクセスは単一のリージョン内に制限され、リージョン間ではありません。
-
MY$COMPARTMENT: データ・セットへのアクセスは、データ・セット所有者と同じコンパートメント内のデータベースに対して許可されます。 -
MY$TENANCY: データ・セットへのアクセスは、データ・セット所有者と同じテナンシ内のデータベースに対して許可されます。 -
MY$REGION: データ・セットへのアクセスは、データ・セット所有者と同じリージョン内のデータベースに対して許可されます。
スコープ値MY$REGION、MY$TENANCYおよびMY$COMPARTMENTは、利便性マクロとして機能し、OCIDsに解決される変数です。
ノート:
データ・セットを登録するときに設定するスコープは、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$REGIONSYS_CONTEXT値に基づく追加のアクセス制御メカニズムを使用することもできます。 このメカニズムでは、SYS_CONTEXT値として使用可能な識別子を返す関数DBMS_CLOUD_LINK.GET_DATABASE_IDを使用します。
DBMS_CLOUD_LINK.REGISTERでデータ・セットを登録する場合、Oracle Virtual Private Database (VPD)セキュリティ・ポリシーのSYS_CONTEXT値を使用してデータベース・アクセスを制御し、個々のAutonomous Databaseインスタンスからアクセスできる特定のデータをさらに制限および制御できます。
VPDポリシーの使用方法の詳細は、「登録済データ・セットを保護するための仮想プライベート・データベース・ポリシーの定義」を参照してください。
データベースIDの値は、アクセス統計および監査情報を追跡する「V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビュー」でも使用できます。
詳細については、「Oracle Virtual Private Databaseを使用したデータ・アクセスの制御」を参照してください。
データ・セット承認
データ・セットを登録するときに、許可権限が付与されている場合は、データ・セットへのアクセスにデータベースOCID許可が必要であることを指定できます。 データ・セットのデータベースOCID認可を提供するには、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONプロシージャを使用して、データ・セットへのアクセスを許可されているAutonomous Databaseインスタンスを指定します。 DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONを実行する前に、ADMINはこのプロシージャをDBMS_CLOUD_LINK_ADMIN.GRANT_AUTHORIZEで実行することを認可する必要があります。
認可が必要なデータ・セット登録では、次のように、データ・セットに指定されたスコープ・アクセス制御に加えて、データ・セットのデータベース・レベル・アクセスを指定します:
-
指定された
SCOPE内にあり、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONで認可されているデータベースは、データ・セットの行を表示できます。 -
指定された
SCOPE内にあるが、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONで認可されていないデータベースは、データ・セット行を表示できません。 この場合、承認のないコンシューマは、データセットを空とみなします。 -
指定された
SCOPE内にないデータベースでは、データ・セットにアクセスしようとするとエラーが表示されます。
データベース・ユーザーに対するクラウド・リンク・アクセス権の付与
ADMINユーザーは、データ・セットを登録する権限をデータベース・ユーザーに付与します。 また、ADMINユーザーは、登録されたデータ・セットにアクセスする権限をデータベース・ユーザーに付与します。
ADMINユーザーが登録権限を付与すると、(スコープ階層内の)データ・セットを登録するときにユーザーが指定できる最大スコープを指定するスコープが提供されます。 DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERで使用する有効なscope値は次のとおりです:
'MY$REGION''MY$TENANCY''MY$COMPARTMENT'
詳細については、「データ・セット・スコープ、アクセス制御および認可」を参照してください。
データ・セットを登録する権限をデータベース・ユーザーに付与するためのノート:
-
データ・セットを登録したり、リモート・データセットを表示およびアクセスするには、
DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERに登録するか、DBMS_CLOUD_LINK_ADMIN.GRANT_READでデータ・セットを読み取るための適切な権限が付与されている必要があります。これはADMINユーザーにも当てはまりますが、ADMINユーザーは自分に権限を付与できます。
-
ビュー
DBA_CLOUD_LINK_PRIVSおよびUSER_CLOUD_LINK_PRIVSは、ユーザー権限に関する情報を提供します。 詳細については、「クラウド・リンク情報のモニターおよび表示」を参照してください。 -
ユーザーは、次の問合せを実行して、登録済で保護されたデータ・セットの認証が有効になっているかどうかを確認できます:
SELECT SYS_CONTEXT('USERENV', 'CLOUD_LINK_AUTH_ENABLED') FROM DUAL;
データ・セットの登録
クラウド・リンクと共有する登録済データ・セットとして所有する表またはビューを登録するオプションおよびステップについて説明します。
データ・セットの登録または登録解除
所有する表またはビューを登録済のデータ・セットとして登録できます。 データ・セットを削除または置換する場合は、登録を解除する必要があります。 データ・セットを登録した後、データ・セットの属性の値を変更できます。
データ・セット登録では、ネームスペースおよびクラウド・リンクで使用する名前を定義します。 データ・セット登録後、これらの値を組み合せてリモート・アクセス用に完全修飾名(FQN)を指定し、クラウド・リンクでデータ・セットのアクセシビリティを管理できるようにします。
データ・セットを登録するには:
データ・セットの登録後に、データ・セットの属性の一部の値を更新できます。 詳細については、「データ・セットの登録属性の更新」を参照してください。
登録済データ・セットへのリモート・アクセスを取り消す場合は、データ・セットの登録を解除します。
たとえば:
BEGIN
DBMS_CLOUD_LINK.UNREGISTER(
namespace => 'TRUSTED_COMPARTMENT',
name => 'SALES');
END;
/
詳細については、「UNREGISTERプロシージャ」を参照してください。
データ・セットの登録または登録解除に関するノート
DBMS_CLOUD_LINK.REGISTERへのデータ・セットの登録およびDBMS_CLOUD_LINK.UNREGISTERへのデータ・セットの登録解除に関するノートを提供します。
-
オブジェクトを登録した後、ユーザーはクラウド・リンクを使用してオブジェクトにアクセスするために最大10分待機する必要がある場合があります。
-
データ・セットを登録し、リモート・リージョンのコンシューマがデータ・セットにアクセスできるようにする場合は、リモート・リージョンでデータ・セットを使用可能にするための追加のステップを実行する必要があります。 詳細については、「別のリージョンでのデータ・セットの登録または登録解除」を参照してください。
-
プロシージャ
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONを使用して、既存のデータ・セットの属性を変更します。更新が完了するまでの待機時間は、登録変更が伝播され、クラウド・リンクからアクセスできるようになるまで最大10分かかります。 この遅延は、
DBA_CLOUD_LINK_REGISTRATIONSビューとDBA_CLOUD_LINK_ACCESSビューの両方のデータ精度に影響する可能性があります。 -
表またはビューの
READWITHGRANTOPTION権限がある場合は、別のユーザーのスキーマに存在する表またはビューを登録できます。 -
Autonomous Databaseは登録時に階層妥当性チェックを実行せず、スコープ外の登録は表示またはアクセスできません。
たとえば、次の順序を考えてみましょう。
-
スコープが
MY$COMPARTMENTのユーザーは、個々のデータベースOCIDを指定するスコープでオブジェクトを登録します。 -
ユーザーが登録済データ・セットへのアクセスをリクエストすると、Autonomous Databaseは、リクエストが発生したデータベースのデータベースOCIDが、データ・セットの登録時に
scopeで指定されたOCIDリストにあることを確認します。 -
その後、
namespace.nameオブジェクトは、リクエストが発生したデータベースで検出可能、表示可能および使用可能になります。
-
-
DBMS_CLOUD_LINK.UNREGISTERは完全に伝播されるまで最大10分かかる場合があり、その後はリモートからデータにアクセスできるようになります。
別のリージョンでのデータ・セットの登録または登録解除
クラウド・リンクは、ソース・リージョンにデータ・セットのソース・データベースが含まれ、1つ以上のリモート・リージョンにソース・データベースのリフレッシュ可能なクローンが含まれている複数のリージョンで使用できます。

図cloud-links-cross-region-refreshable-clone.pngの説明
別のリージョンのデータ・セットでクラウド・リンクを使用するには:
リモート・データ・セットの登録を解除できるのは、リモート・リージョン、またはリモート・リージョンとソース・リージョンの両方のみです:
リモート・リージョンでデータ・セットを登録解除し、データ・セットへのリモート・アクセスを無効にするには:
-
リフレッシュ可能クローンで、データ・セットの登録を解除します。
たとえば:
BEGINDBMS_CLOUD_LINK.UNREGISTER( namespace => 'TRUSTED_COMPARTMENT', name => 'SALES'); END; / -
リフレッシュ可能クローンをリフレッシュします。
詳細については、「Autonomous Databaseでのリフレッシュ可能なクローンのリフレッシュ」を参照してください。
ソース・データベースでデータ・セットを登録解除し、リモート・リージョンのリフレッシュ可能クローンでデータ・セットを登録解除するには:
-
リモート・リフレッシュ可能クローンが1つのみの場合、またはリモート・リージョンに複数のリフレッシュ可能クローンがある場合は、そのデータ・セットの登録を解除します。
たとえば:
BEGINDBMS_CLOUD_LINK.UNREGISTER( namespace => 'TRUSTED_COMPARTMENT', name => 'SALES'); END; / -
ソース・データベースで、データ・セットの登録を解除します。
詳細については、「データ・セットの登録または登録解除」を参照してください。
-
リフレッシュ可能なクローンをリフレッシュします。
詳細については、「Autonomous Databaseでのリフレッシュ可能なクローンのリフレッシュ」を参照してください。
リモート・リージョンでのデータ・セットの登録または登録解除に関するノート
リモート・リージョンにデータ・セットを登録するためのノートを提供します。
-
リモート・リージョンのリフレッシュ可能クローンにデータ・セットを登録する場合、リモート・リージョン・クローンでの
DBMS_CLOUD_LINK.REGISTERの起動では、offload_targetsパラメータを除いて、ソース・データベースと同じ値を持つ同じパラメータを使用する必要があります。たとえば、ソースAutonomous Databaseインスタンスでスコープを
MY$COMPARTMENTに設定してDBMS_CLOUD_LINK.REGISTERを実行する場合、同じスコープ・パラメータ値(MY$COMPARTMENT)を持つクロス・リージョン・リフレッシュ可能クローンでプロシージャを再度実行します。 -
ソースで
DBMS_CLOUD_LINK.REGISTERにoffload_targetsパラメータを指定する場合は、リフレッシュ可能クローンにデータ・セットを登録するときに、このパラメータを省略する必要があります。 -
オブジェクトを登録した後、ユーザーはクラウド・リンクを使用してオブジェクトにアクセスするために最大10分待機する必要がある場合があります。
-
次のアクションでは、リフレッシュ可能クローンをリフレッシュする必要があります:
-
VPDポリシーをソースのデータ・セットに追加する場合は、リフレッシュ可能クローンをリフレッシュする必要があります。
-
ソース・データベースでデータ・セットに対する権限付与または取消しを実行する場合は、リフレッシュ可能クローンをリフレッシュする必要があります。
詳細については、「Autonomous Databaseでのリフレッシュ可能なクローンのリフレッシュ」を参照してください。
-
データ・セットの承認必須への登録
オプションで、データ・セットを登録するときに、スコープに加えて、データ・セットへのアクセスにデータベース・レベルの認可が必要であることを指定できます。
auth_requiredをFALSEに設定した前の例と比較して、この例では、auth_requiredをTRUEに設定します。 auth_requiredがTRUEの場合、データ・セットへのアクセスが認可される1つ以上のデータベースを指定するには、追加のステップが必要です。
ノート:
権限が付与されるのは、次のステップに示すようにのみです。 ADMINは、DBMS_CLOUD_LINK_ADMIN.GRANT_AUTHORIZEを使用して許可権限を付与します。
データ・セットを登録した後、auth_requiredパラメータの値を更新できます。 詳細については、「データ・セットの登録属性の更新」を参照してください。
データベースの認可を取り消す場合:
BEGIN
DBMS_CLOUD_LINK.REVOKE_AUTHORIZATION(
database_id => '120xxxxxxx8506029999',
namespace => 'TRUSTED_COMPARTMENT',
name => 'SALES');
END;
/
詳細は、次を参照してください:
データ・セット・アクセスのオフロード・ターゲットへのデータ・セットの登録
オプションで、データ・セットを登録するときに、データ・セットへのアクセスを、リフレッシュ可能なクローンである1つ以上のAutonomous Databaseインスタンスにオフロードできます。
オプションのoffload_targetsパラメータをDBMS_CLOUD_LINK.REGISTERとともに使用して、アクセスをリフレッシュ可能クローンにオフロードすることを指定します。 各リフレッシュ可能クローンのソース・データベースは、データ・セット(データ・パブリッシャ)を登録するAutonomous Databaseインスタンスです。
offload_targets値は、1つ以上のCLOUD_LINK_DATABASE_IDおよびOFFLOAD_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_targetsに登録したデータ・セットへのアクセスをリクエストし、Autonomous DatabaseインスタンスのデータベースIDがCLOUD_LINK_DATABASE_IDで指定された値と一致する場合、アクセスは、指定されたJSONのOFFLOAD_TARGETで識別されたリフレッシュ可能クローンにオフロードされます。
たとえば、次の例は、3つのOFFLOAD_TARGET/CLOUD_LINK_DATABASE_ID値のペアを持つ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で一致するデータベースIDエントリを持つコンシューマからのリクエストを除く)。
たとえば、1つの明示的なOFFLOAD_TARGET/CLOUD_LINK_DATABASE_ID値ペアと、対応する OFFLOAD_TARGETを持つ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"
}
]
}データ・セットを登録し、オフロード・ターゲットを指定するには、次の手順を実行します:
データ・セットの登録属性の更新
データ・セットを登録した後、一部のデータ・セット属性を更新できます。 スキーマ名、スキーマ・オブジェクト、ネームスペースまたは名前属性は更新できません。
データ・セット属性を更新するには:
データ・セットが1つ以上のクロス・リージョン・リフレッシュ可能クローンに登録されている場合、ソース・データベースでの登録に対する変更は、リモート・リージョンに伝播される必要があります。
クロス・リージョン・リフレッシュ可能クローンに変更を伝播するには、次の点に注意してください:
-
プロデューサにリージョンAなど、リージョンにNのクロス・リージョン・リフレッシュ可能クローンがある場合は、リージョンAにある1つのリフレッシュ可能クローンに対して
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONを実行します。 -
異なるリモート・リージョン(リージョンBなど)に同じプロデューサにMクロス・リージョン・リフレッシュ可能クローンがある場合は、リージョンBにある1つのリフレッシュ可能クローンで
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONを実行します。
データ・セットが1つ以上のクロス・リージョン・リフレッシュ可能クローンに登録されている場合に属性を更新するには:
-
ソース・データベースで、データ・セット登録を更新します。
-
リモート・リージョンのリモート・リフレッシュ可能クローン(リモート・リージョンが1つのみの場合)または各リモート・リージョンのリモート・リフレッシュ可能クローン(複数のリージョンにレプリケートされたリフレッシュ可能クローンがある場合)で、
offload_targetsパラメータを除いて、ソース・データベースの更新に使用した値と同じ値でデータ・セット登録を更新します。任意のリモート・リージョンで
DBMS_CLOUD_LINK.UPDATE_REGISTRATIONを実行する必要があるのは、そのリージョン内の1つのリフレッシュ可能クローンのみです(リージョンに同じデータ・セットに関連付けられた複数のリフレッシュ可能クローンがある場合、プロシージャを1回のみ実行して、個々のリモート・リージョン内のすべてのリフレッシュ可能クローンに変更を伝播する必要があります)。 -
リフレッシュ可能なクローンをリフレッシュします。
詳細については、「Autonomous Databaseでのリフレッシュ可能なクローンのリフレッシュ」を参照してください。
データ・セットの検索とクラウド・リンクの使用
クラウド・リンクを読み取るアクセス権を付与されたユーザーは、Autonomous Databaseインスタンスで使用可能なデータ・セットを検索し、登録されたデータ・セットにアクセスして問合せで使用できます。
ADMINユーザーがGRANT_READを実行すると、ユーザーはクラウド・リンクを検索して使用できます。
FOREST.TREE_DATA@cloud$linkのシノニムを定義して使用できます: CREATE SYNONYM S1 for FOREST.TREE_DATA@cloud$link;
CREATE PUBLIC SYNONYM S2 for FOREST.TREE_DATA@cloud$link;
SELECT * FROM S1;
SELECT * FROM S2;詳細については、CREATE SYNONYMを参照してください。
クラウド・リンク・コンシューマ・オプションの使用
コンシューマ・データベースからのデータへのアクセスに使用するサービス名マッピングを設定し、問合せの結果またはCloud Linkデータにアクセスする問合せフラグメントのデータ・セット・コンシューマに対するキャッシュを有効にできます。
クラウド・リンク・コンシューマのデータベース・サービス名マッピングの設定
クラウド・リンク・コンシューマがデータ・セット所有者からデータにアクセスするときに使用するサービス名マッピングを設定できます。
クラウド・リンクは、共有データにアクセスするために、データ・セット・プロデューサまたはリフレッシュ可能クローンのリソースであるAutonomous Databaseインスタンスのデータベース・リソースに依存します。 デフォルトでは、コンシューマがクラウド・リンク・データにアクセスするためのリモート接続では、MEDIUMデータベース・サービスが使用されます。
DBMS_CLOUD_LINK_ADMIN.ADD_SERVICE_MAPPINGを使用して、コンシューマのデータベース・サービス・マッピングを設定します。 この手順では、コンシューマ・サービス・マッピングを指定するために、データベースIDまたはキーワードANYを指定します。 たとえば、次の図は、コンシューマAからHIGHサービスへのマッピング、コンシューマBからMEDIUMサービスへのマッピング、コンシューマCからLOWサービスへのマッピング、およびANYからTPサービスへのマッピングを示しています。これは、他のすべてのコンシューマがTPサービスを使用してクラウド・リンクにアクセスすることを意味します。
データベース・サービスの特性の詳細は、「Autonomous Databaseのデータベース・サービス名」を参照してください。
クラウド・リンク・コンシューマに使用するデータベース・サービスを設定するには、次のステップを実行します:
サービス・マッピングの設定および変更に関するノート:
-
サービス・マッピングは、接続の確立時に有効になります。 特定のコンシューマのサービス・マッピングが変更された場合、新しいマッピングはコンシューマからの新しいセッションに対してのみ有効になります。
-
特定のコンシューマのデータ・セット所有者で構成されたサービス・マッピングは、コンシューマからのアクセスがリフレッシュ可能クローンにオフロードされている場合でも適用されます。 リフレッシュ可能クローンは、サービス・マッピングがデータ・セット所有者で構成された時点より後の時点にリフレッシュする必要があります。 リフレッシュ可能クローンへのオフロードは、データ・セットの登録時に引数
offload_targetsを使用して構成されることに注意してください。詳細については、「データ・セット・アクセスのオフロード・ターゲットへのデータ・セットの登録」を参照してください。
-
プロシージャ
DBMS_CLOUD_LINK_ADMIN.REMOVE_SERVICE_MAPPINGを使用して、指定したdatabase_idのサービス・マッピングを削除します。DBMS_CLOUD_LINK_ADMIN.REMOVE_SERVICE_MAPPINGの実行後、コンシューマはデフォルトのMEDIUMデータベース・サービスを使用するか、DBMS_CLOUD_LINK_ADMIN.ADD_SERVICE_MAPPINGをdatabase_id値ANYで実行するかどうかを指定したservice_nameを使用します。 詳細については、「REMOVE_SERVICE_MAPPINGプロシージャ」を参照してください。
リモート・リージョンのクラウド・リンク・コンシューマのデータベース・サービス名マッピングの設定
ソース・リージョンに登録されているデータ・セットは、リモート・リージョンでクロス・リージョン・リフレッシュ可能クローンを作成するときに、リモート・リージョンからクラウド・リンクを使用してアクセスできます。
この場合、リモート・リージョンのコンシューマのサービス・マッピングは、ソース・データベースおよびリモート・リージョンのリフレッシュ可能クローンで2回追加する必要があります。
リモート・リージョンのクラウド・リンク・コンシューマのサービス・マッピングを設定するには、次のステップを実行します。
リモート・リージョンのコンシューマがクラウド・リンク・データにアクセスすると、アクセスでは、ソース・リージョンのデータ・セット所有者データベースで追加したものと同じサービス・マッピングが使用されます。
クラウド・リンク・コンシューマのキャッシュの有効化
問合せの結果またはクラウド・リンク・データにアクセスする問合せフラグメントに対して、データ・セット・コンシューマでのキャッシュを有効にできます。
データ・セット・コンシューマでキャッシュを有効にするには、RESULT_CACHEヒントをSHELFLIFEオプションとともに使用します。 SHELFLIFEオプションを使用すると、問合せ結果がキャッシュされる期間を示す値を秒単位で指定できます。 SHELFLIFE間隔が経過すると、キャッシュされた結果は無効としてマークされます。 キャッシュされた結果が有効であるかぎり、問合せはコンシューマ・データベースのキャッシュからキャッシュされたデータを取得します。これにより、データ・セット所有者のデータベースへのラウンドトリップが回避されます。
データ・セットが静的であるか、コンシューマが失効した結果を許容できる場合は、RESULT_CACHEヒントをSHELFLIFEオプションとともに使用します。 SHELFLIFEの値により、クラウド・リンク・データ・セット・コンシューマは、キャッシュ内のデータが有効である時間(許容される失効度)を秒単位で制御できます。
問合せ結果が大きく、メモリーに収まらない場合は、RESULT_CACHEヒントをSHELFLIFEオプションおよびTEMPオプションとともに使用して、結果を一時表領域のディスクに書き込むように指定できます。
RESULT_CACHEヒントを使用してクラウド・リンク・データをキャッシュするには:
Autonomous Databaseで結果キャッシュを使用する方法の詳細は、RESULT_CACHE_MODEを参照してください。
SHELFLIFEを使用したRESULT_CACHEの詳細は、「RESULT_CACHEヒント」を参照してください。
結果キャッシュを管理し、結果キャッシュ内のオブジェクトを無効化するプロシージャの詳細は、DBMS_RESULT_CACHEを参照してください。
クラウド・リンク情報のモニターおよび表示
Autonomous Databaseは、クラウド・リンクをモニターおよび監査できるビューを提供します。
| 表示 | 説明 |
|---|---|
| V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビュー |
Autonomous Databaseインスタンス上の各登録済データ・セットへのアクセスを追跡する場合に使用します。 これらのビューは、経過時間、CPU時間、取得された行数および登録済データ・セットに関する追加情報を追跡します。 これらのビューの情報を使用して、クラウド・リンクのデータ・セットのアクセスおよび使用状況を監査できます。 |
| DBA_CLOUD_LINK_REGISTRATIONSおよびALL_CLOUD_LINK_REGISTRATIONSビュー |
Autonomous Databaseインスタンスに登録されているデータ・セットの詳細をリストする場合に使用します。 |
| DBA_CLOUD_LINK_ACCESSおよびALL_CLOUD_LINK_ACCESSビュー |
データベースがアクセスできる登録済データ・セットの詳細を取得するために使用します。 |
| DBA_CLOUD_LINK_AUTHORIZATIONSビュー |
どのデータベースがどのデータ・セットへのアクセスを許可されているかに関する情報を提供します。 これは、 |
|
すべてのユーザーまたは現在のユーザーに付与された、クラウド・リンク固有の権限( |
|
|
クラウド・リンク・コンシューマ・データベースのすべてのサービス・マッピングの詳細を表示します。 各サービス・マッピングは、クラウド・リンクのデータベースIDとデータベース・サービスで構成されます。 |
登録済データ・セットを保護するための仮想プライベート・データベース・ポリシーの定義
Oracle Virtual Private Database (VPD)は、同じデータ・セットにフィルタを適用することで、ユーザーおよびアプリケーションの行レベルでデータ・アクセスを動的に制御できるセキュリティ機能です。
クラウド・リンクの読取りアクセス権を付与されたユーザーは、データ・セットの登録時に指定されたスコープ内にある場合、登録済データ・セットにアクセスして使用できます。また、データ・セットに対して追加の許可必須パラメータが設定されている場合、アクセスは許可されたデータベースから取得されます。 各リモート・アクセスは、(データ・セットが登録されたデータベース上の)登録済データ・セットにアクセスするリモートAutonomous Databaseインスタンスのコンテキストで実行されます。
リモート・システムで関数DBMS_CLOUD_LINK.GET_DATABASE_IDを使用して、データベースの一意のIDを取得します。 データ・セットを登録したデータベースでVPDポリシーを定義することで、リモート・データベースの識別子をSYS_CONTEXTルールとして使用して、より詳細な制御を提供できるようになりました。 登録されたデータ・セットにアクセスするリモート・データベースのルールを定義し、クラウド・リンク・スコープを指定することでアクセスを可能な範囲を超えて制限できます。
REGIONAL_SALES.SALES_AGGがテナンシ・レベルで使用可能になる例を考えてみます。 1つの特定のデータベースを除くすべてのデータベースへのアクセスを制限し、指定したデータベースへのフル・アクセスのみを許可する場合は、登録されたデータ・セットにVPDポリシーを追加できます。
たとえば:
詳細については、「Oracle Virtual Private Databaseを使用したデータ・アクセスの制御」を参照してください。
クラウド・リンクに関するノート
クラウド・リンクの使用に関するノートおよび制限を示します。
-
登録できるデータ・セットの数には、4096の制限があります。
各Autonomous Databaseインスタンスは、4096個以下のデータ・セットを登録できます。 この制限は、「ECPU (データベースがOCPUを使用している場合はOCPU)」の数やインスタンスのストレージ・サイズに関係なく、すべてのAutonomous Databaseインスタンスに適用されます。 制限は固定値であり、「ECPU数」を大きい値に設定すると、より多くのデータ・セットを登録できません。
-
オブジェクトに対する
READ WITH GRANT OPTION権限がある場合は、オブジェクトを別のスキーマに登録できます。 -
データ・セットを登録したり、リモート・データ・セットを表示およびアクセスするには、データ・セットを登録または読取りするための適切な権限が付与されている必要があります。 これはADMINにも当てはまりますが、ADMINはこの権限を付与できます。
-
DBMS_CLOUD_LINK.REGISTERまたはDBMS_CLOUD_LINK.UPDATE_REGISTRATIONを使用するには、DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERに割り当てられている登録権限に加えて、DBMS_CLOUD_LINKパッケージに対する実行権限が必要です。 デフォルトでは、ADMINユーザーおよびPDB_DBAを持つスキーマのみがこの権限を持ちます。 -
登録された表を削除して再作成する場合は、リモート・アクセス用に表を再登録する必要があります。
-
ADMINユーザーおよびロール
PDB_DBAを持つユーザーのみが、次のビューにアクセスする権限を持ちます:-
DBA_CLOUD_LINK_ACCESS -
DBA_CLOUD_LINK_REGISTRATIONS -
DBA_CLOUD_LINK_AUTHORIZATIONS -
DBA_CLOUD_LINK_PRIVS
詳細については、「DBMS_CLOUD_LINKビュー」を参照してください。
-
-
登録されたリモート・データにアクセスするには、リモート・データベースをオープンする必要があります。 リモート・データベースがクローズまたは制限モードの場合、データにアクセスできず、Oracleエラーが返されます。
-
セッション当たり最大4つのオープン・データベース・リンクの制限があります。 この制限を超えると、
ORA-02020またはORA-12545になる可能性があります。 -
結果キャッシュが有効な場合、「データ・ウェアハウス」ワークロードを使用したAutonomous Databaseでのデフォルトの動作と同様に、リアルタイム・データが必要な場合に結果キャッシュが使用されないようにする必要があります。
-
ライセンス・タイプを無料から有料に更新する場合は、クラウド・リンク・データ・セットを再登録する必要があります。 詳細については、「Autonomous Databaseで有料にAlways Freeインスタンスを更新」を参照してください。
-
クラウド・リンクのリモート接続では、デフォルトで
MEDIUMデータベース・サービスが使用されます。DBMS_CLOUD_LINK_ADMIN.ADD_SERVICE_MAPPINGでデフォルトを変更するには、ANYをDATABASE_IDの値として使用します。 コンシューマのDATABASE_IDを指定することで、DBMS_CLOUD_LINK_ADMIN.ADD_SERVICE_MAPPINGを使用してコンシューマのデータベース・サービスを変更できます。 詳細については、「クラウド・リンク・コンシューマのデータベース・サービス名マッピングの設定」を参照してください。リモート接続はユーザー
C##DATA$SHAREとしてV$SESSIONで表示でき、クラウド・リンク・ビュー「V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビュー」にはリモート接続の詳細が表示されます。 -
特に記載がないかぎり、すべてのインタフェースでは大文字と小文字が区別されます:
- データベースに存在するユーザー名や表名などの入力内容は、大/小文字が区別され、大文字で入力する必要があります。
- 事前定義された変数。たとえば、事前定義されたスコープ値は大文字で入力する必要があります。
- クラウド・リンクの設定に指定するもの(ネームスペース内の表のネームスペースや名前など)は、入力時に指定する必要があります。 たとえば、ネームスペースを
treesとして定義する場合、SQLでネームスペースにアクセスするときは、ネームスペースを"trees"として二重引用符で囲む必要があります。
-
データ・セットが読取り専用モードのAutonomous Databaseインスタンスに存在する場合は、クラウド・リンクを共有できます。 詳細については、「読取り専用Autonomous Databaseインスタンスからのクラウド・リンクの使用」を参照してください。
-
オフロード・ターゲットとして表示されるリフレッシュ可能クローンのリフレッシュ可能クローンを作成してから最大10分かかる場合があります。 つまり、リフレッシュ可能クローンを作成してクラウド・リンク・オフロード登録で使用できるようにするには、リフレッシュ可能クローンを作成してから最大10分待機する必要がある場合があります。
詳細については、「データ・セット・アクセスのオフロード・ターゲットへのデータ・セットの登録」と「Autonomous Databaseインスタンスのリフレッシュ可能クローンの作成」を参照してください。

