4

我目前正在使用 perl 模块 DBI (1.613) 和 DBD::Oracle (1.26) 访问 Oracle 数据库版本 9i (9.2.0.8.0)。该项目的当前范围现在要求我访问版本 8i (8.1.7.4.0) 的 Oracle 数据库,并且根据DBD::Oracle 项目,我只能使用 DBD::Oracle 版本 1.20 访问第二个数据库或以下。

我知道我可以使用 DBD 版本 1.20 来访问两个数据库,但我想知道是否可以安装两个版本的 DBD 模块并为每个数据库使用可接受的版本(不太容易出错)。

4

3 回答 3

6

我不相信服务器版本与您可以使用的 DBD::Oracle 版本有任何关系,只有您安装的客户端库的版本。Oracle 客户端库的 9.2、10.1 和 10.2 版本支持连接到 Oracle 服务器 8.1.7.4,并且最新版本的 DBD::Oracle 仍然与 9.2 以上的所有客户端库兼容,所以我认为您不会实际上根本没有任何问题。但是,如果您安装版本 11 客户端,您将无法连接到低于 9.2.0 的服务器版本。

于 2010-12-15T14:08:02.670 回答
4

将不同版本的 DBI/DBD::Oracle 安装到两个不同的位置,请参见INSTALL_BASE/ --install_base。通过适当地设置PERL5LIB来分别访问它们。

local::lib帮助您自动化这整个事情。

于 2010-12-15T12:16:00.953 回答
3

如果您想从同一个程序运行访问两个数据库版本,您可以执行以下操作:

  • 使用local::lib在系统中安装这两个版本

  • 运行配置为加载一个版本的 DBD::Oracle的DBD::Proxy服务器@LIB

  • 运行@LIB配置为加载其他版本的 DBD::Oracle的脚本

  • 在您的脚本中,像往常一样使用 DBD::Oracle 连接到一个数据库,并通过代理连接到另一个数据库。

于 2010-12-16T18:25:20.330 回答