甲骨文,PDO_OCI 与 OCI8

Posted

技术标签:

【中文标题】甲骨文,PDO_OCI 与 OCI8【英文标题】:Oracle, PDO_OCI vs OCI8 【发布时间】:2011-02-03 13:24:01 【问题描述】:

我工作的公司目前使用一些基本功能来抽象 OCI 库作为数据库连接的一种手段。我们正在考虑切换到 php 的 PDO 对象,但从一些快速搜索来看,Oracle 驱动程序似乎不如其他 PDO 驱动程序成熟。如果有人在生产环境中使用过 PDO/oci8,我将不胜感激。

谢谢!

【问题讨论】:

您确实意识到 Oracle PDO 驱动程序被标记为实验性的,对吧? 【参考方案1】:

我没有使用 PDO 驱动程序的个人经验(被标记为 experimental 就足够了,甚至不考虑它)。但在The Underground PHP and Oracle Manual 中,我们可以阅读以下内容,作为PHP PDO 扩展一章的前言:

PDO 扩展和 PDO_OCI 驱动程序是开源的,包含在 PHP 5.1 起。 Oracle 不参与 PDO_OCI。

PHP 社区让 PDO 项目停滞不前,Oracle 建议使用 OCI8 尽可能地代替它,因为它具有更好的功能集, 性能、可靠性和稳定性。 一般情况下使用 PDO_OCI 不推荐用于目的的应用程序。

扩展还没有完成,它可能维护不善(尽管有些bug fixes 时不时地通过)并且多年来一直如此。我不会把我的鸡蛋放在那个篮子里。

【讨论】:

【参考方案2】:

在我看来,Oracle 对开发 PDO 驱动程序不感兴趣,它正在开发自己的驱动程序以使您接近 oracle 数据库...到 oracle 驱动程序...等:)

据我所知,如果你能应付最大的问题,那是没有问题的。 VARCHAR2 的 4000 个字符的文本。如果您需要 CLOB(和/或更大),请不要使用 PDO_OCI。

我创建了一套“PDOSurrogate”类,以替代 Oracle 的 PDO。 当 PDO 足够成熟时,我可以使用 Refactor->Rename 将其更改为 PDO。

【讨论】:

【参考方案3】:

可能是我来晚了……只是想为讨论增加一些价值。我在 OCI8 和 OCI8_11 扩展方面经验丰富,并且使用存储过程/包、CLOB/BLOB 和 XML 完成了一些广泛的工作量曾经用于 ETL(Extract Transform Load)应用程序来处理繁重的工作负载......也相信 oci8 是广泛使用的扩展......而不是 pdo ..

【讨论】:

我认为您误读了这个问题。没有人否认 OCI 的优势。问题是:PDO驱动可靠吗?

以上是关于甲骨文,PDO_OCI 与 OCI8的主要内容,如果未能解决你的问题,请参考以下文章

PDO_OCI:找不到驱动程序

concat 与 || 之间是不是存在性能差异?在甲骨文中

甲骨文 maf 和甲骨文 af

从 SQL 获取值与其他列表的关系是啥。 (甲骨文 APEX 21.11)

甲骨文:LAST_VALUE 与 FIRST_VALUE [重复]

甲骨文。无法理解 FOR 如何与子查询 SELECT INTO 一起使用