1. 背景
Autonomous AI Database (AIDB)では、Oracle-managed heterogeneous connectivityにより、ゲートウェイVM無しで Salesforce を SQL で参照するDB LINKを簡単に作成できます。
- 対応
db_typeにsalesforceが含まれ、ポートは19937固定です。 - この方式は Salesforce Data Cloud の“Salesforce CRM Data Stream(ACTIVE)”を Zero-Copy で読むのが前提です。
- 注意: Oracle-managed heterogeneous connectivity は 参照(SELECT)専用で、更新系はサポートされません。
必要な Salesforce 側の要件
- Salesforce CRM Data Stream がData Connector Type = Salesforce CRM / Status = ACTIVE
- Salesforce 側の情報:
- ログインユーザー名(メール形式)
- パスワード
- Security Token
- My Domain のホスト名(
xxx.my.salesforce.com)
2. ADMIN 作業
2-1. 対応タイプ・ポートの確認(任意)
HETEROGENEOUS_CONNECTIVITY_INFO ビューは、「対応 db_type とサンプル」を見るための補助ビューです。スキーマ名を付けずに参照します。
-- ADMIN で実行
SELECT database_type, required_port, sample_usage
FROM heterogeneous_connectivity_info
WHERE database_type = 'salesforce';
Note: このビューは ADMIN ユーザーのみに見える環境が普通ですが、APPユーザーが見えなくても DB LINK 作成自体は可能です。
2-2. APPユーザー(例:AIDEMO)に必要権限を付与
AIDEMO で DB LINK を作成するため、以下を付与します。
-- ADMIN で実行
GRANT EXECUTE ON DBMS_CLOUD_ADMIN TO AIDEMO;
GRANT CREATE DATABASE LINK TO AIDEMO;
2-3. DATA_PUMP_DIR の権限付与(重要)
AIDEMO 側で DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK を実行すると、内部で DATA_PUMP_DIR を使うため、権限が無いと ORA-20000: Directory DATA_PUMP_DIR does not exist が出ます。
-- ADMIN で実行
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO AIDEMO;
3. APPユーザー(AIDEMO)の作業
3-1. Salesforce Security Token を取得
Security Token は画面表示ではなく 「Resetしてメールで受け取る」 方式です。
- Salesforce ログイン
- 右上アイコン → Settings
- My Personal Information → Reset My Security Token
- Reset するとメールで新トークンが届きます。
注意: Reset/パスワード変更後は古いトークンは無効になります。
3-2. Credential を作成(AIDEMOで実行)
Credential のオーナーと DB LINK の作成ユーザーは同じにする必要があるため、AIDEMO で作成します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'CRED_SALESFORCE',
username => '<Salesforceのユーザー名(メール形式)>',
password => '<Salesforceのパスワード>'
);
END;
/
3-3. Salesforce への DB LINK を作成(AIDEMOで実行)
port=19937, db_type='salesforce', ssl_server_cert_dn=NULL が必須セットです。
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => 'SALESFORCELINK',
hostname => '<yourMyDomain>.my.salesforce.com',
port => '19937',
service_name => 'salesforce',
ssl_server_cert_dn => NULL,
credential_name => 'CRED_SALESFORCE',
directory_name => 'DATA_PUMP_DIR',
gateway_params => JSON_OBJECT(
'db_type' VALUE 'salesforce',
'security_token' VALUE '<Security Token>'
)
);
END;
/
3-4. 接続テスト
Salesforce の Account オブジェクトにアクセスしてみます。
SELECT id, name
FROM account@SALESFORCELINK
FETCH FIRST 10 ROWS ONLY;
3-5. よくあるエラーと切り分け(今回ハマったやつ)
| エラー | 原因と切り分け | 解消法 |
|---|---|---|
✅ ORA-20000: Directory DATA_PUMP_DIR does not exist
|
AIDEMO に READ/WRITE on DIRECTORY DATA_PUMP_DIR が無い。 |
ADMIN で GRANT (2-3) を実行する。 |
✅ ORA-28500 / INVALID_LOGIN
|
Salesforce 側からの認証エラー。 |
Security Token が古い(Reset後の最新を使う)、ユーザー名がメール形式フルでない、API Enabled 権限が無い、hostname の誤り(My Domain を使う)。 |
4. サマリー
- AIDB の Oracle-managed heterogeneous connectivityを使うと、ゲートウェイVM無しで Salesforce を DB LINK 参照できます。
- Salesforce 側はCRM Data Stream が ACTIVE、ユーザーのSecurity Tokenが必要です。
- DB LINK 作成をAPPユーザー(AIDEMO)で実施するなら、以下をADMINから付与するのがポイントです。
EXECUTE ON DBMS_CLOUD_ADMINCREATE DATABASE LINKREAD/WRITE ON DIRECTORY DATA_PUMP_DIR
- 作成後は
SELECT ...@<dblink>で Salesforce データを SQL から横断参照できます。
5. 最後に
Autonomous Database(ADB)の Select AI を使うと、SQL が書けなくても「自然言語で質問するだけ」でデータにアクセスできるようになり、「データはあるのに活かしきれない」という課題を減らせます。
Select AI Sidecar は、専用または既存の ADB を「サイドカー」として使い、SQL への翻訳や他システムとのフェデレーテッド・クエリ処理を肩代わりしてくれる仕組みです。サイドカー上のセキュアなリポジトリ、好きな LLM との連携、複数クラウド/複数データソースをまたいだクエリ機能により、データへのアクセス性と活用の幅をシンプルに高めることができます。