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

Oracle Database@Azure:プライベート・エンドポイント経由でAzure OpenAIにアクセスしてSELECT AIを実行する

5
Last updated at Posted at 2026-01-29

はじめに

Autonomous AI Database 19cにおいて、データベース・プロパティROUTE_OUTBOUND_CONNECTIONSに「ENFORCE_PRIVATE_ENDPOINT」が設定できるようになりました。

データベース・プロパティROUTE_OUTBOUND_CONNECTIONSに「ENFORCE_PRIVATE_ENDPOINT」をセットすると、DBMS_CLOUDパッケージ等を含むAutonomous AI Databaseからの全てのバウンド接続がVCNのプライベートDNSを参照し、またVCNのアクセス制御(エグレス・ルール)に従うようになります。

そこで今回は、Oracle Database@AzureのAutonomous Databaseからプライベート・ネットワーク経由でAzure OpenAIにアクセスしてSELECT AIを実行する手順を検証しました。

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

0. ネットワーク構成

Azure OpenAIのプライベート・エンドポイントを、Autonomous Databaseのプライベート・エンドポイントが配置されているVNet内にあるサブネットに配置

スクリーンショット 2025-09-26 18.53.02.png

1. Azure OpenAIの設定内容

パブリックアクセスは不可
スクリーンショット 2025-09-26 18.05.56.png

プライベート・エンドポイントを構成
スクリーンショット 2025-09-26 18.06.06.png

DNS情報
スクリーンショット 2025-09-26 17.16.55.png

IPアドレスとFQDNをメモしておきます。

APIキーの確認
スクリーンショット 2025-09-26 18.24.13.png

キー1またはキー2をメモしておきます。

デプロイメントの名前の確認
スクリーンショット 2025-09-26 18.43.18.png

名前をメモしておきます。

2. プライベートDNSの設定(OCI側)

<プライベートゾーンの作成>
Autonomous Databaseのプライベート・エンドポイントがあるVCNの詳細画面で「DNSリゾルバ」の名前のリンクをクリックします。
スクリーンショット 2025-09-26 17.19.35.png

「デフォルト・プライベート・ビュー」の名前のリンクをクリックします。
スクリーンショット 2025-09-26 17.19.48.png

「プライベート・ゾーン」をクリックします。
スクリーンショット 2025-09-26 17.20.05.png

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

ゾーン名に「openai.azure.com」を入力し、「作成」をクリックします。
スクリーンショット 2025-09-26 17.21.28.png

プライベート・ゾーン「openai.azure.com」が作成できました。
スクリーンショット 2025-09-26 17.21.45.png

<DNSレコードの追加>
ゾーン名「openai.azure.com」をクリックします。
スクリーンショット 2025-09-26 17.21.45のコピー.png

「レコード」をクリックします。
スクリーンショット 2025-09-26 17.21.54.png

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

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

Azure OpenAIのDNS情報をもとに名前を入力し、レコード・タイプとして「A - IPv4アドレス」を選択します。
Azure OpenAIのDNS情報をもとにIPアドレスを入力し、「変更の保存」をクリックします。
スクリーンショット 2025-09-26 17.22.46.png

追加されたレコードの内容を確認し、「変更の確認」をクリックします。
スクリーンショット 2025-09-26 17.22.59.png

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

DNSレコードが追加できました。
スクリーンショット 2025-09-26 17.23.19.png

3. Autonomous Databaseに接続

adminユーザとしてAutonomous Databaseに接続します。

[opc@OracleClient ~]$ sqlplus admin/Demo#1Demo#1@azureadb

SQL*Plus: Release 23.0.0.0.0 - Production on Fri Sep 26 04:18:36 2025
Version 23.9.0.25.07

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


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

SQL>

4. ネットワークACLとネットワーク・ルーティングの設定

Azure OpenAIのエンドポイントにアクセスを許可するためのネットワークACLを設定します。

BEGIN 
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '<azure_resource_name>.openai.azure.com',
        ace  => xs$ace_type(
                    privilege_list => xs$name_list('http'),
                    principal_name => 'ADB_USER',
                    principal_type => xs_acl.ptype_db
                )
    );
END;
/
SQL> BEGIN
  2  	 DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
  3  	     host => 'azureopenai4adb.openai.azure.com',
  4  	     ace  => xs$ace_type(
  5  			 privilege_list => xs$name_list('http'),
  6  			 principal_name => 'ADMIN',
  7  			 principal_type => xs_acl.ptype_db
  8  		     )
  9  	 );
 10  END;
 11  /

