繁体   English   中英

Oracle 11即时客户端连接到远程Oracle 8i服务器:ORA-12514错误

[英]Oracle 11 instant client connect to remote Oracle 8i server: ORA-12514 error

我遇到了一个问题,我花了几个小时修复它。 这是问题所在:

我正在尝试使用Oracle 11即时客户端连接到远程Oracle 8i服务器:这是我在PHP中的连接字符串:

$ conn = oci_connect('db_user','db_pass',“db_ip / db_service”);

db_ip是服务器的ip,例如“12.34.56.78”。
db_service是服务器的服务,例如“test”。

显示的错误是

ORA-12514:TNS:监听器当前不知道连接描述符中请求的服务

我可以使用同一个客户端连接到另一个Oracle 10g服务器。 php代码相同,只更改db_user或db_pass或db_ip。 未提供db_service。

我不使用tnsnames.ora用于oracle 10g服务器或oracle 8i服务器。 我只是使用服务器的简单IP。 这有关系吗?

Server using: Windows Server 2008 R2
PHP: php 5.2.17
Oracle Instant Client: 11_2

任何想法将不胜感激。

更新的 Php现在也可以使用。 我的php文件夹在Programfiles(x86)下,不允许使用括号。 所以我将整个文件夹移动到C:\\ php,并配置IIS以更改php版本。 参考文献:http://stackoverflow.com/questions/9215983/php-cant-connect-but-sqlplus-can

更新非常感谢贾斯汀的帮助。 有用!!! 我刚刚将sid改为scblive而不是SCBLIVE。 他们的数据库名称是scblive。 我仍在使用10.2.0.1,使用sqlplus,我可以连接到oracle 10g和oracle 8i。 非常感谢!

这是适用于oracle 8i的tns名称:

scblive =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = [oracle 8i ip])(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = scblive)))

另一个问题是,在php代码中,它显示了oracle 10g或oracle 8i的相同错误。

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可以同时适用于oracle 10g和oracle 8i。 有没有人有这些文件的链接? Oracle只能提供10.1.0.5及更高版本。

这是预期的行为。 11.2客户端未经认证可与任何版本的Oracle 8i连接。 您至少需要一个Oracle 9.2.0.4数据库。 如果要与8.1.7数据库连接,则需要Oracle 10.2或更早版本的客户端。 10.2客户端的初始版本与Windows Server 2008 R2系统不兼容,但应该可以安装10.2.0.5客户端补丁集。 如果要连接到早于8.1.7的Oracle数据库,则需要早期版本的Oracle客户端,这可能需要安装早期版本的Windows。

如果您有Metalink访问权限,Metalink 207303.1是客户端/服务器互操作性矩阵

如果您确实安装了10.2.0.5完整客户端,则您的TNS别名需要使用SID。 服务名称在8.1.7中不存在。 您可能希望从能够连接到8.1.7数据库的计算机复制TNS别名。 我的猜测是你想要的

SCBLIVE = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = [ORACLE 8i IP])(PORT = 1521)) 
    (CONNECT_DATA = (SERVER = DEDICATED)(SID = SCBLIVE)) 
  )

如果这不起作用,请在命令行中键入tnsping scblive并复制并粘贴结果。

我将以前的Oracle 9/8客户端的ora ....文件夹和所有相关的dll复制到特定文件夹,并将这两个文件夹放入路径变量中。 一次,我成功使用php中的oci连接Oracle 8.1.7。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM