6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Cloud InfrastructureAdvent Calendar 2021

Day 18

Autonomous Databaseからプライベートネットワーク内のDBCSにデータベースリンクを作成する

Last updated at Posted at 2021-12-21

はじめに

Autonomous Databaseからプライベートネットワーク内のデータベースに、直接データベースリンクを作成することができるようになりました。作成自体はこちらの記事のように今までもできましたが、踏み台サーバーを置き、ポートフォワーディングを行わないといけませんでした。
しかし今回、事前にSRを上げることで、データベースリンクのターゲットにプライベートIPを指定することが可能になりました。
※2022年6月、事前にSRを上げる必要はなくなりました。

そこで本記事では、プライベートADBから異なるプライベートサブネットに置いたDBCSにデータベースリンクを作成してみます。
なお、パブリックサブネット内のDBCSへのデータベースリンクの作成方法はこちらで紹介しています。

システム構成

構成図は以下のようになります。
image.png

プライベートサブネット①のセキュリティリストのイングレス・ルールに以下を追加
image.png

プライベートサブネット②のセキュリティリストのイングレス・ルールに以下を追加
image.png

プライベートサブネット①(CIDRブロック:10.0.1.0/24)に置いたプライベートADBインスタンス ATPRD01 から、プライベートサブネット②(CIDRブロック:10.0.2.0/24)に置いたプライベートDBCS DBCSRD01 に、データベースリンクHR_LINKを作成します。

プライベートエンドポイントのDBへのデータベースリンクは、ソースDBであるADBもプライベートエンドポイントであることが前提となります。

パブリックサブネットに置いたコンピュートインスタンス VMRD01 は、ATPRD01・DBCSRD01に接続するための踏み台サーバーです。

HRスキーマの作成

データベースリンク作成の前に、リンク先となるHRスキーマをDBCSRD01で作成します。
こちらの記事を参考に、HRスキーマを作成します。

DBCSにてTCPS認証(SSL認証)を有効化

Autonomous Databaseでは、TCPS認証を使用します。DBCSではデフォルトでTCP認証のみ有効化されているので、TCPS認証を有効化する必要があります。
こちらの記事を参考に、TCPS認証を有効化します。

DBCSのウォレットファイルをADBに配置

こちらの記事を参考に、前章で作成したウォレットcwallet.ssoをローカルにダウンロードし、オブジェクトストレージへアップロードします。その後DBMS_CLOUD.GET_OBJECTでADBに配置します。

Database Linkの作成

① DBCSへ接続するためのクレデンシャルを作成します。

BEGIN
 DBMS_CLOUD.CREATE_CREDENTIAL(
 credential_name => 'DBCS_DB_LINK_CRED',
 username => 'HR',
 password => 'WelCome123#123#'
 );
END;
/

注意
usernameは必ず全て大文字で指定してください。

② DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用してデータベースリンクを作成します。

BEGIN
 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
 db_link_name => 'HR_LINK',
 hostname => '<dbcs>.<subnet>.<vcn>.oraclevcn.com',
 port => '1522',
 service_name => '<pdb1>.<subnet>.<vcn>.oraclevcn.com',
 ssl_server_cert_dn => 'CN=dbcs',
 credential_name => 'DBCS_DB_LINK_CRED',
 directory_name => 'dblink_wallet_dir_dbcs',
 private_target => TRUE);
END;
/

hostname:DBCSのホスト名
service_name:DBCSのtnsnames.oraに記載されているPDB1のサービス名
ssl_server_cert_dn:DBCSのサーバー証明書に記載されているDN値
private_target:プライベートIPを指定する場合に追加するパラメータ

③ HR_LINKを使用し、HRスキーマのCOUNTRIES表を参照

SELECT * FROM COUNTRIES@HR_LINK;

25か国の表のデータが取り出せたら正しく作成できています。

ウォレットなしのデータベースリンク作成(2022/04更新)

新機能アップデートとしてADBから非ADBのOracle DatabaseへのデータべースリンクをTCP接続でウォレットなしで作成できるようになりました。こちらを利用する場合はターゲットデータベースのSSL認証構成が不要です。TCPS接続でウォレットありの場合と同様の前提条件がありますのでご確認ください。

例えばプライベートのDBCSにウォレットなしでデータベースリンクを作成する手順は以下になります。
※ウォレットなしなので、DBCS側で行う作業はありません。TCP接続に使用しているポート番号を指定します。

① DBCSへ接続するためのクレデンシャルを作成します。

BEGIN
 DBMS_CLOUD.CREATE_CREDENTIAL(
 credential_name => 'DBCS_DB_LINK_CRED',
 username => 'HR',
 password => 'WelCome123#123#'
 );
END;
/

② DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKを使用してデータベースリンクを作成します。

BEGIN
 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
 db_link_name => 'HR_LINK',
 hostname => '<dbcs>.<subnet>.<vcn>.oraclevcn.com',
 port => '1521',
 service_name => '<pdb1>.<subnet>.<vcn>.oraclevcn.com',
 ssl_server_cert_dn => NULL,
 credential_name => 'DBCS_DB_LINK_CRED',
 directory_name => NULL,
 private_target => TRUE);
END;
/

hostname:DBCSのホスト名
service_name:DBCSのtnsnames.oraに記載されているPDB1のサービス名
port:TCP接続に使用するポート番号
ssl_server_cert_dn:NULL指定
directory_name:NULL指定
private_target:TRUE指定

③ HR_LINKを使用し、HRスキーマのCOUNTRIES表を参照

 SELECT * FROM COUNTRIES@HR_LINK;

25か国の表のデータが取り出せたら正しく作成できています。

参考文献

402 : Database Linkによるデータ連携

マニュアル

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?