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

Google の MCP Toolbox for Databases から Oracle Autonomous Database に wallet 接続してみた

0
Last updated at Posted at 2026-06-06

1. はじめに

AI エージェントからデータベースを使う「MCP でつなぐ」やり方をいくつか試してきました。その切り口の延長で、今回は Google が公開している MCP Toolbox for Databases(以下 MCP Toolbox)を Oracle Autonomous Database(以下 ADB)に向けて 使ってみます。

MCP Toolbox とは、AI エージェントとデータベースの間に立って「SQL をツール化して MCP / HTTP で公開する」サーバです(詳しくは 2 章)。

公式ドキュメントには Oracle 用の接続設定も載っているのですが、サンプルやチュートリアルは Cloud SQL / BigQuery / Looker が中心で、ADB/Oracle への接続自体はあまり話題になってませんでした。本記事は、その接続手順とつまずいた点を 次に自分が同じことをやるときのための記録 としてまとめたものです。

本記事は 「Google の MCP Toolbox から Oracle に接続する」 話です。Oracle 自身が提供する MCP のうち、ADB 組み込み MCP のように DB 側がサーバになる ものとは立ち位置が違います。一方で SQLcl MCP のように「手元のプロセスが DB につなぎに行く」タイプは MCP Toolbox と構造が近く、両者の違いはむしろ ベンダーや、SQL を定義する主体 にあります。詳しくは 2.4 で対比します。

1.1. 今回のゴール

# 確認したいこと OK の条件
1 手元の MCP Toolbox から ADB 26ai に wallet(mTLS)接続できる ADB への接続が成立する
2 Oracle Instant Client なし(純 Go ドライバ)で接続が成立する useOCI:falsewalletLocationconnectionString で接続できる
3 定義した SQL ツールが API 経由で正しい結果を返す 「重い SQL 上位」「1 実行あたり上位」「sql_id 詳細」の3ツールが、SQLcl 直実行と同じ SQL_ID・並びを返す

1.2. 結論(先出し)

  • MCP Toolbox は Oracle Instant Client なし でも ADB に wallet 接続できる。純 Go ドライバ(go-ora)を使う useOCI: falsewalletLocation の構成にすればよい
  • 接続記述子の指定でつまずいた。go-ora は tnsAlias(tnsnames.ora のエイリアス)を解決しない ので、host:port/service_name 形式の connectionString を直接渡す必要がある
  • tnsAdmin を使う wallet 接続は useOCI: true(OCI ドライバ)専用 で、こちらは Oracle Instant Client のインストールが要る。Instant Client を入れたくないなら go-ora 一択
  • 起動コマンドの --configルートのフラグtoolbox serve --config ... ではなく toolbox --config ... で起動する

2. MCP Toolbox for Databases とは

2.1. 立ち位置

MCP Toolbox for Databases は、Google が OSS で公開しているデータベース向けの ツールサーバ です(旧名 genai-toolbox。リポジトリは googleapis/mcp-toolbox)。ざっくり言うと、「この SQL をこの名前のツールとして公開する」 という定義を YAML に書いておくと、それを MCP(Model Context Protocol)や HTTP API 経由でエージェントから呼べるようにしてくれます。

エージェントから見ると「DB に直接つなぐ」のではなく「Toolbox が公開しているツールを叩く」形になります。SQL は Toolbox 側の YAML に閉じ込められ、エージェントには パラメータだけ を渡させる(バインド変数で受ける)ので、自由な SQL を投げさせずに済むのが利点です。

MCP(Model Context Protocol)は、AI エージェントに外部ツールやデータソースを接続するための共通プロトコルです。MCP Toolbox は「DB をツールとして MCP に生やす」役割を担います。

2.2. なぜ「DB の前に1枚かませる」のか

  • SQL を YAML に集約できる: ツールの中身(SQL)は人間がレビュー・管理し、エージェントには category などのパラメータだけ渡させる
  • 接続情報を1か所に閉じ込められる: wallet パスや接続記述子・認証情報は Toolbox の設定(+環境変数)に集約。エージェント側は DB クレデンシャルを持たない
  • 複数 DB を横断できる: 1 つの Toolbox に Cloud SQL も BigQuery も Oracle も sources として並べられる。今回はその「Oracle」を試す

