Autonomous AI Databaseからプライベート・エンドポイント上のOracle Databaseへのデータベース・リンクの作成
Autonomous AI Databaseから、プライベート・エンドポイントにあるターゲットOracle Databaseへのデータベース・リンクを作成できます。
ノート:プライベート・エンドポイント上にあるターゲットOracleデータベースへのデータベース・リンクは、商用リージョンおよびUS Governmentリージョンでのみサポートされています。この機能は、すべての商用リージョンでデフォルトで有効になっています。この機能は、新しくプロビジョニングされたデータベースのUS Governmentリージョンでデフォルトで有効になっています。プライベート・エンドポイント上の既存のUS Governmentデータベースの場合、Autonomous AI DatabaseからUS Governmentリージョンのターゲットへのデータベース・リンクを作成する場合は、Oracle Cloud Supportでサービス・リクエストを申請し、政府リージョンのデータベース・リンク機能でプライベート・エンドポイントを有効化するようにリクエストできます。米国政府リージョンには、次のものがあります。
ターゲットOracleデータベースのタイプおよび構成に応じて、次の手順を実行します。
-
SSL (TCPS)用に構成されたプライベート・エンドポイント上のオンプレミスやDatabase Cloud Serviceデータベースなどの別のOracle Database: この場合、ウォレットを使用してデータベース・リンクを作成し、データベース・リンクはTCPSと通信します。詳細は、Autonomous AI DatabaseからWallet (mTLS)を使用したプライベート・エンドポイント上のOracle Databasesへのデータベース・リンクの作成を参照してください。
-
TCP用に構成されたプライベート・エンドポイント上のオンプレミスまたはDatabase Cloud ServiceデータベースなどのOracle Database: この場合、ウォレットなしでデータベース・リンクを作成し、データベース・リンクはTCPと通信します。詳細は、「Walletを使用しないプライベート・エンドポイントでのOracle Databasesへのデータベース・リンクの作成」を参照してください。
プライベート・エンドポイントでのAutonomous AI DatabaseからOracle Databasesへのデータベース、リンクの前提条件
Autonomous AI Databaseからプライベート・エンドポイントにあるターゲットOracleデータベースへのデータベース・リンクを作成するための前提条件をリストします。
プライベート・エンドポイント上のターゲットOracleデータベースへのデータベース・リンクを作成するには:
-
ターゲット・データベースは、ソース・データベースのOracle Cloud Infrastructure VCNからアクセスできる必要があります。たとえば、次の場合にターゲット・データベースに接続できます。
-
ターゲット・データベースはプライベート・エンドポイント上にあります。
-
ソース・データベースとターゲット・データベースの両方が、同じOracle Cloud Infrastructure VCNに存在します。
-
ソース・データベースとターゲット・データベースは、ペアになっている別のOracle Cloud Infrastructure VCNsにあります。
-
ターゲット・データベースは、FastConnectまたはVPNを使用してソース・データベースのOracle Cloud Infrastructure VCNに接続されているオンプレミス・データベースです。
-
-
ターゲット・データベースを指定する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は、指定されたすべてのホスト名を接続文字列のアドレスとして使用します。指定したホストの1つがターゲットOracle RACデータベースで使用できない場合、Autonomous Databaseは自動的に、リストから別のホスト名を使用して接続を試みます。
-
-
プライベート・エンドポイントには、次のイングレスおよびエグレス・ルールを定義する必要があります:
-
ソース・データベースのサブネット・セキュリティ・リストまたはネットワーク・セキュリティ・グループにエグレス・ルールを定義して、TCPを介したトラフィックがターゲット・データベースのIPアドレスおよびポート番号に対して許可されるようにします。
-
ソース・データベースのIPアドレスから宛先ポートへのTCP経由のトラフィックが許可されるように、ターゲット・データベースのサブネット・セキュリティ・リストまたはネットワーク・セキュリティ・グループにイングレス・ルールを定義します。
-
Walletを使用しないプライベート・エンドポイントでのOracle Databasesへのデータベース・リンクの作成
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用して、Autonomous AIデータベースから、プライベート・エンドポイント上にあるターゲットOracleデータベースへのデータベース・リンクを作成し、ウォレット(TCP)なしで接続します。
ノート:このオプションは、プライベート・エンドポイントにあり、SSL/TCPSが構成されていないターゲットOracleデータベース用です。
必要に応じて、前提条件ステップを実行します。詳細は、Autonomous AI Databaseからプライベート・エンドポイント上のOracle Databasesへのデータベース・リンクの前提条件を参照してください。
ウォレットを使用しないセキュアなTCP接続を使用して、プライベート・エンドポイント上のターゲット・データベースへのデータベース・リンクを作成するには:
-
Autonomous AI Databaseで、ターゲット・データベースにアクセスするための資格証明を作成します。
DBMS_CLOUD.CREATE_CREDENTIALで指定するusernameおよびpasswordは、データベース・リンク内で使用されるターゲット・データベースの資格証明です(ターゲット・データベースはVCNを介してアクセスされます)。たとえば:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'PRIVATE_ENDPOINT_CRED', username => 'NICK', password => '*password*' ); END; /usernameパラメータの文字はすべて大文字である必要があります。この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。
-
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である必要があります。
-
-
作成したデータベース・リンクを使用すると、ターゲット・データベースのデータにアクセスできます。
たとえば:
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 AI DatabaseからOracle Databasesへのデータ・リンクの作成
Autonomous AI Databaseから、プライベート・エンドポイントにあるターゲットOracleデータベースへのデータベース・リンクを作成できます。
ノート:このオプションは、SSL/TCPSが構成され、プライベート・エンドポイント上にあるターゲットOracleデータベース用です。
ターゲットのOracleデータベースにSSL/TCPSが構成されていない場合は、次の2つのオプションがあります。
-
SSL付きTCP/IP (TCPS)認証を使用するようにターゲットOracleデータベースを構成できます。SSL/TCPSの構成の詳細は、Oracle Database 19cセキュリティ・ガイドのTransport Layer Security認証の構成またはOracle Database 26aiセキュリティ・ガイドを参照してください。
-
TCPを使用してターゲットOracleデータベースに接続できます。詳細は、「Walletを使用しないプライベート・エンドポイントでのOracle Databasesへのデータベース・リンクの作成」を参照してください。
必要に応じて、前提条件ステップを実行します。詳細は、Autonomous AI Databaseからプライベート・エンドポイント上のOracle Databasesへのデータベース・リンクの前提条件を参照してください。
SSL付きTCP/IP (TCPS)認証を使用してプライベート・エンドポイント上のターゲットOracleデータベースへのデータベース・リンクを作成するには:
-
ターゲット・データベースの証明書を含むターゲット・データベース・ウォレット
cwallet.ssoをオブジェクト・ストアにコピーします。ノート:ウォレット・ファイルは、データベース・ユーザーIDおよびパスワードと組み合せて、ターゲットOracleデータベース内のデータへのアクセスを可能にする。ウォレット・ファイルは安全な場所に保存してください。ウォレット・ファイルは、権限のあるユーザーとのみ共有してください。
-
cwallet.ssoを格納するオブジェクト・ストアにアクセスするための資格証明を作成します。様々なオブジェクト・ストレージ・サービスのusernameおよびpasswordパラメータの詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。 -
ウォレット・ファイル
cwallet.ssoのディレクトリをAutonomous AI Databaseに作成します。たとえば:
CREATE DIRECTORY *wallet_dir* AS '*directory_path_of_your_choice*';ディレクトリの作成の詳細は、「Autonomous AI Databaseでのディレクトリの作成」を参照してください。
-
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は、オブジェクト・ストアの資格証明です。次のステップでは、ターゲット・データベースにアクセスするための資格証明を作成します。 -
Autonomous AI 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パラメータの文字はすべて大文字である必要があります。この操作によって、資格証明が暗号化された形式でデータベースに格納されます。資格証明には任意の名前を使用できます。
-
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を実行するには、権限が必要です。 -
作成したデータベース・リンクを使用すると、ターゲット・データベースのデータにアクセスできます。
たとえば:
```sql 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 AIデータベースではない場合)
他のOracleデータベースへのデータベース・リンクに関するノート:
-
データベース・リンクで使用できるウォレット・ファイルは、ディレクトリごとに1つのみ有効です。ウォレット・ファイル用に選択したディレクトリに一度にアップロードできるのは1つの
cwallet.ssoのみです(DBLINK_WALLET_DIRなど)。つまり、DBLINK_WALLET_DIRのcwallet.ssoでは、そのディレクトリ内のウォレットが有効なデータベースに対するデータベース・リンクのみを作成できます。データベース・リンクで複数のcwallet.ssoファイルを使用するには、追加のディレクトリを作成し、各cwallet.ssoを異なるディレクトリに配置する必要があります。DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用してデータベース・リンクを作成する場合は、directory_nameパラメータでウォレットを含むディレクトリを指定します。ディレクトリの作成の詳細は、「Autonomous AI Databaseでのディレクトリの作成」を参照してください。
-
別のOracle Databaseへのデータベース・リンクでサポートされているターゲットOracleデータベース・バージョンは、19c、12.2.0および12.1.0です。
ノート:サポートされているバージョンの詳細は、「異なるOracleバージョンクライアント・サーバー相互運用性サポート・マトリックス(ドキュメントID 207303.1)」を参照してください。
-
Autonomous AI Databaseでは
SEC_CASE_SENSITIVE_LOGONパラメータがtrueに設定され、この値は変更できません。ターゲット・データベースがAutonomous AI Databaseでない場合は、SEC_CASE_SENSITIVE_LOGONparameter totrueon the target database. IfSEC_CASE_SENSITIVE_LOGONis set tofalseon the target database, then errorORA-28040: 一致する認証プロトコルは生成されません。 -
データベース・リンクをリストするには、
ALL_DB_LINKSビューを使用します。詳細は、『Oracle Database 19cデータベース・リファレンス』のALL_DB_LINKSに関する項または『Oracle Database 26aiデータベース・リファレンス』を参照してください。 -
ウォレット・ファイルは、データベース・ユーザーIDおよびパスワードと組み合せて、ターゲットOracleデータベース内のデータへのアクセスを可能にする。ウォレット・ファイルは安全な場所に保存してください。ウォレット・ファイルは、権限のあるユーザーとのみ共有してください。
-
Autonomous AI 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は、指定されたすべてのホスト名を接続文字列のアドレスとして使用します。指定したホストの1つがターゲットOracle RACデータベースで使用できない場合、Autonomous Databaseは自動的に、リストから別のホスト名を使用して接続を試みます。 -
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKは、hostnameまたはrac_hostnamesパラメータでlocalhostの値をサポートしていません。
-