0

我使用了一些不需要安装任何 Oracle 客户端或即时客户端、不需要修改路径、不需要设置 ODBC 数据源或 tnsnames.ora 文件的 Oracle 工具。

我想知道这是怎么做到的。例如,oracmd ( http://www.withdata.com/oracmd.html ) 无需任何其他客户端工具即可连接到 Oracle。所以我们知道这是可能的。

基本上我想创建一个 R 包,它可以读取 SQL 文件并将 ip 地址、端口和 SID/服务名称作为参数并返回数据。唯一需要的安装是安装 R 包。我更喜欢免费/开源许可证来分发包。

我能够在没有客户端的情况下使用 JDBC 构建一个 R 包来执行此操作,但是对于超过 1000 行的数据集,性能很糟糕。我正在寻找比 JDBC 更好的东西。

4

1 回答 1

3

有少数公司对 Oracle 网络协议进行了逆向工程,因此他们不需要包含任何类型的客户端软件。通常,这些公司实施有线协议 ODBC 驱动程序之类的东西。由于 Oracle 网络协议未记录在案并且可能会在不同版本之间发生变化,因此这通常不是一项简单的工作——您所说的是数十甚至数百人年的努力。

绝大多数应用程序(例如您链接到的应用程序)要么在幕后使用 JDBC,并且将包含瘦 JDBC 驱动程序,要么将透明地安装 Instant Client 作为安装过程的一部分。Instant Client 的全部意义在于允许应用程序开发人员将其与他们的应用程序捆绑在一起,以便应用程序安装也可以设置 Oracle 客户端软件。

话虽如此,我认为由于性能问题而需要放弃 JDBC 以及使用 C++ 会产生显着的性能改进的前提对我来说似乎是可疑的。如果操作正确,JDBC 应用程序应该与 C++ 应用程序一样快速地提取数据。真正的瓶颈应该是数据库运行查询的能力和网络传输数据的能力。当然可以编写简单的 JDBC 代码来产生非常差的性能,但这更像是一个应用程序编程问题而不是 API 问题。

于 2013-06-29T22:30:24.303 回答