Autonomous Database上の読取り専用データへのアクセスに対するクラウド・リンクの使用

クラウド・リンクは、Autonomous Databaseインスタンス上の読取り専用データにリモートでアクセスするためのクラウドベースの方法を提供します。

Autonomous Databaseでのクラウド・リンクについて

クラウド・リンクを使用すると、データ所有者は、データ所有者が定義したとおりに、選択したオーディエンスのリモート・アクセス用の表またはビューを登録します。その後、登録時にアクセス権が付与されたユーザーがデータにアクセスできるようになります。クラウド・リンクを設定するためにこれ以上のアクションは必要ありません。データを表示してアクセスするユーザーは、データを検出して操作できます。

クラウド・リンクの実装では、Oracle Cloud Infrastructureのアクセス・メカニズムを利用して、特定のスコープ内でデータにアクセスできるようにします。「スコープ」は、データにリモートでアクセスできます。有効範囲は、データベースが存在するリージョン、個々のテナンシ、コンパートメントなどの様々なレベルに設定できます。また、データ・セットにアクセスするための認可が1つ以上のAutonomous Databaseインスタンスに制限されるように指定できます。

ソース(データ・セット所有者の)Autonomous Databaseインスタンスから1つ以上のクロスリージョン・リフレッシュ可能クローンを作成することで、クラウド・リンクを使用して複数のリージョン間でデータを共有できます。

クラウド・リンクは、従来のデータベース・リンク・メカニズムと比較して、Autonomous Databaseインスタンス間での表またはビューの共有を大幅に簡素化します。クラウド・リンクを使用すると、複雑なデータベース・リンクの設定を必要とせずにデータを検出できます。Autonomous Databaseは、SQLを使用した透過的アクセスを提供し、クラウド・リンク・スコープおよび個々のAutonomous Databaseインスタンスに認可を付与することで、権限の強制を実装します。

クラウド・リンクでは、リモートからアクセス可能にするデータのリージョン・ネームスペースおよび名前の概念を紹介します。これは、"LWARD"など、ネームスペース(スキーマ)に存在する"EMP"など、表が存在する既存のOracle表と同様です。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がデータ・セットのオフロード・リストにリストされると、データ・セットへのアクセスはリフレッシュ可能クローンに送られます。

クラウド・リンクの使用時に使用する概念と用語はいくつかあります。

  • 登録済データ・セット(データ・セット): Autonomous Databaseでリモート・アクセスが有効になっている表またはビューを識別します。登録されたデータ・セットは、データ・セット(スコープ)へのアクセスを許可されるユーザーも示します。データ・セット登録では、クラウド・リンクで使用するネームスペースと名前を定義します。データ・セット登録後、これらの値はまとめてリモート・アクセスの完全修飾名(FQN)を指定し、クラウド・リンクがデータ・セットのアクセシビリティを管理できるようにします。

  • データ・セット所有者: データ・セットに関する質問の窓口を提供するデータ・セット所有者を指定します。

  • スコープ: 登録されたデータ・セットへのアクセスを許可されるユーザーおよび場所を指定します。スコープの詳細は、データ・セットのスコープ、アクセス制御および認可を参照してください。

  • OCID (Oracle Cloud Identifier): 特定のテナンシ、コンパートメントまたはデータベースを識別します。登録済データ・セットのスコープは、OCIDsで表すことができます。詳細は、リソース識別子を参照してください。

  • データ登録: データ登録では、ユーザーは表またはビューをリモート・アクセスに使用可能にし、スコープによって課されるアクセス制限の対象となり、オプションで追加の認可ステップの対象となります。データベースに格納されている表またはビュー、またはオブジェクト・ストアに格納されているデータに対するクラウド・リンクによるリモート・アクセスを許可できます。

  • データ検出: 登録済データ・セットは、データベースからのテキスト問合せを使用して検出できます。この検出では、データ・セットにアクセスする権限がある場合にのみデータ・セットが表示されます。登録済データ・セットを名前または摘要で検索できます。

  • データ記述: ユーザーは、登録済データ・セットとして使用可能な表またはビューの説明またはメタデータを取得できます。

  • オフロード・ターゲット: オプションで、1つ以上のオフロード・ターゲットを指定できます。オフロード・ターゲットは、クラウド・リンクのデータ・セットを指定されたAutonomous Databaseインスタンスに提供するリフレッシュ可能なクローンです。オフロード・ターゲットを指定することで、Autonomous Databaseインスタンスを専用にして、本番と開発を分離するデータ・セットを提供したり、パフォーマンスを確保したり、セキュリティを保証したり、その他の理由で提供したりできます。詳細は、Autonomous Databaseでのリフレッシュ可能クローンの使用を参照してください。

クラウド・リンクを使用した登録済データ・セットへのアクセスは、監査目的でログに記録されます。ログには、データ・セットにアクセスしたテナンシ、コンパートメントまたはデータベース、アクセスされたデータの量および追加情報が含まれます。V$CLOUD_LINK_ACCESS_STATSおよびGV$CLOUD_LINK_ACCESS_STATSビューには、監査情報が表示されます。

