5
1

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 Database@Azure:Autonomous DatabaseからAzure SQL Databaseに対してプライベート・エンドポイント経由でデータベース・リンクを作成してみた

Last updated at Posted at 2025-10-03

はじめに

Oracle Database@AzureのAutonomous DatabaseからAzure SQL Databaseに対して、プライベート・エンドポイント経由でデータベース・リンクを作成する手順を検証してみました。

注意
こちらの記事の内容はあくまで個人の実験メモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。

0. 環境情報

Autonomos Databaseのプライベート・エンドポイントがあるDelegated Subnetと同じVNetにあるSubnetにAzure SQL Databaseのプライベート・エンドポイントが配置されています。
スクリーンショット 2025-10-03 18.39.17.png

Azure SQL Databaseのプライベート・エンドポイントは10.0.0.5です。
スクリーンショット 2025-10-03 18.32.14.png

Azure SQL Databaseはパブリック・アクセスが無効になっています。
スクリーンショット 2025-10-03 18.31.20.png

Azure SQL Databaseにはサンプルデータがロードされています。
スクリーンショット 2025-10-03 18.30.17.png

Azure SQL Database内にあるSalesLT.Address表のレコード数は450件です。
スクリーンショット 2025-10-03 19.29.31.png

1. OCI側のプライベートDNSの設定

OCIコンソールからAutonomous Databaseの詳細画面にアクセスします。
スクリーンショット 2025-10-03 19.39.55.png

「ネットワーク」セクションにある仮想クラウド・ネットワークのリンクをクリックします。
スクリーンショット 2025-10-03 19.40.51.png

DNSリゾルバのリンクをクリックします。
スクリーンショット 2025-10-03 19.43.05.png

デフォルト・プライベート・ビューのリンクをクリックします。
スクリーンショット 2025-10-03 19.45.01.png

「プライベート・ゾーン」タブを選択します。
スクリーンショット 2025-10-03 19.46.47.png

「ゾーンの作成」をクリックします。
スクリーンショット 2025-10-03 19.48.41.png

ゾーン名にdatabase.windows.netを入力し、「作成」をクリックします。
スクリーンショット 2025-10-03 23.07.54.png

作成したゾーン名のリンクをクリックします。
スクリーンショット 2025-10-03 23.10.52.png

「レコード」タブを選択します。
スクリーンショット 2025-10-03 23.09.25.png

「レコードの管理」をクリックします。
スクリーンショット 2025-10-03 23.12.52.png

「レコードの追加」をクリックします。
スクリーンショット 2025-10-03 23.13.51.png

名前にAzure SQL Databaseのホスト名を入力します。
(ここではmy-azure-sql-database)
レコードタイプとして「A - IPv4アドレス」を選択し、Address(アドレス)には、Azure SQL Databaseのプライベート・エンドポイントのIPアドレスを(ここでは10.0.0.5)入力します。
入力が完了したら、「変更の保存」をクリックします。
スクリーンショット 2025-10-03 23.16.48.png

「変更の確認」をクリックします。
スクリーンショット 2025-10-03 23.18.14.png

「変更の公開」をクリックします。
スクリーンショット 2025-10-03 23.18.53.png

Azure SQL Databaseにアクセスするためのプライベート・ゾーンおよびDNSレコードが追加できました。
作成したDNSレコードのFQDNをメモしておきます。
スクリーンショット 2025-10-03 23.19.32.png

2. ネットワークACLの設定

SQL*Plus等のクライアントから、adminユーザとしてAutonomous Databaseに接続します。

[opc@OracleClient ~]$ sqlplus admin@adbatazure

SQL*Plus: Release 23.0.0.0.0 - Production on Fri Oct 3 06:37:34 2025
Version 23.9.0.25.07

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

Enter password: 
Last Successful login time: Fri Oct 03 2025 06:36:52 -04:00

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

SQL>

DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACEプロシージャを使用して、OCIのプライベートDNSに追加したDNSレコードのFQDNに対するネットワークアクセスを許可します。

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'my-azure-sql-database.database.windows.net',
        ace  => xs$ace_type(
                    privilege_list => xs$name_list('connect', 'resolve'),
                    principal_name => 'ADMIN',
                    principal_type => xs_acl.ptype_db
                )
    ); 
END; 
/
SQL> BEGIN
  2  	 DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
  3  	     host => 'my-azure-sql-database.database.windows.net',
  4  	     ace  => xs$ace_type(
  5  			 privilege_list => xs$name_list('connect', 'resolve'),
  6  			 principal_name => 'ADMIN',
  7  			 principal_type => xs_acl.ptype_db
  8  		     )
  9  	 );
 10  END;
 11  /

PL/SQL procedure successfully completed.

SQL>

3. Azure SQL Databaseにアクセスするためのクレデンシャルの作成

DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用して、Azure SQL Databaseにアクセスするためのクレデンシャルを作成します。

usernameにはAzure SQL Databaseのデータベース・ユーザー名、passwordにはそのデータベース・ユーザーのパスワードを指定します。

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AZURE_SQL_CRED',
        username => 'azuresqladmin',
        password => '************'
    );
END;
/
SQL> BEGIN
  2  	 DBMS_CLOUD.CREATE_CREDENTIAL(
  3  	     credential_name => 'AZURE_SQL_CRED',
  4  	     username => 'azuresqladmin',
  5  	     password => '************'
  6  	 );
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL>

4. Azure SQL Databaseに対するデータベース・リンクの作成

DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKプロシージャを使用して、Azure SQL Databaseに対するデータベース・リンクを作成します。

hostnameには、1.で追加したDNSレコードにFQDN、service_nameにはAzure SQL Databaseの名前を指定します。
credential_nameには、3.で作成したクレデンシャルの名前(ここではAZURE_SQL_CRED)を指定します。

※データベース・リンクの作成には少し時間がかかります。

BEGIN
    DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
        db_link_name => 'AZURE_SQL_DBLINK',
        hostname => 'my-azure-sql-database.database.windows.net',
        port => '1433',
        service_name => 'AzureSQLDatabase',
        ssl_server_cert_dn => null,
        credential_name => 'AZURE_SQL_CRED',
        gateway_params => JSON_OBJECT( 'db_type' value 'azure' ),
        private_target => TRUE
    );
END;
/
SQL> BEGIN
  2  	 DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
  3  	     db_link_name => 'AZURE_SQL_DBLINK',
  4  	     hostname => 'my-azure-sql-database.database.windows.net',
  5  	     port => '1433',
  6  	     service_name => 'AzureSQLDatabase',
  7  	     ssl_server_cert_dn => null,
  8  	     credential_name => 'AZURE_SQL_CRED',
  9  	     gateway_params => JSON_OBJECT( 'db_type' value 'azure' ),
 10  	     private_target => TRUE
 11  	 );
 12  END;
 13  /

PL/SQL procedure successfully completed.

SQL>

5. 動作確認

データベース・リンクが作成できたので、作成したデータベース・リンクを使用したクエリを実行してみます。

SQL> SELECT COUNT(*) FROM saleslt.address@AZURE_SQL_DBLINK;

  COUNT(*)
----------
       450

1 row selected.

SQL>

Azure SQL Databaseに対してプライベート・エンドポイント経由でデータベース・リンクを作成して、クエリを実行することができました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?