プライベート・エンドポイントにあるOracle以外のデータベースへの顧客管理の異種間接続によるデータベース・リンクの作成

専用Exadataインフラストラクチャ上のAutonomous DatabaseからOracle Database Gatewayへのデータベース・リンクを作成して、プライベート・エンドポイントにあるOracle以外のデータベースにアクセスできます。

Oracle Database Gatewayは、Oracle以外の特定システムへのアクセス用に設計されたゲートウェイです。Oracle Database Gatewayを使用すると、データの場所や格納方法を知らなくても、分散データベース・システム上のあらゆる場所にあるデータにアクセスできます。Oracle Database Gatewayを使用してAutonomous Databaseでデータベース・リンクを使用すると、異種環境がサポートされ、Oracle以外のシステムのデータにアクセスするようにアプリケーションをカスタマイズする必要がなくなります。

ノート:

プライベート・エンドポイント上のOracle以外のデータベースへの顧客管理の異機種間接続を使用したデータベース・リンクの作成は、バージョン19.25以上(19c)および23.6以上(23ai)でのみサポートされています。

前提条件

パブリック・エンドポイントでAutonomous Databaseインスタンスのデータベース・リンクを使用するには、次を実行します:
  1. Oracle以外のデータベースにアクセスするようにOracle Database Gatewayを構成します。詳細は、Oracle Database 19c Database Heterogeneous Connectivityユーザーズ・ガイドOracle DatabaseゲートウェイまたはOracle Database 23ai Database Heterogeneous Connectivityユーザーズ・ガイドを参照してください。

    接続先のデータベースによっては、対応する『Installation and Configuration Guide』および『Gateway User's Guide』を参照してください。

    たとえば、Oracle Database Gateway for SQL Serverの場合は、次を参照してください:

  2. Oracle Database Gatewayで受信リクエストを処理するようにOracle Net Listenerを構成します。

  3. Oracle Database Gatewayで自己署名ウォレットを作成します。

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

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

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

    • The source database and the target database are in different Oracle Cloud Infrastructure VCNs that are paired.

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

  • プライベート・エンドポイントに対して、次のイングレスおよびエグレス・ルールを定義する必要があります:

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

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

プライベート・エンドポイント上のOracle Databases以外への顧客管理の異機種間接続(ウォレットなし)

Autonomous DatabaseからOracle Database Gatewayへのデータベース・リンクを作成して、ウォレット(TCPS)を使用して、またはウォレット(TLS)なしでプライベート・エンドポイントにあるOracle以外のデータベースにアクセスできます。この項では、ウォレットを使用しないデータベース・リンクの作成について説明します。

データベース・リンクおよびTLS接続を使用して、プライベート・エンドポイント上のAutonomous Databaseインスタンスからターゲット・ゲートウェイへのデータベース・リンクを作成するには、次を実行します:
  1. Autonomous Databaseで、ターゲット・データベースにアクセスするための資格証明を作成します。DBMS_CLOUD.CREATE_CREDENTIALで指定するユーザー名とパスワードは、データベース・リンク内で使用されるターゲット・データベースの資格証明です(ターゲット・データベースはOracle Database Gatewayを介してアクセスされます)。
    たとえば次のようにします。
    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password'
        );
    END;/

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

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

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

  2. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、ターゲット・ゲートウェイへのデータベース・リンクを作成します。
    たとえば次のようにします。
    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name =>       'SALESLINK',
            hostname =>           'example.com',
            port =>               '1522',
            service_name =>       'example_service_name',
            ssl_server_cert_dn => 'ssl_server_cert_dn',
            credential_name =>    'DB_LINK_CRED',
            directory_name =>      NULL,
            gateway_link =>        TRUE,
            private_target =>      TRUE,
            gateway_params =>      NULL
        );
    END;/

    接続がTCPベースのデータベース・リンク(ウォレットなし)として作成されている場合、ssl_server_cert_dnパラメータはオプションです。

    directory_nameNULLの場合、接続はTCPベースのデータベース・リンク(ウォレットなし)として作成されます。

    Oracle Database以外のターゲットがプライベート・エンドポイント上にある場合(つまり、データベース・リンクがVCN DNSサーバーで解決する必要があるホスト名にアクセスする場合)、private_targetパラメータをTRUEに設定する必要があります。private_targetTRUEの場合、hostnameパラメータは単一のホスト名である必要があります(プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名はサポートされていません)。

    gateway_linkTRUEで、gateway_paramsNULLの場合、データベース・リンクが顧客管理Oracleゲートウェイへのものであることを示します。

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

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

  3. 作成したデータベース・リンクを使用して、ターゲット・ゲートウェイのデータにアクセスします。
    たとえば次のようにします。
    SELECT * FROM employees@SALESLINK;
