はじめに
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内にあるサブネットに配置
1. Azure OpenAIの設定内容
IPアドレスとFQDNをメモしておきます。
キー1またはキー2をメモしておきます。
名前をメモしておきます。
2. プライベートDNSの設定(OCI側)
<プライベートゾーンの作成>
Autonomous Databaseのプライベート・エンドポイントがあるVCNの詳細画面で「DNSリゾルバ」の名前のリンクをクリックします。

「デフォルト・プライベート・ビュー」の名前のリンクをクリックします。

ゾーン名に「openai.azure.com」を入力し、「作成」をクリックします。

プライベート・ゾーン「openai.azure.com」が作成できました。

<DNSレコードの追加>
ゾーン名「openai.azure.com」をクリックします。

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

追加されたレコードの内容を確認し、「変更の確認」をクリックします。

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を実行することができました。












