プライベート・エンドポイントでのAutonomous DatabaseからOracle Databaseへのデータベース・リンクの作成

Autonomous Databaseから、プライベート・エンドポイントにあるターゲットOracle Databaseへのデータベース・リンクを作成できます。

ノート:

Autonomous Databaseからプライベート・エンドポイントにあるターゲットOracleデータベースへのデータベース・リンクは、商用リージョンおよびUS Governmentリージョンでのみサポートされます。

この機能は、すべての商用リージョンでデフォルトで有効になっています。

この機能は、新しくプロビジョニングされたデータベースに対してUS Governmentリージョンでデフォルトで有効になっています。

プライベート・エンドポイントにある既存のUS Governmentデータベースでは、Autonomous DatabaseからUS Governmentリージョン内のターゲットへのデータベース・リンクを作成する場合、Oracle Cloud Supportでサービス・リクエストを提出し、Governmentリージョンのデータベース・リンク機能でプライベート・エンドポイントを有効にするようにリクエストできます。

US Governmentリージョンには次が含まれます:

ターゲットOracleデータベースのタイプと構成に応じて:

Autonomous Databaseからプライベート・エンドポイントにあるOracle Databaseへのデータベース・リンクの前提条件

Autonomous Databaseからプライベート・エンドポイントにあるターゲットOracleデータベースにデータベース・リンクを作成するための前提条件をリストします。

プライベート・エンドポイントにあるターゲットOracle Databaseへのデータベース・リンクを作成するには:

  • ターゲット・データベースは、ソース・データベースのOracle Cloud Infrastructure VCNからアクセスできる必要があります。たとえば、次の場合にターゲット・データベースに接続できます:

    • ターゲット・データベースがプライベート・エンドポイントにあります。

    • ソース・データベースとターゲット・データベースの両方が、同じOracle Cloud Infrastructure VCN内にあります。

    • ソース・データベースとターゲット・データベースが、ペアになっている異なるOracle Cloud Infrastructure VCN内にあります。

    • ターゲット・データベースが、FastConnectまたはVPNを使用してソース・データベースのOracle Cloud Infrastructure VCNに接続されているオンプレミス・データベースです。

  • ターゲット・データベースを指定するには、hostnameパラメータまたはrac_hostnamesパラメータを使用する2つのオプションがあります。

    • プライベート・エンドポイント上のターゲットの場合、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKでは、hostnameパラメータを使用した単一ホスト名の指定がサポートされています。プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません(ターゲットがパブリック・エンドポイント上にある場合、CREATE_DATABASE_LINKはIPアドレス、SCAN IPまたはSCANホスト名の使用をサポートします)。

    • ターゲットがOracle RACデータベースの場合、rac_hostnamesパラメータを使用して、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで1つ以上のホスト名を指定します。これにより、Oracle RACの高可用性機能を利用できます。rac_hostnames値でのIPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません。

      rac_hostnamesパラメータでホスト名のリストを指定すると、CREATE_DATABASE_LINKは、指定されたすべてのホスト名を接続文字列のアドレスとして使用します。指定されたホストのいずれかがターゲットのOracle RACデータベースで使用できない場合、Autonomous Databaseは、リストから別のホスト名を使用して自動的に接続を試みます。
  • プライベート・エンドポイントに対して、次のイングレスおよびエグレス・ルールを定義する必要があります:

    • ターゲット・データベースのIPアドレスおよびポート番号へのTCP経由のトラフィックが許可されるように、ソース・データベースのサブネット・セキュリティ・リストまたはネットワーク・セキュリティ・グループにエグレス・ルールを定義します。

    • ソース・データベースのIPアドレスから宛先ポートへのTCP経由のトラフィックが許可されるように、ターゲット・データベースのサブネット・セキュリティ・リストまたはネットワーク・セキュリティ・グループにイングレス・ルールを定義します。

Walletを使用しないプライベート・エンドポイントでのOracle Databasesへのデータベース・リンクの作成

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、プライベート・エンドポイントにあるターゲットOracleデータベースにAutonomous Databaseからデータベース・リンクを作成し、ウォレット(TCP)なしで接続します。

ノート:

このオプションは、プライベート・エンドポイント上にあり、SSL/TCPSが構成されていないターゲットOracleデータベース用です。

必要に応じて、前提条件ステップを実行します。詳細は、Autonomous Databaseからプライベート・エンドポイントにあるOracle Databaseへのデータベース・リンクの前提条件を参照してください。