ノート

クラウド・リンクは、Autonomous Databaseインスタンス上のリモート・オブジェクトへの読取り専用アクセスを提供します。他のOracleデータベースまたはOracle以外のデータベースとのデータベース・リンクを使用する場合、またはDML操作でリモート・データを使用する場合は、データベース・リンクを使用する必要があります。詳細は、Autonomous Databaseでのデータベース・リンクの使用に関する項を参照してください。

データ・セット・メタデータおよび監査ビュー

各Autonomous Databaseインスタンスには、データ・セット・メタデータを公開し、データ使用状況を監視および監査できるビューが用意されています。詳細は、クラウド・リンク情報のモニターおよび表示を参照してください。

データ・セット・スコープ、アクセス制御および認可

Cloud Linksでは、Oracle Cloud Infrastructureのアクセス・メカニズムを活用して、登録済のデータ・セットにアクセス可能にし、アクセス制限によりデータを保護します。

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$REGIONMY$TENANCYおよびMY$COMPARTMENTは、便利なマクロとして機能し、OCIDsに解決される変数です。

Note

The scope you set when you register a data set is only honored when it matches or is more restrictive than the value set with DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTER. For example, assume the ADMIN granted the scope 'MY$TENANCY' with GRANT_REGISTER, and the user specifies 'MY$REGION' when they register a data set with DBMS_CLOUD_LINK.REGISTER. In this case they would see an error such as the following:
ORA-20001: Share privileges are not enabled for current user or it is enabled but not for scope MY$REGION

SYS_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'

詳細は、データ・セットのスコープ、アクセス制御および認可を参照してください。

  1. ADMINユーザーとして、指定したスコープ内でデータ・セットを登録できるようにします。
    BEGIN
    DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTER(
       username => 'DB_USER1',
       scope    => 'MY$REGION');
    END;
    /

    これは、ユーザーDB_USER1が、指定したスコープ 'MY$REGION'内のデータ・セットを登録する権限を持つことを指定します。

    ユーザーは、SYS_CONTEXT('USERENV', 'CLOUD_LINK_REGISTER_ENABLED')を問い合せて、データ・セットの登録が有効になっているかどうかを確認できます。

    たとえば、次の問合せをします。

    SELECT SYS_CONTEXT('USERENV', 'CLOUD_LINK_REGISTER_ENABLED') FROM DUAL;

    'YES'または'NO''を返します。

    詳細は、GRANT_REGISTERプロシージャを参照してください。

  2. ADMINユーザーとして、登録済データ・セットへのアクセスをユーザーに許可します。
    EXEC DBMS_CLOUD_LINK_ADMIN.GRANT_READ('LWARD');

    これにより、LWARDは、Autonomous Databaseインスタンスで使用可能な登録済データ・セットにアクセスできます。

    ユーザーは、SYS_CONTEXT('USERENV', 'CLOUD_LINK_READ_ENABLED')を問い合せて、データ・セットへのREADアクセスが有効になっているかどうかを確認できます。

    たとえば、次の問合せをします。

    SELECT SYS_CONTEXT('USERENV', 'CLOUD_LINK_READ_ENABLED') FROM DUAL;

    'YES'または'NO''を返します。

    詳細は、GRANT_READプロシージャを参照してください。

  3. データ登録時に、認可必須パラメータをTRUEに設定できます。必要な認可がTRUEの場合、ADMINユーザーはDBMS_CLOUD_LINK_ADMIN.GRANT_AUTHORIZEを実行して、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONを起動する認可を指定する必要があります。DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONを使用して、認可の詳細を指定します。

    詳細は、「認可が必要なデータ・セットの登録」を参照してください。

  4. Autonomous DatabaseインスタンスでDatabase Vaultが有効になっており、クラウド・リンクに登録する表またはビューがレルムによって保護されている場合、登録する前に、表またはビューの所有者をレルム所有者としてレルムに認可する必要があります。
    BEGIN
         DBMS_MACADM.ADD_AUTH_TO_REALM(
               realm_name   => 'myrealm',
               grantee      => 'object_owner',
               auth_option  => dbms_macutl.g_realm_auth_owner);
    END;
    /

    表またはビューを保護するレルムが必須レルムの場合、接続スキーマとして内部的に使用されるC##DATA$SHAREという名前のAutonomous Database共通スキーマは、レルム参加者としてレルムに対して認可されている必要があります。

    たとえば:

    BEGIN
         DBMS_MACADM.ADD_AUTH_TO_REALM(
               realm_name   => 'myrealm',
               grantee      => 'C##DATA$SHARE',
               auth_option  => dbms_macutl.g_realm_auth_participant);
    END;
    /

    詳細は、Oracle Database VaultとAutonomous Databaseの使用を参照してください。

