1
0

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 Autonomous AI Database から Salesforce へ DB LINK を作成する(Oracle-managed heterogeneous connectivity)

Last updated at Posted at 2025-11-25

1. 背景

Autonomous AI Database (AIDB)では、Oracle-managed heterogeneous connectivityにより、ゲートウェイVM無しで Salesforce を SQL で参照するDB LINKを簡単に作成できます。

  • 対応 db_typesalesforce が含まれ、ポートは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してメールで受け取る」 方式です。

  1. Salesforce ログイン
  2. 右上アイコン → Settings
  3. My Personal Information → Reset My Security Token
  4. 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 AIDEMOREAD/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_ADMIN
    • CREATE DATABASE LINK
    • READ/WRITE ON DIRECTORY DATA_PUMP_DIR
  • 作成後は SELECT ...@<dblink> で Salesforce データを SQL から横断参照できます。

5. 最後に

Autonomous Database(ADB)の Select AI を使うと、SQL が書けなくても「自然言語で質問するだけ」でデータにアクセスできるようになり、「データはあるのに活かしきれない」という課題を減らせます。

Select AI Sidecar は、専用または既存の ADB を「サイドカー」として使い、SQL への翻訳や他システムとのフェデレーテッド・クエリ処理を肩代わりしてくれる仕組みです。サイドカー上のセキュアなリポジトリ、好きな LLM との連携、複数クラウド/複数データソースをまたいだクエリ機能により、データへのアクセス性と活用の幅をシンプルに高めることができます。

参考資料

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?