ウォレットを使用しないセキュアなTCP接続を使用して、プライベート・エンドポイントにあるターゲット・データベースへのデータベース・リンクを作成するには:

  1. Autonomous Databaseで、ターゲット・データベースにアクセスするための資格証明を作成します。DBMS_CLOUD.CREATE_CREDENTIALで指定するusernameおよびpasswordは、データベース・リンク内で使用されるターゲット・データベースの資格証明です(ターゲット・データベースはVCNを介してアクセスされます)。

    たとえば次のようにします。

    BEGIN
         DBMS_CLOUD.CREATE_CREDENTIAL(
             credential_name => 'PRIVATE_ENDPOINT_CRED',
             username => 'NICK',
             password => 'password'
             );
    END;
    /

    usernameパラメータの文字はすべて大文字である必要があります。

    この操作によって、資格証明が暗号化された形式でデータベースに格納されます。 資格証明には任意の名前を使用できます。

  2. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、ターゲット・データベースへのデータベース・リンクを作成します。

    たとえば次のようにします。

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name => 'PRIVATE_ENDPOINT_LINK', 
             hostname => 'exampleHostname',
             port => '1522',
             service_name => 'exampleServiceName',
             ssl_server_cert_dn => NULL,
             credential_name => 'PRIVATE_ENDPOINT_CRED',
             directory_name => NULL,
             private_target => TRUE);
    END;
    /

    プライベート・エンドポイント上のターゲットの場合、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKでは、hostnameパラメータを使用した単一ホスト名の指定がサポートされています。プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません(ターゲットがパブリック・エンドポイント上にある場合、CREATE_DATABASE_LINKはIPアドレス、SCAN IPまたはSCANホスト名の使用をサポートします)。

    ターゲットがOracle RACデータベースの場合、rac_hostnamesパラメータを使用して、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで1つ以上のホスト名を指定します。これにより、Oracle RACの高可用性機能を利用できます。rac_hostnames値でのIPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません。

    たとえば、ターゲットのOracle RACデータベースでは、rac_hostnamesパラメータを使用します。

    BEGIN
         DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
             db_link_name => 'PRIVATE_ENDPOINT_LINK', 
             rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com", 
                                "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com", 
                                "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]', 
             port => '1522',
             service_name => 'exampleServiceName',
             ssl_server_cert_dn => NULL,
             credential_name => 'PRIVATE_ENDPOINT_CRED',
             directory_name => NULL,
             private_target => TRUE);
    END;
    /

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKは、hostnameまたはrac_hostnamesパラメータの値localhostをサポートしていません。

    ADMIN以外のユーザーには、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを実行するための権限が必要です。

    例に示すように、ウォレットなしのセキュアなTCP接続を使用して、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKでプライベート・エンドポイントにあるターゲット・データベースへのデータベース・リンクを作成するには、次のすべてが必要です:

    • directory_nameパラメータはNULLである必要があります。

    • ssl_server_cert_dnパラメータはNULLである必要があります。

    • private_targetパラメータはTRUEである必要があります。

  3. 作成したデータベース・リンクを使用して、ターゲット・データベースのデータにアクセスします。

    たとえば次のようにします。

    SELECT * FROM employees@PRIVATE_ENDPOINT_LINK;
                  

ノート:

ステップ1で作成した資格証明(Oracle Databaseの資格証明)では、ターゲット・ユーザーのパスワードが変更された場合、ターゲット・ユーザーの資格証明を含む資格証明を次のように更新できます:
BEGIN
     DBMS_CLOUD.UPDATE_CREDENTIAL (
         credential_name => 'DB_LINK_CRED',
         attribute => 'PASSWORD',
         value => 'password');
END;
/

ここで、passwordは新しいパスワードです。

この操作の後、この資格証明を使用する既存のデータベース・リンクは、データベース・リンクを削除して再作成しなくても引き続き機能します。

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

Wallet (mTLS)を使用したプライベート・エンドポイントでのAutonomous DatabaseからOracle Databasesへのデータベース・リンクの作成

Autonomous Databaseから、プライベート・エンドポイントにあるターゲットOracleデータベースへのデータベース・リンクを作成できます。

ノート:

このオプションは、SSL/TCPSが構成され、プライベート・エンドポイント上にあるターゲットOracleデータベース用です。

ターゲットOracle DatabaseにSSL/TCPSが構成されていない場合、2つのオプションがあります:

