[英]Connect to multiple versions of Oracle DB with PHP PDO_OCI
我需要一个带有 php 7.4 的 ubuntu 20.04 服务器来连接多个版本的 oracle 数据库。 我在 18.3 版中安装了 oracle 即时客户端并加载了 oci8 php 模块。 对于新版本的 oracle 数据库,这很好用。 对于较旧的连接失败。
这些即时客户端版本已安装:
ii oracle-instantclient18.3-basic 18.3.0.0.0-4 amd64 Oracle Instant Client Basic package
ii oracle-instantclient18.3-devel 18.3.0.0.0-4 amd64 Development headers for Instant Client.
ii oracle-instantclient18.3-jdbc 18.3.0.0.0-4 amd64 Supplemental JDBC features for the Oracle Instant Client
ii oracle-instantclient18.3-odbc 18.3.0.0.0-4 amd64 Oracle Instant Client ODBC
这是 php 版本:
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS
基本上必须支持这个版本:
oracle db 9.2.0.6.0
oracle db 9-0.1.3.1
oracle db 11g 11.2.0.1.0
oracle db 12c 12.2.0.1.0
oracle db 19c 12.2.0.3
oracle db 19c 19.0.0.0.0
这是当前代码:
<?php
$dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =<SERVERNAME>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <SRVNAME>)))";
if(!@($conn = oci_connect('<user>','<pass>',$dbstr)))
{
print_r(ocierror());
die("Connect Error");
}
?>
可能吗? 我需要一些提示如何实现这一点
Oracle 9.0.1 是旧的。 就像“天哪,看看这有多少软盘”老了。 这个版本很快就被取消支持 Oracle 9.2。
如果您查看客户端/服务器互操作性矩阵(需要 Metalink 帐户),您必须将 go 降至扩展矩阵,因为汇总矩阵甚至不再包括 9.0.1。 在那里,您会看到与 9.0.1 数据库兼容的 Oracle 客户端的最新版本是 10.1.0。 我很确定它早于 Oracle 即时客户端,因此您可能需要安装完整的 10.1 客户端。 您可能需要提出支持请求才能访问旧版本的客户端 - Oracle 通常不会费心创建旧版本的链接。
假设您确实获得了一个足够古老的客户端版本,那么它肯定没有在您使用的 Ubuntu 或 PHP 版本上获得认证。 它可能安装和工作得很好。 您可能需要 go 与两者的早期版本。
我强烈建议回到导致这些要求的任何原因,以确保他们真正了解支持 20 年旧软件的成本。 如果有人告诉您构建一个新的 web 站点并确保它与 Firefox 2(2006 年发布)兼容,您会指出尝试支持 15 年历史的浏览器会产生相当大的成本收获甚微——世界上已经没有多少 Firefox 2 浏览器了。 Oracle 9.0.1 比这早了 5 年,世界上仍然很少有人在运行该版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.