[PHP-users 34831] Re: PHP PEARでOracleにアクセスするにはどうすればいいでしょうか。
KAMIJO.Yasuyoshi
yasuyoshi_kamijo @ ac.auone-net.jp
2009年 11月 6日 (金) 16:34:35 JST
上條@自宅と申します。
kondoさん、お世話になります。
> サンプルを参考に、以下の接続プログラムを作りましたが、つながりません。
> 気になるのが、'oci8://ユーザ名:パスワード@IPアドレス:ポート番号/DB名';
> と指定しているのにMDB2::connect($dsn)すると、エラーが
> 「** oci8(oci8)://DB名:xxx @ IPアドレス:ポート番号/DB名"」
> となることです。
> 何故かユーザ名がDB名に置き換わってます。
DB名の指定が間違っていませんか。
> # php test.php
> string(254) "_doConnect: [Error message: unable to establish a connection]
> [Native code: 12162]
> [Native message: ORA-12162: TNS: 指定されたNetサービス名は正しくありません。]
>
> ** oci8(oci8)://DB名:xxx @ IPアドレス:ポート番号/DB名"
> MDB2 Error: connect failed
ORA-12162はPEARの問題ではなく、TNSNAMES.ORA内の記述と接続文字列の記
述に誤りがあることを示しています。
エラーメッセージの解説より引用
---------------------------------------------------------------------------
「TNS: 指定されたNetサービス名は正しくありません。」
「TNSNAMES.ORA内またはディレクトリ・サーバー(Oracle Internet Directory)
内のネット・サービス名に対応する接続記述子が誤って指定されています。」
「ローカル・ネーミングを使用している場合は、TNSNAMES.ORAファイル内で対応
する接続記述子に構文エラーがないことを確認してください。ディレクトリ・ネ
ーミングを使用している場合は、ディレクトリ・ネーミング用に管理を介して提
供された情報を確認してください。」
---------------------------------------------------------------------------
> ■サーバA側
> ・OSはRedHatEL5です。
> ・サーバAにはoracle-instantclient11.2をインストールしました。
これはサーバAの方ですよね。
サーバaより次のコマンドをチェックしてみてください。
>TNSPING DB名
> ・/usr/lib/oracle/11.2/client/network/admin/tnsnames.oraの内容
> ------------------------------------------------------------
> DB名 =
> (DESCRIPTION=
> (ADDRESS_LIST=
> (ADDRESS =
> (COMMUNITY=tcp.world)
> (PROTOCOL=TCP)
> (Host=IPアドレス)
> (Port=ポート番号)
> )
> )
> (CONNECT_DATA=(SID=SID)
> )
> )
> ------------------------------------------------------------
sql*plusから接続可能とのことですが、DB名に何を指定していますか?
以上、再チェックをよろしくお願いいたします。
● 作成者:上條 靖芳 e-mail:yasuyoshi_kamijo @ ac.auone-net.jp ●
blog:http://blogs.dion.ne.jp/yasuyoshi/
on DELL Vostro 1520 Genuine Intel(R) CPU 2.00GHz WinXP SP3
Becky! 2.52.00_ja + VB2008 EE + IE8.0 + Oracle11gR1(11.1.0.7)
PHP-users メーリングリストの案内