データベース・ユーザーにデータ・セットを登録する権限を付与するためのノート:

  • データ・セットを登録したり、リモート・データ・セットを表示してアクセスするには、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)を指定し、クラウド・リンクがデータ・セットのアクセシビリティを管理できるようにします。

  1. ADMINユーザーから登録権限の付与を取得します。
  2. 1つ以上のデータ・セットを登録します。

    たとえば、Autonomous DatabaseインスタンスにスキーマCLOUDLINKがある場合、2つのオブジェクトSALES_VIEW_AGGおよびSALES_ALLを登録し、異なるscopeパラメータを指定してオブジェクトへのアクセス方法を決定できます。

    BEGIN
       DBMS_CLOUD_LINK.REGISTER(
        schema_name    => 'CLOUDLINK',
        schema_object  => 'SALES_VIEW_AGG',
        namespace      => 'REGIONAL_SALES', 
        name           => 'SALES_AGG',
        description    => 'Aggregated regional sales information.',
        scope          => 'MY$TENANCY',
        auth_required  =>  FALSE,
        data_set_owner =>  'amit@example.com' );
    END;
    /
    BEGIN
       DBMS_CLOUD_LINK.REGISTER(
        schema_name    => 'CLOUDLINK',
        schema_object  => 'SALES_ALL',
        namespace      => 'TRUSTED_COMPARTMENT', 
        name           => 'SALES',
        description    => 'Trusted Compartment, only accessible within my compartment. Early sales data.',
        scope          => 'MY$COMPARTMENT',
        auth_required  =>  FALSE,
        data_set_owner =>  'amit@example.com' );
    END;
    /

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

    • schema_name: スキーマ名(オブジェクト所有者)です。

    • schema_object: オブジェクトの名前です。有効なオブジェクトは次のとおりです。

      ノート

      分析ビューやシノニムなどの他のオブジェクトはサポートされていません。
    • namespace: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするための名前として指定するネームスペースです。

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

    • name: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするために指定する名前です。

    • scope: スコープを指定します。MY$REGIONMY$TENANCYまたはMY$COMPARTMENTのいずれかの変数を使用するか、1つ以上のOCIDsを指定できます。

      詳細は、データ・セットのスコープ、アクセス制御および認可を参照してください。

    • auth_required: スコープ・アクセス制御に加えて、データ・セットにデータベース・レベルの認可が必要かどうかを指定するブール値。これをTRUEに設定すると、データ・セットによって追加の認可ステップが実行されます。詳細は、「認可が必要なデータ・セットの登録」を参照してください。

    • data_set_owner: テキスト値は、データ・セットの責任者またはデータ・セットに関する質問の担当者に関する情報を指定します。たとえば、データ・セット所有者の電子メール・アドレスを指定できます。

    詳細は、REGISTERプロシージャを参照してください。

    登録が完了すると、スコープ・パラメータに基づいて、これら2つの登録済オブジェクトのスコープが異なります。

    • MY$TENANCY: REGIONAL_SALES.SALES_AGGのテナンシ・レベル・スコープを指定します。

    • MY$COMPARTMENT: TRUSTED_COMPARTMENT.SALESのテナンシ内の自分のコンパートメントに対して、より制限的なコンパートメント・レベル・スコープを指定します。

登録済データ・セットへのリモート・アクセスを取り消す場合は、データ・セットの登録を解除できます。

BEGIN
   DBMS_CLOUD_LINK.UNREGISTER(
    namespace      => 'TRUSTED_COMPARTMENT', 
    name           => 'SALES');
END;
/

詳細は、UNREGISTERプロシージャを参照してください。

データ・セットの登録または登録解除に関するノート

DBMS_CLOUD_LINK.REGISTERにデータ・セットを登録し、DBMS_CLOUD_LINK.UNREGISTERにデータ・セットを登録解除するためのノートを提供します。

  • オブジェクトを登録した後、ユーザーは、クラウド・リンクを使用してオブジェクトにアクセスするために最大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権限がある場合は、別のユーザーのスキーマに存在する表またはビューを登録できます。

  • Autonomous Databaseでは、登録時に階層妥当性チェックは実行されず、範囲外の登録は表示またはアクセスできなくなります。

    たとえば、次のシーケンスを考えてみます。

    1. スコープMY$COMPARTMENTを持つユーザーは、個々のデータベースOCIDを指定するスコープでオブジェクトを登録します。

    2. ユーザーが登録済データ・セットへのアクセスをリクエストすると、Autonomous Databaseは、リクエストが発生したデータベースのデータベースOCIDが、データ・セットの登録時にscopeで指定されたOCIDリストにあることを確認するチェックを実行します。

    3. この後、namespace.nameオブジェクトは、リクエストが発生したデータベースで検出可能、表示可能および使用できるようになります。

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

別のリージョンでのデータ・セットの登録または登録解除

クラウド・リンクは、ソース・リージョンにデータ・セットのソース・データベースが含まれ、1つ以上のリモート・リージョンにソース・データベースのリフレッシュ可能なクローンが含まれている複数のリージョンで使用できます。

cloud-links-cross-region-refreshable-clone.pngの説明が続きます

