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

如何解决 ORA-12154:在 Azure 中使用 PHP OCI8 oci_connect 时出现 TNS 错误

如何解决如何解决 ORA-12154:在 Azure 中使用 PHP OCI8 oci_connect 时出现 TNS 错误

我正在尝试连接到新合作伙伴 11g 版本 11.2.0.4.0 的 oracle 数据库,但收到以下错误

警告: oci_connect():ORA-12545:连接失败,因为目标主机或对象不存在

合作伙伴确认提供的连接字符串是正确的。

这是我的 oci_connect() 的当前结构和正在使用的所述连接字符串:

$connection_string = '(DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE = ON)(FAIlovER = ON)(ADDRESS = (PROTOCOL = TCP)(HOST = HOST)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = SERVICE_NAME)))'
$conn = oci_connect($username,$password,$connection_string,'UTF8',OCI_DEFAULT);

但是,当使用以下结构时:

$connection_string = 'user/password@host:port/service_name'
$conn = oci_connect($username,OCI_DEFAULT);

它返回:

警告:oci_connect():ORA-12154:TNS:无法解析指定的连接标识符

为了清楚地说明我所做的事情,以下是我创建应用服务和安装 oci8 PHP 驱动程序所采取的步骤:

  1. 我创建了一个 Azure 应用服务,它使用 PHP 版本 7.3.26;
  2. 在 /home/site 中创建一个新的 oracle 目录;
  3. 将 Instant Client 添加到新的 oracle 目录中,在本例中为 Instant Client Linux x86-64 18.5.0.0.0v(基本和 sdk 包);
  4. 继续使用命令 pecl install oci8-2.2.0;
  5. 我在安装过程中指出了instant client的位置,oci8驱动安装成功;
  6. 将新的 oci8.so 文件复制到 /home/site 内的 ext 目录;
  7. 创建了一个 PHP.ini 文件,设置了 extension=/home/site/ext/oci8.so
  8. PHP_INI_SCAN_DIR 配置定义为 /usr/local/etc/PHP/conf.d:/home/site/ini;
  9. 将 LD_LIBRARY_PATH 定义为 /home/site/oracle/instantclient_18_5。

之后,我可以在我的 PHPinfo() 页面上确认 oci8 扩展的存在。

按照本文档执行的步骤:Azure App Service Linux - Adding PHP Extensions

我后来也将 ORACLE_HOME 设置定义为 /home/site/oracle/instantclient_18_5,但没有区别。

我没有想法,有人可以告诉我可能导致此问题的原因以及如何解决


编辑:

在与合作伙伴的进一步对话之后,很明显,考虑到相同的当前配置,我没有办法连接到他们的数据库。正如克里斯托弗·琼斯 (Christopher Jones) 在评论中指出的那样,这是一个网络问题,ORA-12545,ORA-12541,ORA-12514,& ORA-01017 – How to fix for SQL Developer在这种情况下,缺乏适当的反馈。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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”。这是什么意思?