OCIチュートリアル
トップページへ戻る

404 : クラウド・リンクによるデータ共有をしてみよう

はじめに

クラウド・リンクを活用すると、クラウドベースの方法でAutonomous Database間のデータ共有を行うことができます。 本機能は、Autonomous Database間のネットワーク的な接続を設定することなく、データを共有するスコープとしてリージョン、テナント、コンパートメント、特定のAutonomous Databaseを指定して、データの読み取り専用リモートアクセスを提供することができます。

本チュートリアルでは、同じテナント内にある2つのAutonomous Database間でのクラウド・リンクによるデータ共有を行います。

画面ショット1-1

目次 :

前提条件


所要時間 : 約30分


1. ユーザー作成と権限の付与

  1. SQL*Plusからadminユーザーとしてatp01に接続します。

    sqlplus admin/Welcome12345#@atp01_low
    
  2. クラウド・リンクの登録ユーザーであるcloud_links_register_userを作成し、必要な権限を付与します。

    CREATE USER cloud_links_register_user IDENTIFIED BY Welcome12345#;
    
    GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO cloud_links_register_user;
    
    GRANT EXECUTE ON DBMS_CLOUD_LINK TO cloud_links_register_user;
    
  3. DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTERプロシージャを使用して、cloud_links_register_userユーザーに、クラウド・リンクにオブジェクトを登録するための権限を付与します。

    BEGIN
    DBMS_CLOUD_LINK_ADMIN.GRANT_REGISTER(
        username => 'CLOUD_LINKS_REGISTER_USER', -- ユーザー名
        scope    => 'MY$TENANCY'); -- スコープ
    END;
    /
    

    補足

    scopeのパラメータには、ユーザーがどのスコープにアクセスできるようにするかを以下の値のいずれかで指定します。

    • MY$REGION:ユーザーは、データセットを登録したAutonomous Databseと同じリージョン内の別のテナンシにもリモートデータアクセスを許可することができます。
    • MY$TENANCY:ユーザーは、データセットを登録したAutonomous Databseと同じテナント内の全てのリソースにリモートデータアクセスを許可することができます。
    • MY$COMPARTMENT:ユーザーは、データセットを登録したAutonomous Databseと同じコンパートメント内の全てのリソースにリモートデータアクセスを許可することができます。
  4. 次にクラウド・リンクの参照ユーザーであるcloud_links_access_userを作成し、下記のように必要な権限を付与します。

    CREATE USER cloud_links_access_user IDENTIFIED BY Welcome12345#;
    
    GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO cloud_links_access_user;
    
     GRANT EXECUTE ON DBMS_CLOUD_LINK TO cloud_links_access_user;
    
  5. DBMS_CLOUD_LINK_ADMIN.GRANT_READプロシージャを使用して、cloud_links_access_userユーザーに、クラウド・リンクに登録されているデータセットを参照するための権限を付与します。

    EXEC DBMS_CLOUD_LINK_ADMIN.GRANT_READ('CLOUD_LINKS_ACCESS_USER');
    
  6. SQL*Plusを終了します。

    exit
    

2. 検証用の表の作成とクラウド・リンクへの表の登録

  1. cloud_links_register_userユーザーとしてatp01に接続します。

    sqlplus cloud_links_register_user/Welcome12345#@atp01_low
    
  2. 検証用のdept表を作成し、データをINSERTします。

    CREATE TABLE dept (
      deptno NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
      dname VARCHAR2(14),
      loc VARCHAR2(13)
    );
    
    INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');
    INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
    INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');
    INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');
    
    COMMIT;
    
  3. DBMS_CLOUD_LINK.REGISTERプロシージャを使用して、dept表をクラウド・リンクのネームスペース「COMPANY」に「DEPARTMENT」という名前のデータセットとして登録し、テナント内のデータベースにアクセスを許可します。

    BEGIN
     DBMS_CLOUD_LINK.REGISTER(
        schema_name    => 'CLOUD_LINKS_REGISTER_USER', -- ユーザー名
        schema_object  => 'DEPT', -- オブジェクト名
        namespace      => 'COMPANY', -- データセットを登録するネームスペース
        name           => 'DEPARTMENT', -- データセット名
        description    => 'Department information.', -- データセットの説明
        scope          => 'MY$TENANCY' -- データセットを共有するスコープ
      );
    END;
    /
    

    補足

    scopeには、登録するデータセットをどの範囲に共有するかを以下の値のいずれかで指定します。複数の値をカンマ区切りで指定することも可能です。

    • Database OCID:OCIDで指定した特定のAutonomous Databaseにデータセットへのアクセスを許可
    • Compartment OCID:OCIDで指定した特定のコンパートメント内のデータベースにデータセットへのアクセスを許可
    • Tenancy OCID:OCIDで指定した特定のテナント内のデータベースにデータセットへのアクセスを許可
    • MY$REGION:データセットの所有者と同じリージョン内のデータベースにデータセットへのアクセスを許可
    • MY$TENANCY:データセットの所有者と同じテナント内のデータベースにデータセットへのアクセスを許可
    • MY$COMPARTMENT:データセットの所有者と同じコンパートメント内のデータベースにデータセットへのアクセスを許可
  4. SQL*Plusを終了します。

    exit
    