別のリージョンのデータ・セットでクラウド・リンクを使用するには:

  1. リモート・リージョンにソース・データベースのクロスリージョン・リフレッシュ可能クローンを作成します。

    クロスリージョン・リフレッシュ可能クローンの追加の詳細は、クロス・テナンシまたはクロスリージョン・リフレッシュ可能クローンの作成を参照してください。

  2. ソース・データベースで、データ・セットを登録します。

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

  3. リフレッシュ可能クローンをリフレッシュします。
  4. リモート・リフレッシュ可能クローンで、データ・セットをソース・リージョンに登録するために使用したものと同じ引数を使用して、データ・セットを登録します。

    たとえば、Autonomous DatabaseインスタンスにスキーマCLOUDLINKが存在する場合、ソース・データベースでSALES_ALLを登録した後、リフレッシュ可能クローンにSALES_ALLを登録します:

    BEGIN
       DBMS_CLOUD_LINK.REGISTER(
        schema_name    => 'CLOUDLINK',
        schema_object  => 'SALES_ALL',
        namespace      => 'TRUSTED_COMPARTMENT', 
        name           => 'SALES',
        description    => 'Trusted Compartment, only accessible within my compartment. Early sales data.',
        scope          => 'MY$COMPARTMENT',
        auth_required  =>  FALSE,
        data_set_owner =>  'amit@example.com' );
    END;
    /

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

    • schema_name: スキーマ名(オブジェクト所有者)です。

    • schema_object: オブジェクトの名前です。有効なオブジェクトは次のとおりです。

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

      分析ビューやシノニムなどの他のオブジェクトはサポートされていません。
    • namespace: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするための名前として指定するネームスペースです。

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

    • name: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするために指定する名前です。

    • scope: スコープを指定します。MY$REGIONMY$TENANCYまたはMY$COMPARTMENTのいずれかの変数を使用するか、1つ以上のOCIDsを指定できます。

      詳細は、データ・セットのスコープ、アクセス制御および認可を参照してください。

    • auth_required: スコープ・アクセス制御に加えて、データ・セットにデータベース・レベルの認可が必要かどうかを指定するブール値。これをTRUEに設定すると、データ・セットによって追加の認可ステップが実行されます。詳細は、「認可が必要なデータ・セットの登録」を参照してください。

    • data_set_owner: テキスト値は、データ・セットの責任者またはデータ・セットに関する質問の担当者に関する情報を指定します。たとえば、データ・セット所有者の電子メール・アドレスを指定できます。

    詳細は、REGISTERプロシージャを参照してください。

    リフレッシュ可能クローンの登録が完了すると、登録済オブジェクトのスコープはMY$COMPARTMENTです: TRUSTED_COMPARTMENT.SALESのテナンシ内の自分のコンパートメントに対して、より限定的なコンパートメント・レベル・スコープを指定します。

リモート・データ・セットは、リモート・リージョン内でのみ、またはリモート・リージョンとソース・リージョンの両方でのみ登録解除できます。

リモート・リージョンでデータ・セットを登録解除し、データ・セットへのリモート・アクセスを無効にするには:

  1. リフレッシュ可能クローンで、データ・セットの登録を解除します。

    たとえば:

    BEGIN
       DBMS_CLOUD_LINK.UNREGISTER(
        namespace      => 'TRUSTED_COMPARTMENT', 
        name           => 'SALES');
    END;
    /
  2. リフレッシュ可能クローンをリフレッシュします。

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

ソース・データベースでデータ・セットを登録解除し、リモート・リージョンのリフレッシュ可能クローンでデータ・セットを登録解除するには:

  1. リモート・リフレッシュ可能クローンが1つのみの場合は、リモート・リージョンに複数のリフレッシュ可能クローンがある場合は、そのデータ・セットの登録を解除します。

    たとえば:

    BEGIN
       DBMS_CLOUD_LINK.UNREGISTER(
        namespace      => 'TRUSTED_COMPARTMENT', 
        name           => 'SALES');
    END;
    /
  2. ソース・データベースで、データ・セットの登録を解除します。

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

  3. リフレッシュ可能クローンをリフレッシュします。

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

リモート・リージョンでのデータ・セットの登録または登録解除に関するノート

リモート・リージョンにデータ・セットを登録するためのノートを提供します。

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

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

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

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

  • 次のアクションでは、リフレッシュ可能クローンをリフレッシュする必要があります:

    • VPDポリシーをソースのデータ・セットに追加する場合は、リフレッシュ可能クローンをリフレッシュする必要があります。

    • ソース・データベースでデータ・セットの付与または取消しを実行する場合は、リフレッシュ可能クローンをリフレッシュする必要があります。

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

認可必須のデータ・セットの登録

オプションで、データ・セットを登録するときに、スコープに加えて、データ・セットへのアクセスにデータベース・レベルの認可が必要であることを指定できます。

auth_requiredFALSEに設定した前の例と比較して、この例ではauth_requiredTRUEに設定します。auth_requiredTRUEの場合、データ・セットへのアクセスが認可される1つ以上のデータベースを指定するための追加のステップが必要です。

ノート

