はじめに
Autonomous AI Database(ADB)では、様々なSaaS/DBに対して直接データ取得・連携ができるようになっています。今回はその一つServiceNowとの接続を試してみたいと思います。

▲[OCI Technical Deep Dive] AI時代に最適なオラクルのData Platformの特徴とAI拡張分析(2025年8月5日開催)より。左上の方に小さくServiceNowがあります。
今回行う手順は以下のドキュメントをベースとしています。
Oracle管理の異機種間接続による非Oracle Databaseへのデータベース・リンクの作成
対SalesforceではOCI Advent Calendar 2025においても、以下の記事をUp頂いています。Salesforceとは少し実装が異なるので、ServiceNowの場合についても進めてみたいと思います。
Salesforce データに対する Autonomous AI Database の Select AI Sidecar 機能による自然言語クエリの実行
Oracle Autonomous AI Database から Salesforce をDB Linkで参照する方法(異種間DB連携)
ServiceNowのトライアルアカウントを取得
以下の記事を参考にServiceNowのトライアルアカウントを取得しました。(画面の見た目は結構変わっていますが、トライアルの概念は一緒でした)
ServiceNowのお試しインスタンスを利用する
ServiceNowのトライアルは、30日等で区切られる仕組みではなく、利用されていない期間が10日を超えるとインスタンスが回収される(再作成可能)という仕組みなので試しやすいですね。
トライアルインスタンス上には、あらかじめテスト用データやOAuth/Basic認証の設定が行われているので、ServiceNowインスタンスへの設定は特に不要で、そのまま試してみることができます。

Autonomous AI Databaseの作成
以下チュートリアルを参考にADBのインスタンスを作成します。
101: ADBインスタンスを作成してみよう
こんな感じで作成しました(コンパートメントとOCIDはマスクしています)

Credential作成
DBLINK接続するためのCredentialを作成します。
Basic認証で実施する場合は、ServiceNowのコンソールに表示されているusername(デフォルトはadmin)/passwordを使って以下のように設定するだけです。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'SERVICENOW_BASIC_CRED',
username => 'admin',
password => 'コンソールから確認できるパスワード');
END;
/
OAuth2の認証も可能ですがその場合は以下の記事のようにServiceNowのコンソールでApplication RegistryにOAuth Clientを追加する必要があります。OAuth2については私の手順がどこか間違っているのか、うまくデータが抜けないので、この記事上この後は割愛します(エラーが取れたら追記します)
[ServiceNow]OAuth2.0を利用したREST APIを実行してみた
このCREDIENTIALの設定、このあとのDBLINKの作成については、以下のビューでサンプルを見ることができます。
SELECT * FROM HETEROGENEOUS_CONNECTIVITY_INFO WHERE DATABASE_TYPE = 'servicenow';
REST構成ファイル(servicenow.rest)ファイルの作成と配置
ServiceNowへの接続の場合、REST構成ファイルを作成、ADB上に配置する必要があります。このREST構成ファイルによりRESTのエンドポイントとテーブルがマッピングされる形になります。ServiceNow以外にもYouTubeやGoogle Driveへのアクセス時には同様のREST構成ファイルを設定する必要があります。
冒頭に紹介したドキュメントにも記載がありますが、サンプルは以下のドキュメントのとおりです。内部的にはProgressのDataDirectを使ってるのかもしれないですね。
今回エラーメッセージ等のカスタマイズは不要なので、以下のように定義してみました。インスタンス名はトライアルの場合devXXXXXX(Xが数字)というフォーマットで振られています。
{
// A simple GET request without parameters to sample:
"cmdb_ci":"https://インスタンス名.service-now.com/api/now/table/cmdb_ci",
"incident":"https://インスタンス名.service-now.com/api/now/table/incident"
}
この後、上記のテキストファイルをObject Storageに配置し、ADBのDIRECTORYにダウンロードするのですが、以下の記事を参考にしました。
Object Storage にアップロードしたファイルを Autonomous Database の DATA_PUMP_DIR にコピーする。(Oracle Cloud Infrastructure)
以下のようにObject StorageへアクセスするCREDENTIALを準備しました。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OS_CRED', -- 任意の文字列
username => 'テナンシー名/Auto Token を発行したIAMユーザー名',
password => 'Auth Token'
);
END;
ADB上でDIRECTORYを作成しました。
create or replace directory servicenow_dir as 'SERVICENOW_DIR';
以下プロシージャをADB上で実行し、servicenow.restをADB上のDIRECTORYにダウンロードしました。
exec DBMS_CLOUD.get_object('OS_CRED',
'https://objectstorage.ap-tokyo-1.oraclecloud.com/n/テナンシ名/b/場バケット名/o/servicenow.rest','SERVICENOW_DIR');
ServiceNowに対するDBLINKの作成
BASIC認証を使う場合は以下のような形でDBLINKを作成します。先ほどダウンロードしたservicenow.restの場所とファイル名を指定しています。(インスタンス名はトライアルの場合devXXXXXX(Xが数字)です。)
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => 'SERVICENOW_BASIC_LINK',
hostname => 'インスタンス名.service-now.com',
port => '443',
service_name => 'インスタンス',
ssl_server_cert_dn => null,
credential_name => 'SERVICENOW_BASIC_CRED',
gateway_params => JSON_OBJECT(
'db_type' value 'servicenow',
'directory_name' value 'SERVICENOW_DIR',
'file_name' value 'servicenow.rest'));
END;
/
ServiceNowインスタンスのデータを抽出
DBLINKを指定してデータ抽出を行うことができます。テーブル名はservicenow.restで指定したものです。
SELECT * FROM incident@SERVICENOW_BASIC_LINK;
以下のようにDatabase Actionsからもデータを参照することができました。(今回トライアルなのでADMINユーザでやっていますが、本番利用を想定する場合はユーザを分けることが望ましいと思います)

まとめ
Autonomous AI DatabaseからServiceNowへのDBLINK構成を試しました。REST構成ファイルの設定だけが少し特徴的ですが、他のSaaS/DBに対するDBLINKと同様に扱うことができました。