「手元でサーバを 1 つ立てて、その後ろの DB につなぐ」という構造自体は、Oracle の SQLcl MCP(sql -mcp)とよく似ています。MCP Toolbox ならではの強みは、その後ろに Cloud SQL / BigQuery / Oracle などを同じ枠組みで並べられる(マルチ DB)点です。

2.3. Oracle 対応と「想定される使いどころ」

MCP Toolbox の Oracle ソースは、接続方法として 2 系統のドライバ を持っています(公式: Oracle source)。

観点 純 Go ドライバ(go-ora) OCI ドライバ(godror)
設定 useOCI: false(既定)+ walletLocation useOCI: truetnsAdmin
Oracle Instant Client 不要 必須(別途インストール)
接続記述子 connectionString(host:port/service) tnsAlias(tnsnames.ora のエイリアス)
今回の選択 ✅ こちらを採用

なぜ純 Go ドライバを選んだか

useOCI: true で使う OCI ドライバ(godror)は、Oracle 公式の C クライアントライブラリ= Oracle Instant Client を別途インストールして、そこを参照する必要があります。一方 go-ora は純 Go 実装なので Instant Client が要りません。両者のメリット・デメリットを整理すると次のとおりです。

純 Go ドライバ(go-ora/useOCI:false OCI ドライバ(godror/useOCI:true
メリット ・Instant Client 不要で Toolbox バイナリ単体で完結
・OS 依存の C ライブラリが不要で、コンテナ / CI に載せやすい
・クロスプラットフォームで取り回しが楽
・Oracle 公式の C クライアント経由で 互換性・機能網羅性が高い
tnsnames.ora / tnsAlias をそのまま使える
・高度な接続オプションやエンタープライズ機能に強い
デメリット ・サードパーティ実装で、一部の型対応や高度な接続オプションは OCI 系に劣ることがある
tnsnames.ora を読まない(後述の 6.1 のハマりどころ)
・Instant Client のインストールとバージョン管理が必要
・OS / アーキ依存で、コンテナ・CI のセットアップが重くなる

今回は 「手元やコンテナでサッと立てて Oracle につなぐ」 ことを優先し、セットアップの軽い go-ora を選びました。逆に、既存の tnsnames.ora 資産をそのまま流用したい・公式ドライバの互換性を重視する、といった本番寄りの要件なら OCI ドライバ(+Instant Client)も選択肢になります。

なお、この go-ora + wallet の構成は手元の ADB 接続に限らず、Oracle Database@Google Cloud のように Oracle に wallet で接続したい場面 でも同じ考え方が使えると考えられます(接続記述子と wallet を対象のものに差し替えるだけ)。

go-ora は sijms/go-ora という純 Go 実装の Oracle ドライバです。C ライブラリ(Instant Client)に依存せず、バイナリ1つで完結するのが利点です。

2.4. Oracle 自身が立てる MCP との違い(過去記事との対比)

私はこれまで、Oracle ADB に対して「いま重い SQL を教えて」を聞くための Oracle 公式の MCP 経路 をいくつか検証してきました(4 経路の横ぐし比較)。今回の MCP Toolbox と混同しないよう、立ち位置を整理しておきます。

まず構造で分けると、MCP Toolbox と SQLcl MCP は近い仲間 です。どちらも「自分でプロセスを立て、その後ろの DB につなぎ、LLM クライアントには MCP として見せる」形だからです。一方 OCI DB Tools MCP(OCI マネージドサービス)や ADB 組み込み MCP(DB 自身がサーバ)は、サーバ実体が Oracle / OCI 側にあり、そこに接続しに行く 形で、立ち位置が違います。

そのうえで MCP Toolbox と SQLcl MCP の違いは、主に ベンダー・対象 DB・SQL を定義する主体 に出ます。

観点 MCP Toolbox(本記事) SQLcl MCP OCI DB Tools MCP ADB 26ai 組み込み MCP
ベンダー Google(OSS) Oracle(SQLcl 同梱) Oracle(OCI マネージド) Oracle(ADB 内蔵)
サーバ実体(誰が立てるか) 自分で立てる汎用サーバ 自分で立てる sql -mcp(SQLcl が動くホストならどこでも) OCI Database Tools サービス ADB 自身の MCP エンドポイント
対象 DB マルチ DB(Cloud SQL / BigQuery / Oracle 等。Oracle は1ソース) SQLcl が繋げる Oracle DB 全般 OCI DB Tools 対応 DB ADB-S
SQL を定義するのは 利用者が YAML で定義(既定 read-only) LLM が生 SQL を書く DBA が定義した SQL / レポート 外部 LLM が SQL を書く(PL/SQL Function 経由)
LLM 自由度 低(承認済みツールのみ実行) 最高(任意の生 SQL) 低〜中(事前承認の SQL/レポート) 低(固定 Function に引数)
認証・認可 DB ユーザー+wallet(mTLS) SQLcl 接続プロファイル IAM+Application Role+PAT OAuth

設計思想として見ると、MCP Toolbox は 「あらかじめ SQL を定義してツール化し、LLM には承認済みのものだけ叩かせる」 点で、SQLcl MCP(LLM が生 SQL を書く)よりむしろ OCI DB Tools MCP の Custom SQL Tool に近い です(3タイプの権限分離記事)。違いは、MCP Toolbox が Oracle 専用ではなく・OSS で・自分で立てられる こと。Oracle に閉じた経路ではなく「複数 DB を同じ枠組みで扱いたい」ときの選択肢になります。


3. 準備

3.1. 検証環境

項目 内容
MCP Toolbox v1.4.0(windows/amd64、純 Go ドライバ go-ora、Instant Client 不要)
DB OCI Autonomous Database adbtest02(26ai / 23.26.2.2.0)
接続ユーザー dba_copilot(V$SQL を参照できる権限を持つユーザー)
接続 connectionString(host:1522/service・TCPS)+ walletLocation(mTLS)

バージョンは v1.4.0 時点のものです。MCP Toolbox は更新が速く、フラグ名やプリビルトツールの種別などが将来変わる可能性があります。再現する際は最新版のドキュメントとの差分に注意してください。

3.2. Toolbox バイナリの入手

GitHub のリリースページ から、自分の OS 向けのバイナリ(今回は windows/amd64・v1.4.0)をダウンロードします。

3.3. ADB の wallet 接続準備

ADB のコンソールから wallet(Instance Wallet / Regional Wallet)をダウンロードして展開しておきます(公式: ウォレットのダウンロード)。go-ora が使うのは主に以下です。

  • cwallet.sso … 自動ログイン wallet(パスワード不要で TLS 鍵を読める)
  • ewallet.pem … TLS/mTLS 用の鍵・証明書
  • tnsnames.ora … 接続記述子。ここから host / port / service_name を取り出す(後述)

接続には ADB 上のユーザーとそのパスワードを使います。今回は「いま重い SQL を教えて」を題材にするため、V$SQL を参照できるユーザーdba_copilot)を使います。秘匿値は YAML に直書きせず、環境変数経由で渡します(4 章)。


4. tools.yaml と接続設定

4.1. ソース定義(go-ora + wallet)

MCP Toolbox の設定は tools.yaml 1 ファイルに sources(接続先)/tools(公開する SQL)/toolsets(ツールの束)を書きます(公式: Configuration)。Oracle ソースは次のようにしました。

sources:
  oracle-adb:
    kind: oracle
    # 純 Go ドライバ(go-ora)は tnsAlias を解決しないため、
    # host:port/service_name 形式の接続文字列を環境変数で渡す。
    #   例: adb.<region>.oraclecloud.com:1522/<service>_high.adb.oraclecloud.com
    connectionString: ${ORACLE_CONNECT_STRING}
    # 純 Go ドライバ用の wallet ディレクトリ(cwallet.sso / ewallet.pem を含む)
    walletLocation: ${ORACLE_WALLET_DIR}
    user: ${ORACLE_USER}
    password: ${ORACLE_PASSWORD}

ポイントは 2 つです。

  • kind: oracle のまま useOCI を書かない(既定の false = go-ora)。walletLocation を指定すると、go-ora が内部で ssl=true&wallet=<dir> を生成して mTLS 接続してくれます
  • connectionString には host:port/service_name を渡す(tnsAlias ではない。理由は 6 章)。tenancy 固有情報を含むのでファイルに直書きせず ${ORACLE_CONNECT_STRING} で環境変数化します

接続記述子は wallet 内の tnsnames.ora から取り出します。ADB は protocol が tcps・port が 1522 です。たとえば adbtest02_high のエントリの (host=...)(port=1522)(service_name=...) を組み立てて、次の形にします(host / service は環境固有なのでマスク)。

adb.<region>.oraclecloud.com:1522/****_adbtest02_high.adb.oraclecloud.com

4.2. 秘匿値の環境変数

${...} 参照する値は、Toolbox 起動前にシェルの環境変数で与えます。

# Windows / PowerShell の例(値はマスク)
$env:ORACLE_CONNECT_STRING = "adb.<region>.oraclecloud.com:1522/****_adbtest02_high.adb.oraclecloud.com"
$env:ORACLE_WALLET_DIR     = "C:\Users\<you>\wallet\Wallet_adbtest02"
$env:ORACLE_USER           = "dba_copilot"
$env:ORACLE_PASSWORD       = "********"

接続記述子・wallet パス・パスワードは tools.yaml に残さないでください。${ENV} 参照にして、値はシェル側で与えます。

MCP Toolbox の Oracle ソースは DB ユーザー名/パスワードでの接続が必須で、OCI / ADB のマネージド MCP のように OAuth でパスワードレス接続することはできません(本記事執筆時の v1.4.0)。

4.3. 公開するツール(oracle-sql)

題材は、私がこれまでシリーズで扱ってきた 「いま重い SQL を教えて」4 経路の横ぐし比較)と同じ DBA 向けユースケースにしました。V$SQL を読む SQL を 3 本ツール化します。oracle-sql 種別のツールは 既定で read-only です。

tools:
  # 総経過時間が長い SQL 上位 N 件
  top_sql_by_elapsed:
    kind: oracle-sql
    source: oracle-adb
    statement: |
      SELECT sql_id,
             ROUND(elapsed_time/1e6, 2)                        AS elapsed_sec,
             executions                                        AS execs,
             ROUND(elapsed_time/GREATEST(executions,1)/1000,2) AS ms_per_exec,
             SUBSTR(sql_text, 1, 80)                           AS sql_text
      FROM v$sql
      WHERE elapsed_time > 0
      ORDER BY elapsed_time DESC
      FETCH FIRST :1 ROWS ONLY
    description: |
      総経過時間が長い SQL を上位 N 件返す。
    parameters:
      - name: top_n
        type: integer
        description: "返す件数(例: 5)"

  # 1 実行あたりが重い SQL 上位5件
  top_sql_by_avg_elapsed:
    kind: oracle-sql
    source: oracle-adb
    statement: |
      SELECT sql_id,
             executions                            AS execs,
             ROUND(elapsed_time/executions/1000,2) AS ms_per_exec,
             ROUND(elapsed_time/1e6, 2)            AS elapsed_sec,
             SUBSTR(sql_text, 1, 80)               AS sql_text
      FROM v$sql
      WHERE executions >= :1
      ORDER BY elapsed_time/executions DESC
      FETCH FIRST 5 ROWS ONLY
    description: |
      指定回数以上実行された SQL のうち、1 実行あたりの経過時間が長いものを上位5件返す。
    parameters:
      - name: min_exec
        type: integer
        description: "対象とする最小実行回数(例: 5)"

  # 指定 sql_id の詳細(child / 実行計画ハッシュ / I-O)
  sql_detail_by_id:
    kind: oracle-sql
    source: oracle-adb
    statement: |
      SELECT sql_id, child_number AS child, plan_hash_value AS plan_hash,
             executions AS execs, ROUND(elapsed_time/1e6, 2) AS elapsed_sec,
             buffer_gets, disk_reads
      FROM v$sql
      WHERE sql_id = :1
      ORDER BY child_number
    description: |
      指定した sql_id の子カーソルごとの実行計画ハッシュ・実行回数・I/O を返す。
    parameters:
      - name: sql_id
        type: string
        description: "対象の SQL_ID"

toolsets:
  dba_copilot:
    - top_sql_by_elapsed
    - top_sql_by_avg_elapsed
    - sql_detail_by_id

top_sql_by_elapsedFETCH FIRST :1 ROWS ONLY のように、件数指定にもバインド変数が使えます(go-ora でも問題なく解決されました)。パラメータの typeinteger / string を使い分けます。


5. 接続して動かす

5.1. 起動

--enable-api を付けて HTTP API も有効化して起動します。--config の位置に注意(6 章)。

.\toolbox.exe --config tools.yaml --enable-api --log-level DEBUG

起動ログ(抜粋)です。go-ora がどの接続文字列を組み立てたかが DEBUG に出ます(host / service はマスク)。

INFO  "Starting MCP Toolbox for Databases version 1.4.0+binary.windows.amd64..."
DEBUG "Using go-ora driver (pure-Go) with wallet and serverString:
        adb.<region>.oraclecloud.com:1522/****_adbtest02_high.adb.oraclecloud.com"
INFO  "Initialized 1 sources: oracle-adb"
INFO  "Initialized 3 tools: top_sql_by_elapsed, top_sql_by_avg_elapsed, sql_detail_by_id"
INFO  "Initialized 2 toolsets: dba_copilot, default"
DEBUG "server listening on 127.0.0.1:5000"
INFO  "Server ready to serve!"

Initialized 1 sources: oracle-adbServer ready to serve! が出れば、ADB への wallet 接続が成立しています(ゴール1・2 達成)。

5.2. toolset 一覧

curl http://127.0.0.1:5000/api/toolset/dba_copilot

定義した 3 ツールが返ります。

- top_sql_by_elapsed
- top_sql_by_avg_elapsed
- sql_detail_by_id

5.3. ツールを invoke して DB 直実行と突き合わせ

/api/tool/<name>/invoke に JSON でパラメータを渡します。

# 総経過時間が長い SQL 上位5件
curl -X POST http://127.0.0.1:5000/api/tool/top_sql_by_elapsed/invoke `
  -H "Content-Type: application/json" -d '{\"top_n\":5}'

# 5回以上実行された SQL のうち1実行あたりが重いもの
curl -X POST http://127.0.0.1:5000/api/tool/top_sql_by_avg_elapsed/invoke `
  -H "Content-Type: application/json" -d '{\"min_exec\":5}'

# 指定 sql_id の詳細
curl -X POST http://127.0.0.1:5000/api/tool/sql_detail_by_id/invoke `
  -H "Content-Type: application/json" -d '{\"sql_id\":\"b39m8n96gxk7c\"}'

返ってきた結果です。検証中の ADB では、自動メンテナンス系(dbms_autotask / auto index / dbms_stats)が上位を占めていました。これは負荷をかけていない Autonomous Database でも普通に見られる、ありのままの姿です。

top_sql_by_elapsed{"top_n":5}・総経過時間 降順)

sql_id elapsed_sec execs ms_per_exec sql_text(先頭)
b39m8n96gxk7c 425.92 149 2858.50 call dbms_autotask_prvt.run_autotask ( :0,:1 )
ampw9ddqufjd3 231.24 34 6801.14 begin /*KAPI:capture*/ dbms_auto_index_internal.capture_sts; end;
avzy19hxu6gg4 224.76 34 6610.51 SELECT VALUE(P) FROM TABLE(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(...
998uh4b7wk3u1 203.25 4 50812.79 /* SQL Analyze(13860,3) */ SELECT /*+PARALLEL(1)...
93w8sdhx08qwf 186.36 34 5481.22 begin /* KAPS */ dbms_stats.gather_st_job_continuous_proc; end;

top_sql_by_avg_elapsed{"min_exec":5}・1 実行あたり 降順・上位5)

sql_id execs ms_per_exec elapsed_sec sql_text(先頭)
ampw9ddqufjd3 34 6801.14 231.24 begin /*KAPI:capture*/ dbms_auto_index_internal.capture_sts; end;
afcz0dh295hzp 20 6740.06 134.80 SELECT /*+ first_rows(1) */ sql_id, force_matching_signature...
avzy19hxu6gg4 34 6610.51 224.76 SELECT VALUE(P) FROM TABLE(DBMS_SQLTUNE.SELECT_CURSOR_CACHE(...
61znfd8fvgha6 27 6594.68 178.06 SELECT new.sql_seq, old.plan_hash_value, sqlset_row(...
93w8sdhx08qwf 34 5481.22 186.36 begin /* KAPS */ dbms_stats.gather_st_job_continuous_proc; end;

sql_detail_by_id{"sql_id":"b39m8n96gxk7c"}・子カーソル詳細)

sql_id child plan_hash execs elapsed_sec buffer_gets disk_reads
b39m8n96gxk7c 3 0 149 425.92 9730506 231004

top_sql_by_elapsed と同じ SELECT を SQLcl で直接実行した結果も、同じ SQL_ID・同じ並び・同じ値 でした(ゴール3 達成)。Toolbox 経由でも素の SQL でも同じものが返る=接続とバインド変数が正しく機能している、ということです。

V$SQL は累積カウンタの動的ビューなので、elapsed_time などの絶対値は取得時刻が離れると少しずつ増えます。今回は invoke と SQLcl 直実行を続けて取得したため値まで一致しましたが、厳密に比べる場合は「SQL_ID と並びが一致するか」で見るのが確実です。


6. ハマりどころ

接続までにつまずいた点を、自分の備忘として残します。

6.1. go-ora は tnsAlias を解決しない → connectionString を使う

公式の Oracle ソースの例には tnsAlias(tnsnames.ora のエイリアス)を使う書き方があります。これをそのまま tnsAlias: adbtest02_highwalletLocation で書いたところ、起動時に次のエラーで落ちました。

address adbtest02_high: missing port in address

【原因】 純 Go ドライバ(go-ora)は tnsnames.ora を読まず、接続先のホスト部に host:port/service を直接要求します。tnsAlias に書いた adbtest02_high を「ホスト名」として解釈し、ポートが無いと言って落ちていました。

【対処法】 tnsnames.ora から host:1522/service_name(ADB は protocol=tcps・port 1522)を取り出し、connectionString で渡します。wallet は walletLocation のままで mTLS が成立します(go-ora が内部で ssl=true&wallet=<dir> を生成)。

# NG(go-ora では解決されない)
# tnsAlias: adbtest02_high

# OK(host:port/service を直接渡す)
connectionString: ${ORACLE_CONNECT_STRING}   # adb.<region>...:1522/****_adbtest02_high...
walletLocation: ${ORACLE_WALLET_DIR}

6.2. tnsAdmin は useOCI:true(OCI ドライバ)専用=Instant Client が要る

tnsAdmin に wallet フォルダを指定すれば tnsAlias も解決されるのでは?」と考えましたが、tnsAdmin が効くのは useOCI: true(godror=OCI ドライバ) のときだけです。そしてその OCI ドライバは Oracle Instant Client のインストールが前提 になります。

つまり選択肢は次のとおりです。

やりたいこと 設定 Instant Client
Instant Client を入れたくない useOCI:false(go-ora)+ walletLocationconnectionString 不要
tnsnames.ora のエイリアスで繋ぎたい useOCI:true(godror)+ tnsAdmintnsAlias 必須

今回は Instant Client を入れたくなかったので、前者(go-ora + connectionString)で通しました。

6.3. --config はルートのフラグ(serve サブコマンドには無い)

最初 toolbox serve --config tools.yaml で起動しようとして弾かれました。

Error: unknown flag: --config

【原因】 --configserve サブコマンドのフラグではなく、ルートの toolbox [flags] 側のフラグです(toolbox serve --help を見ると serve には --config が無い)。ルートの toolbox が直接サーバを起動します。

【対処法】 serve を付けずに起動します。HTTP API(/api)を使うには --enable-api も必要です。

.\toolbox.exe --config tools.yaml --enable-api

7. まとめ

Google の MCP Toolbox for Databases から Oracle Autonomous Database に、Oracle Instant Client なし(純 Go ドライバ go-ora)で wallet 接続し、定義した SQL ツールが API 経由で正しく動くところまで確認できました。

ポイント 結論
Instant Client go-ora(useOCI:false)+ walletLocation なら 不要
接続記述子 go-ora は tnsAlias を解決しない → host:port/serviceconnectionString で渡す
tnsAdmin / tnsAlias を使う道 useOCI:true(OCI ドライバ)専用で Instant Client 必須
起動コマンド --configルートのフラグtoolbox --config ...)。API は --enable-api
秘匿値 接続記述子・wallet パス・パスワードは ${ENV} で外出し

公式ドキュメントには Oracle ソースの設定項目は揃っているものの、「ADB + go-ora + wallet」の組み合わせで実際にどこが効くか(とくに tnsAlias が解決されない件)は、動かしてみて初めて分かりました。同じ構成で繋ぐ人の手間が少しでも減れば幸いです。


参考

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