権限がある場合、これらのステップに示すように、認可のみを付与できます。ADMINは、DBMS_CLOUD_LINK_ADMIN.GRANT_AUTHORIZEを使用して認可権限を付与します。
  1. DBMS_CLOUD_LINK.REGISTERを使用して、必要な認可でデータを登録します。

    Autonomous DatabaseインスタンスにスキーマCLOUDLINKがあり、オブジェクトSALES_VIEW_AGGを登録してauth_requiredTRUEに設定した場合、スコープの定義に加えて、オブジェクトへのアクセス方法を決定するための追加のステップを事前に作成する必要があります。

    BEGIN
       DBMS_CLOUD_LINK.REGISTER(
        schema_name    => 'CLOUDLINK',
        schema_object  => 'SALES_VIEW_AGG',
        namespace      => 'REGIONAL_SALES', 
        name           => 'SALES_AGG',
        description    => 'Aggregated regional sales information.',
        scope          => 'MY$TENANCY',
        auth_required  =>  TRUE,
        data_set_owner =>  'amit@example.com' );
    END;
    /

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

    • schema_name: スキーマ名(オブジェクト所有者)です。

    • schema_object: オブジェクトの名前です。有効なオブジェクトは次のとおりです。

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

      分析ビューやシノニムなどの他のオブジェクトはサポートされていません。
    • namespace: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするための名前として指定するネームスペースです。

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

    • name: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするために指定する名前です。

    • scope: スコープを指定します。MY$REGIONMY$TENANCYまたはMY$COMPARTMENTのいずれかの変数を使用するか、1つ以上のOCIDsを指定できます。

      詳細は、データ・セットのスコープ、アクセス制御および認可を参照してください。

    • auth_required: スコープ・アクセス制御に加えて、データ・セットにデータベース・レベルの認可が必要かどうかを指定するブール値。これをTRUEに設定すると、データ・セットによって追加の認可ステップが実行されます。

    • data_set_owner: テキスト値は、データ・セットの責任者またはデータ・セットに関する質問の担当者に関する情報を指定します。たとえば、データ・セット所有者の電子メール・アドレスを指定できます。

  2. (データベースによるデータ・セットへのアクセスを許可する)認可を付与するデータベースのデータベースIDを取得します。

    システムで、データ・セットへのアクセス権を付与します。

    SELECT DBMS_CLOUD_LINK.GET_DATABASE_ID FROM DUAL:
  3. 取得したデータベースIDを使用して、指定したデータ セットに権限を付与します。

    権限がある場合、このステップに示すように、認可のみを付与し、DBMS_CLOUD_LINK.GRANT_AUTHORIZATIONを実行できます。ADMINは、DBMS_CLOUD_LINK_ADMIN.GRANT_AUTHORIZEで認可を付与します。

    BEGIN
       DBMS_CLOUD_LINK.GRANT_AUTHORIZATION(
        database_id    => '120xxxxxxx8506029999',
        namespace      => 'TRUSTED_COMPARTMENT', 
        name           => 'SALES');
    END;
    /

    追加のデータベースを認可する場合は、これらのステップを複数回実行します。

データベースの認可を取り消す場合:

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_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です。

次の図は、オフロード・ターゲットの使用を示しています。

cloud-links-offload-targets-any-keyword.epsの説明が続きます

データ・セット・コンシューマが、offload_targetsに登録したデータ・セットへのアクセスをリクエストし、Autonomous DatabaseインスタンスのデータベースIDがCLOUD_LINK_DATABASE_IDで指定された値と一致する場合、アクセスは、指定されたJSONのOFFLOAD_TARGETで識別されるリフレッシュ可能クローンにオフロードされます。

たとえば、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で一致するデータベースIDエントリを持つコンシューマからのリクエストを除く)。