3. クラウド・リンクに登録されているデータセットの参照

前章では、データセットをクラウド・リンクに登録しました。続いて、 cloud_links_access_userユーザーから、データセットを参照していきます。

  1. cloud_links_access_userユーザーとしてatp01に接続します。
    sqlplus cloud_links_access_user/Welcome12345#@atp01_low
    
  2. DBMS_CLOUD_LINK.FINDプロシージャを使用して、 “DEPARTMENT"を含むデータセットを確認します。
    set serveroutput on
    DECLARE
      result CLOB DEFAULT NULL;
    BEGIN
      DBMS_CLOUD_LINK.FIND('DEPARTMENT', result);
      DBMS_OUTPUT.PUT_LINE(result);
    END;
    /
    
  3. 以下のように出力されます。ネームスペースCOMPANY内にDEPARTMENTという名前のデータセットが登録されていることが確認できます。
    [{"name":"DEPARTMENT","namespace":"COMPANY","description":"Department information."}]
    
  4. データセットの内容を確認します。 クラウド・リンクに登録されているデータセットを参照するには、SELECT文のFROM句に ネームスペース名.データセット名@￰cloud$link を指定します。
    SELECT * FROM COMPANY.DEPARTMENT@cloud$link;
    
  5. 以下のような結果が出力されます。
         DEPTNO DNAME          LOC
     ---------- -------------- -------------
             10 ACCOUNTING     NEW YORK
             20 RESEARCH       DALLAS
             30 SALES          CHICAGO
             40 OPERATIONS     BOSTON
    

4. 異なるAutonomous Databaseからクラウド・リンクに登録されているデータセットを参照

データセットの登録を行なったAutonomous Databaseとは別のAutonomous Databaseから、クラウド・リンクを使用してデータを参照してみます。この章を行うにあたり、インスタンスがもう1つ必要となります。

  1. adminユーザーとしてもう1つのADBインスタンス(atp02)に接続します。

    sqlplus admin/Welcome12345#@atp02_low
    
  2. クラウド・リンクにアクセスするためのcloud_links_remote_access_userユーザーを作成し、必要な権限を付与します。

     CREATE USER cloud_links_remote_access_user IDENTIFIED BY Welcome12345#;
    
    GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO cloud_links_remote_access_user;
    
    GRANT EXECUTE ON DBMS_CLOUD_LINK TO cloud_links_remote_access_user;
    
  3. DBMS_CLOUD_LINK_ADMIN.GRANT_READプロシージャを使用して、cloud_links_remote_access_userユーザーに、クラウド・リンクに登録されているデータセットを参照するための権限を付与します。

    EXEC DBMS_CLOUD_LINK_ADMIN.GRANT_READ('CLOUD_LINKS_REMOTE_ACCESS_USER');
    
  4. SQL*Plusを終了します。

    eixt
    
  5. cloud_links_remote_access_userユーザーとしてatp02に接続します。

    sqlplus cloud_links_remote_access_user/Welcome12345#@atp02_low
    
  6. DBMS_CLOUD_LINK.FINDプロシージャを使用して、データセットを確認します。

    set serveroutput on
    DECLARE
      result CLOB DEFAULT NULL;
    BEGIN
      DBMS_CLOUD_LINK.FIND('DEPARTMENT', result);
      DBMS_OUTPUT.PUT_LINE(result);
    END;
    /
    
  7. 以下のように出力されます。

    [{"name":"DEPARTMENT","namespace":"COMPANY","description":"Department information."}]
    
  8. データセットを登録したAutonomous Databaseとは別のAutonomous Databaseからも、データセットDEPARTMENTが確認できました。

  9. データセットの内容を確認します。

    SELECT * FROM COMPANY.DEPARTMENT@cloud$link;
    
  10. 以下のように出力されます。

            DEPTNO DNAME          LOC
    ---------- -------------- -------------
            10 ACCOUNTING     NEW YORK
            20 RESEARCH       DALLAS
            30 SALES          CHICAGO
            40 OPERATIONS     BOSTON
    

    データセットのデータを参照することができました。


注意点

尚、クラウド・リンクを使用する際の注意点はマニュアル{:target="_blank”}をご参照ください。

おわりに

ここではAutonomous Databaseのクラウド・リンクについて、紹介しました。 クラウド・リンクを使用すると、データの読み取り専用リモートアクセスを提供することができます。ぜひ活用してみてください。


参考資料


以上でこの章は終了です。次の章にお進みください。

ページトップへ戻る