必要に応じて、前提条件ステップを実行します。詳細は、Autonomous Databaseからプライベート・エンドポイントにあるOracle Databaseへのデータベース・リンクの前提条件を参照してください。

SSL付きTCP/IP (TCPS)認証を使用して、プライベート・エンドポイントにあるターゲットOracleデータベースへのデータベース・リンクを作成するには:

  1. ターゲット・データベースの証明書を含むターゲット・データベース・ウォレットcwallet.ssoをオブジェクト・ストアにコピーします。

    ノート:

    ウォレット・ファイルは、データベースのユーザーIDおよびパスワードと組み合せて、ターゲットのOracle Database内のデータへのアクセスを可能にします。ウォレット・ファイルは安全な場所に保存してください。ウォレット・ファイルは、権限のあるユーザーとのみ共有してください。
  2. cwallet.ssoを格納するオブジェクト・ストアにアクセスするための資格証明を作成します。様々なオブジェクト・ストレージ・サービスのusernameおよびpasswordパラメータの詳細は、CREATE_CREDENTIALプロシージャを参照してください。
  3. ウォレット・ファイルcwallet.ssoのディレクトリをAutonomous Databaseに作成します。

    たとえば次のようにします。

    CREATE DIRECTORY wallet_dir AS 'directory_path_of_your_choice';
                  

    ディレクトリの作成の詳細は、Autonomous Databaseのディレクトリの作成を参照してください。

  4. DBMS_CLOUD.GET_OBJECTを使用して、前のステップで作成したディレクトリWALLET_DIRにターゲット・データベース・ウォレットをアップロードします。

    たとえば次のようにします。

    BEGIN 
        DBMS_CLOUD.GET_OBJECT(
            credential_name => 'DEF_CRED_NAME',
            object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso',
            directory_name => 'WALLET_DIR'); 
    END;
    /

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

    ノート:

    このステップで使用するcredential_nameは、オブジェクト・ストアの資格証明です。次のステップでは、ターゲット・データベースにアクセスするための資格証明を作成します。
  5. Autonomous Databaseで、ターゲット・データベースにアクセスするための資格証明を作成します。DBMS_CLOUD.CREATE_CREDENTIALで指定するusernameおよびpasswordは、データベース・リンク内で使用されるターゲット・データベースの資格証明です(ターゲット・データベースはVCNを介してアクセスされます)。

    ノート:

    credential_nameパラメータの指定は必須です。

    たとえば次のようにします。

    BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
          credential_name => 'DB_LINK_CRED',
          username => 'NICK',
          password => 'password');
    END;
    /

    usernameパラメータの文字はすべて大文字である必要があります。

    この操作によって、資格証明が暗号化された形式でデータベースに格納されます。 資格証明には任意の名前を使用できます。

  6. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、ターゲット・データベースへのデータベース・リンクを作成します。

    たとえば次のようにします。

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'PEDBLINK1', 
            hostname => 'example1.adb.ap-osaka-1.oraclecloud.com',
            port => '1522',
            service_name => 'example_high.adb.oraclecloud.com',
            ssl_server_cert_dn => 'ssl_server_cert_dn',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'WALLET_DIR',
            private_target => TRUE);
    END;
    /

    プライベート・エンドポイント上のターゲットの場合、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKでは、hostnameパラメータを使用した単一ホスト名の指定がサポートされています。プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません(ターゲットがパブリック・エンドポイント上にある場合、CREATE_DATABASE_LINKはIPアドレス、SCAN IPまたはSCANホスト名の使用をサポートします)。

    ターゲットがOracle RACデータベースの場合、rac_hostnamesパラメータを使用して、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで1つ以上のホスト名を指定します。これにより、Oracle RACの高可用性機能を利用できます。rac_hostnames値でのIPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません。

    たとえば、ターゲットのOracle RACデータベースでは、rac_hostnamesパラメータを使用します。

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'PEDBLINK1', 
            rac_hostnames => '["sales1-svr1.example.adb.us-ashburn-1.oraclecloud.com",
                               "sales1-svr2.example.adb.us-ashburn-1.oraclecloud.com",
                               "sales1-svr3.example.adb.us-ashburn-1.oraclecloud.com"]',
            port => '1522',
            service_name => 'example_high.adb.oraclecloud.com',
            ssl_server_cert_dn => 'ssl_server_cert_dn',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'WALLET_DIR',
            private_target => TRUE);
    END;
    /

    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKは、hostnameまたはrac_hostnamesパラメータの値localhostをサポートしていません。

    ADMIN以外のユーザーには、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを実行するための権限が必要です。

  7. 作成したデータベース・リンクを使用して、ターゲット・データベースのデータにアクセスします。

    たとえば次のようにします。

    SELECT * FROM employees@PEDBLINK1;
                  