たとえば、1つの明示的なOFFLOAD_TARGET/CLOUD_LINK_DATABASE_ID値ペアと1つのANY値に対応する OFFLOAD_TARGETを持つ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. データ・セット・アクセスをオフロードする1つ以上のリフレッシュ可能クローンのOCIDを取得します。リフレッシュ可能クローンOCIDsは、リフレッシュ可能クローンのOracle Cloud Infrastructure Consoleで使用できます。
    ノート

    リフレッシュ可能クローンをオフロード・ターゲットとして表示するには、リフレッシュ可能クローンを作成してから最大10分かかる場合があります。つまり、リフレッシュ可能クローンを作成してから最大10分待ってから、リフレッシュ可能クローンをクラウド・リンクのオフロード登録に使用できるようにする必要があります。
  2. リフレッシュ可能クローンによって提供されるデータを使用して、データ・セットにアクセスする1つ以上のAutonomous DatabaseインスタンスのデータベースIDを取得します。

    リフレッシュ可能クローンからデータセットにアクセスするシステムで、次のコマンドを実行します。

    SELECT DBMS_CLOUD_LINK.GET_DATABASE_ID FROM DUAL:
  3. データ・セットを登録し、offload_targetsパラメータを指定します。

    たとえば、Autonomous DatabaseインスタンスにスキーマCLOUDLINKがある場合、SALES_VIEW_AGGを登録し、データ・セットへのアクセスを提供するリフレッシュ可能クローンを指定できます:

    BEGIN
       DBMS_CLOUD_LINK.REGISTER(
        schema_name     => 'CLOUDLINK',
        schema_object   => 'SALES_VIEW_AGG',
        namespace       => 'REGIONAL_SALES', 
        name            => 'SALES_AGG',
        description     => 'Aggregated regional sales information.',
        scope           => 'MY$TENANCY',
        auth_required   =>  FALSE,
        data_set_owner  =>  'amit@example.com',
        offload_targets => '{
      "OFFLOAD_TARGETS": [
        {
          "CLOUD_LINK_DATABASE_ID": "34xxxx754755680",
          "OFFLOAD_TARGET":
    "ocid1.autonomousdatabase.oc1..xxxxxaaba3pv6wkcr4jqae5f44n2b2m2yt2j6rx32uzr4h25vqstifsfghi"
        }
      ]
    }');
    END;
    /

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

    • schema_name: スキーマ名(オブジェクト所有者)です。

    • schema_object: オブジェクトの名前です。有効なオブジェクトは次のとおりです。

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

      分析ビューやシノニムなどの他のオブジェクトはサポートされていません。
    • namespace: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするための名前として指定するネームスペースです。

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

    • name: クラウド・リンク(クラウド・リンクFQNの1つの部分)を使用してアクセスするために指定する名前です。

    • scope: スコープを指定します。MY$REGIONMY$TENANCYまたはMY$COMPARTMENTのいずれかの変数を使用するか、1つ以上のOCIDsを指定できます。

      詳細は、データ・セットのスコープ、アクセス制御および認可を参照してください。

    • auth_required: スコープ・アクセス制御に加えて、データ・セットにデータベース・レベルの認可が必要かどうかを指定するブール値。これをTRUEに設定すると、データ・セットによって追加の認可ステップが実行されます。詳細は、「認可が必要なデータ・セットの登録」を参照してください。

    • data_set_owner: テキスト値は、データ・セットの責任者またはデータ・セットに関する質問の担当者に関する情報を指定します。たとえば、データ・セット所有者の電子メール・アドレスを指定できます。

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

      データ・セット・コンシューマごとに、次のいずれかが一致して、リフレッシュ可能クローンにリクエストをオフロードできます。

      • 指定されたcloud_link_database_idの値(値がコンシューマのデータベースIDと一致)が一致する場合、アクセスはoffload_targetで指定されたOCIDで識別されるリフレッシュ可能クローンにオフロードされます。

      • ANYキーワードを指定すると、指定したcloud_link_database_idの値と一致しない場合、アクセスは、対応するoffload_targetで指定されたOCIDによってANYエントリで識別されるリフレッシュ可能クローンにオフロードされます。

    詳細は、REGISTERプロシージャを参照してください。

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

読取り専用Autonomous Databaseインスタンスからのクラウド・リンクの使用

データ・セットが読取り専用Autonomous Databaseインスタンスに存在する場合、クラウド・リンクを共有できます。

読取り専用モードのAutonomous Databaseインスタンスからクラウド・リンクを共有するには:
  1. データベース・モードを読取り/書込みモードに変更します。
  2. データベースを読取り/書込みモードで、ステップを実行してデータ・セットを登録します。
    1. データベース・ユーザーに対するクラウド・リンク・アクセス権の付与
    2. データ・セットの登録または登録解除
  3. 1つ以上のデータ・セットを登録した後、データベースを読取り専用モードに変更します。

データ・セットの検索およびクラウド・リンクの使用

クラウド・リンクの読取りアクセス権を付与されたユーザーは、Autonomous Databaseインスタンスで使用可能なデータ・セットを検索し、問合せで登録済データ・セットにアクセスして使用できます。

ADMINユーザーがGRANT_READを実行した後、ユーザーはクラウド・リンクを検索して使用できます。

  1. Autonomous Databaseインスタンスで使用可能なデータ・セットを検索します。

    たとえば、「TREE」という文字列を含むすべてのデータ・セットを検索します。

    DECLARE
       result CLOB DEFAULT NULL;
    BEGIN
       DBMS_CLOUD_LINK.FIND('TREE', result);
        DBMS_OUTPUT.PUT_LINE(result);
    END;
    /
    
    [{"name":"TREE_DATA","namespace":"FOREST","description":"Urban tree data including county, species and height"}]

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

    • search_string: 検索する文字列。検索文字列の大文字と小文字は区別されません。

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

    詳細は、FINDプロシージャを参照してください。

    DBMS_CLOUD_LINK.FINDプロシージャは、クラウド・リンクで使用できるFQNを提供します。この場合、FOREST.TREE_DATAです。

  2. ビューDBA_CLOUD_LINK_ACCESSを使用して、使用可能なデータ・セットをリストします。
    SELECT * FROM DBA_CLOUD_LINK_ACCESS;
    
    NAMESPACE            NAME
    ---------            -------------- 
    FOREST               TREE_DATA 
    REGIONAL_SALES       SALES_AGG
    TRUSTED_COMPARTMENT  SALES
  3. 登録済データ・セットの詳細を確認するには、プロシージャDBMS_CLOUD_LINK.DESCRIBEを使用します。
    SELECT DBMS_CLOUD_LINK.DESCRIBE('FOREST','TREE_DATA') FROM DUAL;
    
    DBMS_CLOUD_LINK.DESCRIBE('FOREST','TREE_DATA')
    ---------------------------------------------------
    Urban tree data including county, species and height
  4. 登録済データ・セットを問合せで使用します。
    SELECT * FROM FOREST.TREE_DATA@cloud$link;
    ノート

    データ・セットを表示してアクセスできるようにするには、データ・セットをDBMS_CLOUD_LINK.REGISTERに登録してから最大10分かかることがあります。

