繁体   English   中英

使用 PHP PDO_OCI 连接到多个版本的 Oracle DB

[英]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.

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