ノート:

ステップ5で作成した資格証明(Oracle Databaseの資格証明)では、ターゲット・ユーザーのパスワードが変更された場合、ターゲット・ユーザーの資格証明を含む資格証明を次のように更新できます:
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name => 'DB_LINK_CRED',
        attribute => 'PASSWORD',
        value => 'password');
END;
/

ここで、passwordは新しいパスワードです。

この操作の後、この資格証明を使用する既存のデータベース・リンクは、データベース・リンクを削除して再作成しなくても引き続き機能します。

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

ターゲットOracle Databaseでのデータベース・リンクに関するノート

ターゲットOracleデータベースへのデータベース・リンクの作成に関するノートを提供します(ターゲットがAutonomous Databaseではない場合)。

他のOracleデータベースへのデータベース・リンクに関するノート:

  • データベース・リンクで使用するウォレット・ファイルは、ディレクトリごとに1つのみ有効です。ウォレット・ファイル用に選択したディレクトリ(DBLINK_WALLET_DIRなど)に一度にアップロードできるのは1つのcwallet.ssoのみです。つまり、DBLINK_WALLET_DIRcwallet.ssoでは、ディレクトリ内のウォレットが有効なデータベースへのデータベース・リンクのみを作成できます。複数のcwallet.ssoファイルをデータベース・リンクで使用するには、追加のディレクトリを作成し、各cwallet.ssoを異なるディレクトリに配置する必要があります。DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用してデータベース・リンクを作成する場合は、directory_nameパラメータでウォレットを含むディレクトリを指定します。

    ディレクトリの作成の詳細は、Autonomous Databaseのディレクトリの作成を参照してください。

  • 別のOracle Databaseへのデータベース・リンクでサポートされるターゲットOracleデータベース・バージョンは、19c、12.2.0および12.1.0です。

  • Autonomous DatabaseではSEC_CASE_SENSITIVE_LOGONパラメータがtrueに設定され、この値は変更できません。ターゲット・データベースがAutonomous Databaseでない場合は、ターゲット・データベースで SEC_CASE_SENSITIVE_LOGONパラメータをtrueに設定する必要があります。ターゲット・データベースでSEC_CASE_SENSITIVE_LOGONfalseに設定されている場合、エラーORA-28040: No matching authentication protocolが発生します。

  • データベース・リンクをリストするには、ALL_DB_LINKSビューを使用します。詳細は、『Oracle Database 19cデータベース・リファレンス』ALL_DB_LINKSまたは『Oracle Database 23aiデータベース・リファレンス』を参照してください。

  • ウォレット・ファイルは、データベースのユーザーIDおよびパスワードと組み合せて、ターゲットのOracle Database内のデータへのアクセスを可能にします。ウォレット・ファイルは安全な場所に保存してください。ウォレット・ファイルは、権限のあるユーザーとのみ共有してください。

  • Autonomous Databaseインスタンスがプライベート・エンドポイント上にある場合、ターゲット・データベースを指定する2つのオプションがあります: hostnameパラメータまたはrac_hostnamesパラメータのいずれかを使用します:

    • プライベート・エンドポイント上のターゲットの場合、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKでは、hostnameパラメータを使用した単一ホスト名の指定がサポートされています。プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません(ターゲットがパブリック・エンドポイント上にある場合、CREATE_DATABASE_LINKはIPアドレス、SCAN IPまたはSCANホスト名の使用をサポートします)。

    • ターゲットがOracle RACデータベースの場合、rac_hostnamesパラメータを使用して、DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKで1つ以上のホスト名を指定します。これにより、Oracle RACの高可用性機能を利用できます。rac_hostnames値でのIPアドレス、SCAN IPまたはSCANホスト名の使用はサポートされていません。

      rac_hostnamesパラメータでホスト名のリストを指定すると、CREATE_DATABASE_LINKは、指定されたすべてのホスト名を接続文字列のアドレスとして使用します。指定されたホストのいずれかがターゲットのOracle RACデータベースで使用できない場合、Autonomous Databaseは、リストから別のホスト名を使用して自動的に接続を試みます。
    • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKは、hostnameまたはrac_hostnamesパラメータの値localhostをサポートしていません。