クラウド・リンク・コンシューマのキャッシュの有効化

問合せの結果またはクラウド・リンク・データにアクセスする問合せフラグメントについて、データ・セット・コンシューマでキャッシュを有効にできます。

データ・セット・コンシューマでキャッシュを有効にするには、RESULT_CACHEヒントをSHELFLIFEオプションとともに使用します。SHELFLIFEオプションでは、問合せ結果がキャッシュされる期間(秒)を示す値を指定します。SHELFLIFE間隔が経過すると、キャッシュされた結果は無効としてマークされます。キャッシュされた結果が有効であるかぎり、問合せはコンシューマ・データベースのキャッシュからキャッシュされたデータを取得し、データ・セット所有者のデータベースへのラウンドトリップを回避します。

データ・セットが静的であるか、コンシューマが失効した結果を許容できる場合は、RESULT_CACHEヒントをSHELFLIFEオプションとともに使用します。SHELFLIFEの値により、クラウド・リンク・データ・セット・コンシューマは、キャッシュ内のデータが有効な時間(許容される失効度)を秒単位で制御できます。

問合せ結果が大きく、メモリーに収まらない場合は、RESULT_CACHEヒントをSHELFLIFEオプションおよびTEMPオプションとともに使用して、結果を一時表領域のディスクに書き込むように指定できます。

RESULT_CACHEヒントを使用してクラウド・リンク・データをキャッシュするには:

  1. 問合せで、SHELFLIFEオプションを指定してRESULT_CACHEヒントを指定します。

    次に例を示します。

    SELECT /*+ RESULT_CACHE (SHELFLIFE=120) */ * FROM FOREST.TREE_DATA@cloud$link;

    このRESULT_CACHEは、120のSHELFLIFE値を指定します。これは、結果が120秒間メモリーにキャッシュされることを示します。120秒後、キャッシュされた結果は無効としてマークされます。

    SHELFLIFE値は正整数である必要があります。SHELFLIFEの最大値は4294967295です。

  2. 問合せ結果が大きく、メモリーに収まらない場合は、SHELFLIFEオプションとTEMPオプションの両方を使用して、結果が一時表領域のディスクに書き込まれることを示します。
    SELECT /*+ RESULT_CACHE (TEMP=true SHELFLIFE=360) */ * FROM FOREST.TREE_DATA@cloud$link;

Autonomous Databaseでの結果キャッシュの使用の詳細は、RESULT_CACHE_MODEを参照してください。

SHELFLIFEを使用したRESULT_CACHEの詳細は、RESULT_CACHEヒントを参照してください。

結果キャッシュを管理し、結果キャッシュ内のオブジェクトを無効化するプロシージャの詳細は、DBMS_RESULT_CACHEを参照してください。

データベース・ユーザーのクラウド・リンク・アクセスの取消し

ADMINユーザーは登録を取り消して、ユーザーがリモート・アクセス用のデータ・セットを登録できないようにできます。ADMINユーザーは、登録済データ・セットにアクセスする権限またはデータベース・ユーザーを取り消すこともできます。

  1. ADMINユーザーとして、データ・セットを登録するユーザーの権限を取り消します。

    たとえば、次のとおりです。

    EXEC DBMS_CLOUD_LINK_ADMIN.REVOKE_REGISTER('DB_USER1');

    これにより、ユーザーDB_USER1のデータ・セットを登録する権限が取り消されます。

    DBMS_CLOUD_LINK_ADMIN.REVOKE_REGISTERの実行は、すでに登録されているデータ・セットには影響しません。DBMS_CLOUD_LINK.UNREGISTERを使用して、登録済データ・セットのアクセスを削除します。

    詳細は、REVOKE_REGISTERプロシージャおよびUNREGISTERプロシージャを参照してください。

  2. ADMINユーザーとして、登録済データ・セットへのアクセスを取り消します。

    たとえば、次のとおりです。

    EXEC DBMS_CLOUD_LINK_ADMIN.REVOKE_READ('LWARD');

    これにより、ユーザーLWARDのクラウド・リンク・データ・セットへのアクセスが取り消されます。

    詳細は、REVOKE_READプロシージャを参照してください。

クラウド・リンク情報のモニターおよび表示

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ビュー

