前提・実現したいこと
前提として、PHPを利用したシステムと、タスクスケジューラを使い夜間にデータ取得のために作成しているバッチファイルがいくつかあります。
取得したいデータによって、接続先が異なる場合もtnsnames.oraに追加したりデータベースリンクを使ってテーブルの結合を可能にしています。
そこで今回、一部の接続先のドライバーが以下に変更になります。
変更前:Oracle in Oraclient12home1_32bit
変更後:SQL server
これにより修正するファイルの影響は「.php」「.bat」が該当します。
変更にあたり、作業した内容は以下になります。
・ODBCデータソースアドミニストレーターで対象のドライバーをシステムDSN(SQL server)に追加
・新しい接続先のデータベースリンクを作成
・tnsnames.oraに追加
PHPソースにあるSQL文はodbc_connect()を使い対象のドライバーへ接続はできましたが、他の部分での接続でつまづいており、以下に記します。
【実現したいこと】
・「.php」「.bat」 のSQL文で使っているデータベースリンクでの接続を可能にしたい
→tnsnames.oraの書き方が間違っていると思うのですが、知恵をお借りしたいです
→参考サイト等を調べると、SQLserver接続するのにlistener.oraの修正について出てきたが、既存のコードから修正する箇所が不明のまま、↓のコードを見てこのファイルにも原因があるのかも知りたいです。
→他、環境面や設定に問題があるか知恵をお借りしながら確認したいです
変更にあたり、作業したことについて以下に記載していきます。
該当のソースコード
①
データベースリンク作成時のSQL(ここでの名前はDB_LINK1とします)
CREATE PUBLIC DATABASE LINK DB_LINK1
CONNECT TO <ユーザ名> IDENTIFIED BY <パスワード>
USING '<DB接続名>';
②
Cドライブ内のlistener.oraの中身(★★★は同じ文字列(host_name)が入ってます)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=★★★)
(ORACLE_HOME=D:¥oracle¥product¥11.2.0¥dbhome_1)
(PROGRAM=★★★)
(ENVS=″EXTPROC_DLLS=ONLY:D:¥oracle¥product¥11.2.0¥dbhome_1¥BIN¥oraclr11.dll″)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <マシン名>)(PORT = 1521))
)
)
ADR_BASE_LISTENER=D:¥Oracle
③
Cドライブ内のtnsnames.oraの中身(ここでの名前はmydbとします)
mydb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = <host_name>)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mydb)
)
)
発生している問題・エラーメッセージ
以下のSQL、 select * from DUAL@DB_LINK1 を実行すると、以下のエラーメッセージが出ます 『ORA-12541:TNS:リスナーがありません。』
試したこと
以下の2点を修正してみました。あらゆるサイトの情報から修正してみたことを記載します。
①
最初に作成したデータベースリンクのUSINGの部分に、listener.ora のhost_nameを入れて再作成しました。(↑のSID_NAMEと同じ文字列です)
USING '★★★(host_name)';
②
①に合わせて、tnsnames.oraにリスナーの<host_name>を追記しました。(↑のSID_NAMEと同じ文字列です)
また(HS = OK)を追記しました。
mydb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <host_name>)(PORT = 1521))
(CONNECT_DATA =
(SID = <(listener.oraの)host_name>)
)
(HS = OK)
)
補足情報(FW/ツールのバージョンなど)
システム情報(OS)は以下になります。
→ Windows server 2012 RS
他、不足している情報あれば返答いたします。
インフラの部分はまだまだ初心者で、日々調べながら理解できるようには努めていますが、こちらに関して一人では限界に達してしまい有識者の知恵をお借りしたい所存です。
よろしくお願いいたします。
あなたの回答
tips
プレビュー