私はそれを修正するのに何時間も費やしたという問題に遭遇しました。ここに問題があります:
Oracle11インスタントクライアントを使用してリモートのOracle8iサーバーに接続しようとしています。PHPでの接続文字列は次のとおりです。
$ conn = oci_connect('db_user'、'db_pass'、 "db_ip / db_service");
db_ipは、「12.34.56.78」などのサーバーのIPです。
db_serviceは、「test」などのサーバーのサービスです。
表示されるエラーは
ORA-12514:TNS:listenerは現在、接続記述子で要求されたサービスを認識していません
同じクライアントを使用して、別のOracle10gサーバーに接続できます。phpコードは同じですが、db_userまたはdb_passまたはdb_ipのみを変更してください。db_serviceは提供されていません。
oracle10gサーバーまたはoracle8iサーバーのどちらにもtnsnames.oraを使用していません。サーバーのシンプルなIPを使用しています。これは重要ですか?
Server using: Windows Server 2008 R2
PHP: php 5.2.17
Oracle Instant Client: 11_2
任意のアイデアをいただければ幸いです。
更新された Phpも機能するようになりました。私のphpフォルダーはProgramfiles(x86)の下にあり、括弧は使用できません。そこで、フォルダー全体をC:\ phpに移動し、PHPのバージョンを変更するようにIISを構成しました。参照:http://stackoverflow.com/questions/9215983/php-cant-connect-but-sqlplus-can
更新 ジャスティンの助けをどうもありがとう。できます!!!sidをSCBLIVEではなくscbliveに変更しました。それらのデータベース名はscbliveです。私はまだ10.2.0.1を使用しており、sqlplusを使用して、oracle10gとoracle8iの両方に接続できます。どうもありがとう!
これは、Oracle8iで機能するtns名です。
scblive =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = [oracle 8i ip])(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = scblive)))
別の問題が見つかりました。phpコードで、oracle10gまたはoracle8iのどちらでも同じエラーが表示されます。
ORA-12154:TNS:指定された接続識別子を解決できませんでした
次の接続文字列を使用しました。
$ conn = oci_connect('user_name'、'pass'、'scblive');
oracle 10gの場合、以前と同じ接続文字列を使用した場合でも、エラーは次のように表示されます。
$ conn = oci_connect('user_name'、'pass'、[oracle 10g ip]);
何か案は?
以前の更新:@Justinの助けに感謝します。10.2.0.5、10.2.0.4、または10.1.0.0を試しましたが、いずれも機能しませんでした。マトリックスを見ました。インスタントクライアント8.1.7またはインスタントクライアント9.0.1は、Oracle10gとOracle8iの両方で機能するようです。誰かがそれらのファイルへのリンクを持っていますか?Oracleは10.1.0.5以降しか提供できませんでした。