1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Cloud InfrastructureAdvent Calendar 2023

Day 13

Autononomous Database:RACを構成する複数ノードを指定してDBリンクを作成できるようになったので試してみた

Last updated at Posted at 2023-12-13

はじめに

Autonomous DatabaseからRAC構成のOracle Databaseに対してデータベース・リンク(DBリンク)を作成する際、従来はRAC内の特定の1つのノードを指定してDBリンクを作成する必要がありましたが、今回の機能強化で、RACを構成する複数のノードを指定してDBリンクが作成できるようになりました。
これにより、RAC構成のOracle Databaseに対するDBリンクを使用する際、Oracle RACの高可用性を活用することができるようになりました。

ということで、早速試してみました。
今回の検証は、同じサブネット上にRAC構成のBase DBとAutonomous Databaseのプライベート・エンドポイントを配置し、相互に通信できるようにセキュリティ・リストの設定を行った上で実施しました。

1. DBリンクで使用するクレデンシャルの作成

SQL*PlusからadminユーザとしてAutonomous Databaseに接続します。

[opc@client ~]$ sqlplus admin/Demo#1Demo#1@adb

SQL*Plus: Release 21.0.0.0.0 - Production on Wed Dec 13 05:47:16 2023
Version 21.12.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Tue Dec 12 2023 07:37:46 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0

SQL> 

DBリンクで使用するクレデンシャルを作成します。
usernameにはDBリンク経由で接続するDBユーザ名、passwordにはそのDBユーザのパスワードを指定します。

SQL> BEGIN
  2      DBMS_CLOUD.CREATE_CREDENTIAL(
  3          credential_name => 'RAC_DB_LINK_CRED',
  4          username => 'HR',
  5          password => 'Demo#1Demo#1');
  6  END;
  7  /

PL/SQL procedure successfully completed.

SQL> 

2.RAC構成のOracle Databaseに対するデータベース・リンクの作成

RAC構成のデータベースに対するDBリンクを作成します。

従来は以下のような形で、単一のノードのみが指定可能でした。

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;
/

今回のアップデートで、以下のように、パラメータrac_hostnamesにRACを構成する複数のノードを指定できるようになりました。

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;
/

今回は2ノードRAC構成のBase DBを用意し、そちらのPDB(PDB1)をターゲットとしました。
パラメータrac_hostnamesにRACを構成する各ノードのホスト名(rac19c1.mypublicsubnet.myvcn.oraclevcn.com、rac19c2.mypublicsubnet.myvcn.oraclevcn.com)を記述します。

SQL> BEGIN
  2      DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
  3          db_link_name => 'RAC_DB_LINK',
  4          rac_hostnames => '["rac19c1.mypublicsubnet.myvcn.oraclevcn.com",
  5                             "rac19c2.mypublicsubnet.myvcn.oraclevcn.com"]',
  6          port => '1521',
  7          service_name => 'pdb1.mypublicsubnet.myvcn.oraclevcn.com',
  8          ssl_server_cert_dn => NULL,
  9          credential_name => 'RAC_DB_LINK_CRED',
 10          directory_name => NULL,
 11          private_target => TRUE);
 12  END;
 13  /

PL/SQL procedure successfully completed.

SQL> 

SQL*Plusを終了します。

SQL> exit          
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
[opc@client ~]$

3. 動作確認

まずは、RACを構成する両方のノードが使用可能で、インスタンスが起動している状態での動作を確認します。
スクリーンショット 2023-12-13 18.07.53.png

SQL*PlusからAutonomous Databaseに接続し、DBリンク経由で検索を実行してみます。

[opc@client ~]$ sqlplus admin/Demo#1Demo#1@adb

SQL*Plus: Release 21.0.0.0.0 - Production on Wed Dec 13 10:00:12 2023
Version 21.12.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Wed Dec 13 2023 09:44:38 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0

SQL> SELECT COUNT(*) FROM employees@RAC_DB_LINK;

  COUNT(*)
----------
       107

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
[opc@client ~]$

問題なく結果が返ってきました。

次に、ノード1(rac19c1)を停止して、同様にDBリンク経由で検索を実行してみます。
スクリーンショット 2023-12-13 18.11.02.png

[opc@client ~]$ sqlplus admin/Demo#1Demo#1@adb

SQL*Plus: Release 21.0.0.0.0 - Production on Wed Dec 13 10:05:01 2023
Version 21.12.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Wed Dec 13 2023 10:00:12 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0

SQL> SELECT COUNT(*) FROM employees@RAC_DB_LINK_VIP;

  COUNT(*)
----------
       107

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
[opc@client ~]$

今度は、ノード2(rac19c2)を停止して、同様にDBリンク経由で検索を実行してみます。
スクリーンショット 2023-12-13 18.19.52.png

[opc@client ~]$ sqlplus admin/Demo#1Demo#1@adb

SQL*Plus: Release 21.0.0.0.0 - Production on Wed Dec 13 10:20:12 2023
Version 21.12.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Wed Dec 13 2023 10:05:01 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0

SQL> SELECT COUNT(*) FROM employees@RAC_DB_LINK;

  COUNT(*)
----------
       107

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.1.0
[opc@client ~]$

こちらも問題なく結果が返ってきました。

以上で、RACを構成する複数のノードを指定してDBリンクが作成できるようになり、
Autonomous DatabaseからRAC構成のOracle Databaseに対するDBリンクを使用する際にOracle RACの高可用性を活用できるようになったことが確認できました。

参考情報

Create Database Links to Oracle Databases on a Private Endpoint without a Wallet

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?