微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用oci_connect连接到Oracle

如何解决使用oci_connect连接到Oracle

我正在尝试使用PHP建立成功的Oracle连接。

这是我的连接字符串的外观:

<?PHP
   $conn = oci_connect("USER","PASS","LOSINGMINDHOST");
   if (!$conn) {
       $e = oci_error();
       error_log(trigger_error(htmlentities($e['message'],ENT_QUOTES),E_USER_ERROR));
   }

   oci_close($conn);
?>

出现以下错误

Warning: oci_connect(): ORA-12170: TNS:Connect timeout occurred

哪个指向带有oci_connect的行。

我正在使用Windows Server 2019。

PHP.ini文件已更新,包括以下内容

extension=oci8_12c

我已经确认上面的dll文件确实在ext文件夹中,列为:

PHP_oci8_12c.dll

不确定为什么PHP.ini文件不包含dll文件的全名。

服务器已安装了64位Ocale 12g即时客户端。

我们已经使用tnsnames.ora文件确认了使用ODBC Data Source Administrator客户端的连接。

我们还有一个listener.ora文件,如下所示:

PROD_MIR =
 (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (COMmunitY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1524))
  (ADDRESS = (COMmunitY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1551))
  (ADDRESS = (COMmunitY = ttp.world)(PROTOCOL = TTP)(Host = LOSINGMINDHOST)(Port = 1538))
)
(CONNECT_DATA =
  (SERVICE_NAME = PROD)
)
)

我们将TNS_ADMIN路径添加到服务器上的环境变量。

我们已经重新启动了服务,甚至重新启动了服务器。

解决方法

如文档(https://www.php.net/manual/en/function.oci-connect.php)所述:

oci_connect(字符串$ username,字符串$ password [,字符串$ connection_string [,字符串$ character_set [,int $ session_mode]]]):资源

connection_string 包含要连接的Oracle实例。它可以是»轻松连接字符串,或tnsnames.ora 文件中的连接名称,也可以是本地Oracle实例的名称。

这是您的情况,请使用正确的tnsnames.ora连接名称。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?