PL/SQL procedure successfully completed.

SQL>

全てのアウトバウンド・トラフィックがプライベート・エンドポイントを通るようにするために、データベースプロパティROUTE_OUTBOUND_CONNECTIONSをENFORCE_PRIVATE_ENDPOINTに設定します。

ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'ENFORCE_PRIVATE_ENDPOINT';
SQL> ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'ENFORCE_PRIVATE_ENDPOINT';

Database altered.

SQL>

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

Azure OpenAIにアクセスするためのクレデンシャルを作成します。
usernameは任意の文字列で問題ありません。
passwordにはAzure OpenAIのアクセスキーを設定します。

BEGIN 
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name   => 'AZURE_OPENAI_CRED', 
        username          => 'AZUREAI', 
        password          => 'Azure OpenAIのアクセスキー'
    );
END;
/
SQL> BEGIN
  2  	 DBMS_CLOUD.CREATE_CREDENTIAL(
  3  	     credential_name   => 'AZURE_OPENAI_CRED',
  4  	     username	       => 'AZUREAI',
  5  	     password	       => 'D08XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpa3'
  6  	 );
  7  END;
  8  /

PL/SQL procedure successfully completed.

SQL>

6. AIプロファイルの作成

SELECT AIで使用するAIプロファイルを作成します。
ここではサンプルスキーマSH内のスキーマ・オブジェクトをSELECT AIの対象として登録しています。

provider:azureを指定
azure_resource_name:Azure OpenAIのリソース名(ここではAzureOpenAI4ADB)を指定
azure_deployment_name:Azure OpenAIのデプロイ名(ここではgpt-4o)を指定
credential_name:5.で作成したクレデンシャルを指定

BEGIN
    DBMS_CLOUD_AI.CREATE_PROFILE(
        profile_name=> 'AZURE_OPENAI_PROFILE',
        attributes=> '{ "provider"              : "azure", 
                        "azure_resource_name"   : "Azure OpenAIのリソース名",
                        "azure_deployment_name" : "zure OpenAIのデプロイメント名",
                        "credential_name"       : "AZURE_OPENAI_CRED",
                        "object_list"           : [ {"owner": "SH", "name": "customers"},
                                                    {"owner": "SH", "name": "countries"},
                                                    {"owner": "SH", "name":"supplementary_demographics"},
                                                    {"owner": "SH", "name": "profits"},
                                                    {"owner": "SH", "name": "promotions"},
                                                    {"owner": "SH", "name": "products"}],
                        "conversation"          : "true"                 
                      }'
    );
END;
/
SQL> BEGIN
  2  	 DBMS_CLOUD_AI.CREATE_PROFILE(
  3  	     profile_name=> 'AZURE_OPENAI_PROFILE',
  4  	     attributes=> '{ "provider" 	         : "azure",
  5  			             "azure_resource_name"   : "AzureOpenAI4ADB",
  6  			             "azure_deployment_name" : "gpt-4o",
  7  			             "credential_name"	     : "AZURE_OPENAI_CRED",
  8  			             "object_list"           : [ {"owner": "SH", "name": "customers"},
  9  							                         {"owner": "SH", "name": "countries"},
 10  							                         {"owner": "SH", "name": "supplementary_demographics"},
 11  							                         {"owner": "SH", "name": "profits"},
 12  							                         {"owner": "SH", "name": "promotions"},
 13  						                             {"owner": "SH", "name": "products"}],
 14  			             "conversation"          : "true"
 15  			           }'
 16      );
 17  END;
 18  /

PL/SQL procedure successfully completed.

SQL>

7. AIプロファイルの有効化

DBMS_CLOUD_AI.SET_PROFILEプロシージャを実行して、AIプロファイルを有効化します。

EXEC DBMS_CLOUD_AI.SET_PROFILE('AZURE_OPENAI_PROFILE');
SQL> EXEC DBMS_CLOUD_AI.SET_PROFILE('AZURE_OPENAI_PROFILE');

PL/SQL procedure successfully completed.

SQL>

8. SELECT AIを用いた自然言語検索の実行

SELECT AIを実行してみます。

SELECT AI how many customers;
SQL> SELECT AI how many customers;

total_customers
---------------
	      55500

SQL>

プライベート・エンドポイント経由でAzure OpenAIにアクセスしてSELECT AIを実行することができました。

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