どのデータベースにどのデータセットにアクセス権があるかに関する情報を提供します。これは、auth_requiredパラメータがTRUEのデータ・セットに適用されます。

DBA_CLOUD_LINK_PRIVSおよびUSER_CLOUD_LINK_PRIVSビュー

すべてのユーザーまたは現在のユーザーに付与される、クラウド・リンク固有の権限(REGISTERREADまたはAUTHORIZE)に関する情報を提供します。

登録済データ・セットを保護するための仮想プライベート・データベース・ポリシーの定義

登録済データ・セットの仮想プライベート・データベース(VPD)ポリシーを定義することで、特定のリモート・サイトに対してデータ(行)のサブセットのみが表示されるように、きめ細かいクラウド・リンク・アクセス制御を提供できます。

Oracle Virtual Private Database (VPD)は、同じデータ・セットにフィルタを適用することで、ユーザーおよびアプリケーションの行レベルでデータ・アクセスを動的に制御できるセキュリティ機能です。

クラウド・リンクの読取りアクセス権を付与されたユーザーは、データ・セットの登録時に指定したスコープ内にある場合、登録済データ・セットにアクセスして使用できます。また、データ・セットに対して追加の認可必須パラメータが設定されている場合、アクセスは認可済データベースからのものです。各リモート・アクセスは、(データ・セットが登録されたデータベース上の)登録済データ・セットにアクセスするリモートAutonomous Databaseインスタンスのコンテキストで実行されます。

リモート・システムで関数DBMS_CLOUD_LINK.GET_DATABASE_IDを使用して、データベースの一意のIDを取得します。データ・セットを登録したデータベースでVPDポリシーを定義することで、リモート・データベースの識別子をSYS_CONTEXTルールとして使用して、より詳細な制御を提供できるようになりました。登録されたデータ・セットにアクセスするリモート・データベースのルールを定義し、クラウド・リンク・スコープを指定することで、可能な範囲を超えるアクセスを制限できます。

REGIONAL_SALES.SALES_AGGがテナンシ・レベルで使用可能になる例を考えてみます。1つの特定のデータベースを除くすべてのデータベースへのアクセスを制限し、指定したデータベースへのフル・アクセスのみを許可する場合は、登録済データ・セットにVPDポリシーを追加できます。

たとえば:

  1. フル・アクセスを提供するAutonomous Databaseインスタンスの一意のクラウド・リンク・データベースIDを取得します。
    DECLARE
         DB_ID NUMBER;
     BEGIN
         DB_ID := DBMS_CLOUD_LINK.GET_DATABASE_ID;
         DBMS_OUTPUT.PUT_LINE('Database ID:' || DB_ID);
     END;
     /
  2. ステップ1で問題となっているデータベースで識別子を取得した特定のデータベースへのフル・アクセスのみを許可して、データ・セットを登録したデータベースにVPDポリシーを作成します。
    CREATE OR REPLACE FUNCTION vpd_policy_sales(
         owner IN VARCHAR2, 
         object IN VARCHAR2)
         RETURN VARCHAR2 IS
    BEGIN
      IF SYS_CONTEXT('USERENV', 'CLOUD_LINK_DATABASE_ID')  <> '12121212163948244901' THEN
        RETURN 'time_id >= trunc(sysdate,''year'')';  
      ELSE
        RETURN '';
      END IF;
    END;
    /

    詳細は、DBMS_RLSを参照してください。

  3. 登録済データ・セットのVPDポリシーを登録して、ステップ1で識別したデータベースのみへのフル・アクセスを制限します。
    
    BEGIN
      DBMS_RLS.ADD_POLICY(object_schema => 'CLOUDLINK',
                object_name => 'SALES_VIEW_AGG',
                policy_name => 'THIS_YEAR',
                function_schema => 'ADMIN',
                policy_function => 'VPD_POLICY_SALES',
                statement_types => 'SELECT',
                policy_type => DBMS_RLS.SHARED_CONTEXT_SENSITIVE);
    END;
    /

    詳細は、DBMS_RLSを参照してください。

クラウド・リンクに関するノート

クラウド・リンクの使用に関するノートおよび制限事項を示します。

  • 登録できるデータ・セットの数には4096の制限があります。

    各Autonomous Databaseインスタンスは、4096個以下のデータ・セットを登録できます。この制限は、ECPUの数(データベースがOCPUを使用している場合のOCPU)やインスタンスのストレージ・サイズに関係なく、すべてのAutonomous Databaseインスタンスに適用されます。制限は固定値であり、ECPU数を大きい値に設定すると、より多くのデータ・セットを登録できません。

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

  • データ・セットを登録したり、リモート・データ・セットを表示してアクセスするには、データ・セットを登録または読取りするための適切な権限が付与されている必要があります。これはADMINにも当てはまりますが、ADMINはこの権限を自分に付与できます。

  • DBMS_CLOUD_LINK.REGISTERを使用するには、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サービスが使用され、これは変更できません。リモート接続はユーザー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インスタンスのリフレッシュ可能クローンの作成を参照してください。