ステップ1で作成した資格証明(Oracle Database Gatewayの資格証明)では、ターゲット・ユーザーのパスワードが変更された場合、ターゲット・ユーザーの資格証明を含む資格証明を次のように更新できます:
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name =>'DB_LINK_CRED',
        attribute =>'PASSWORD',
        value=>'password'
    );
END;
/

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

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

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

プライベート・エンドポイント上のOracle Databases以外への顧客管理の異機種間接続(ウォレットを使用)

Autonomous DatabaseからOracle Database Gatewayへのデータベース・リンクを作成して、ウォレット(TCPS)を使用して、またはウォレット(TLS)なしでプライベート・エンドポイントにあるOracle以外のデータベースにアクセスできます。この項では、ウォレットを使用したデータベース・リンクの作成について説明します。

プライベート・エンドポイントのAutonomous Databaseインスタンスからターゲット・ゲートウェイへのデータベース・リンクを作成し、ウォレットを使用して接続するには、次を実行します:
  1. Oracle Database Gatewayの証明書を含むターゲット・ゲートウェイのセルフサービス・ウォレット(cwallet.ssoなど)をオブジェクト・ストアにコピーします。
    ウォレット・ファイルをデータベースのユーザーIDおよびパスワードとともに使用すると、ターゲット・ゲートウェイを介して使用可能なデータにアクセスできます。ウォレット・ファイルは安全な場所に保存してください。ウォレット・ファイルは、権限のあるユーザーとのみ共有してください。
  2. Autonomous Databaseで、cwallet.ssoを格納するオブジェクト・ストアにアクセスするための資格証明を作成します。
    様々なオブジェクト・ストレージ・サービスのユーザー名およびパスワード・パラメータの詳細は、CREATE_CREDENTIALプロシージャを参照してください。
  3. ウォレット・ファイルcwallet.ssoのディレクトリをAutonomous Databaseに作成します。
    たとえば次のようにします。
    CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
    ディレクトリの作成の詳細は、「Autonomous Databaseのディレクトリの作成」を参照してください。
  4. DBMS_CLOUD.GET_OBJECTを使用して、前のステップで作成したディレクトリDBLINK_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 =>'DBLINK_WALLET_DIR'
        ); 
    END;
    /

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

    ノート:

    このステップで使用するcredential_nameは、オブジェクト・ストアの資格証明です。次のステップでは、ターゲット・ゲートウェイにアクセスするための資格証明を作成します。
  5. Autonomous Databaseで、ターゲット・データベースにアクセスするための資格証明を作成します。DBMS_CLOUD.CREATE_CREDENTIALで指定するユーザー名とパスワードは、データベース・リンク内で使用されるターゲット・データベースの資格証明です(ターゲット・データベースはOracle Database Gatewayを介してアクセスされます)。
    たとえば次のようにします。
    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name =>'DB_LINK_CRED',
            username =>'NICK',
            password =>'password'
        );
    END;
    /

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

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

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

  6. DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、ターゲット・ゲートウェイへのデータベース・リンクを作成します。
    たとえば次のようにします。
    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name =>'SALESLINK', 
            hostname =>'example.com', 
            port =>'1522',
            service_name =>'example_service_name',
            ssl_server_cert_dn =>'ssl_server_cert_dn',
            credential_name =>'DB_LINK_CRED',
            directory_name =>'DBLINK_WALLET_DIR',
            gateway_link =>TRUE,
            private_target =>TRUE,
            gateway_params =>NULL
        );
    END;
    /

    directory_nameNULLでない場合は、TCPSベースのデータベース・リンクが作成されます。

    Oracle Database以外のターゲットがプライベート・エンドポイント上にある場合(つまり、データベース・リンクがVCN DNSサーバーで解決する必要があるホスト名にアクセスする場合)、private_targetパラメータをTRUEに設定する必要があります。private_targetTRUEの場合、hostnameパラメータは単一のホスト名である必要があります(プライベート・エンドポイントでは、IPアドレス、SCAN IPまたはSCANホスト名はサポートされていません)。

    gateway_linkTRUEで、gateway_paramsNULLの場合、データベース・リンクが顧客管理Oracleゲートウェイへのものであることを示します。

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

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

  7. 作成したデータベース・リンクを使用して、ターゲット・ゲートウェイのデータにアクセスします。
    たとえば次のようにします。
    SELECT * FROM employees@SALESLINK;
    
ステップ5で作成した資格証明(Oracle Database Gatewayの資格証明)では、ターゲット・ユーザーのパスワードが変更された場合、ターゲット・ユーザーの資格証明を含む資格証明を次のように更新できます:
BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name =>'DB_LINK_CRED',
        attribute =>'PASSWORD',
        value=>'password'
    );
END;
/

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

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

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