无法使用node.js的节点Oracle驱动程序连接到Oracle 11g:它们是否兼容



我们正在尝试使用node.js应用程序从Ubuntu 12.04.1 LTS服务器连接到Oracle 11g服务器(Enterprise Edition 11.2.0.1.0-64位生产版)。我们正在运行Node v0.10.12和nearninfinity节点oracle模块0.3.1。stackoverflow上还有其他关于其他节点oracle模块node db oracle的帖子,但由于node waf被弃用,该版本不再维护,也无法使用node 0.10.12构建。

即使是最小的Node程序也不会连接,即使使用相同的连接信息,我们也可以从sqlplus64客户端和一个简单的3行PHP程序连接。我们已经尝试了所有不同的连接选项,例如在传递给connect函数的json中指定所有连接信息,只指定用户、密码,并引用oracle tnsnames.ora文件中的连接字符串,甚至直接将连接字符串传递给json。我们得到两个错误之一:

错误:ORA-12154:TNS:无法解析指定的连接标识符

或者如果我们稍微改变一下参数:

错误:ORA-1214:TNS:侦听器当前不知道连接描述符中请求的服务

我曾尝试连接到数据中心中的不同Oracle服务器:一台服务器使用SID=databasename约定,另一台RAC系统使用SERVICE_NAME=database_servicename约定。两种情况都是一样的。

我在这里查看了所有其他Node.js/Oracle帖子,并尝试了他们所说的一切。启动sqlplus64用户名/password@SID_NAME立即连接。我开始得出结论,我使用的版本组合根本不起作用。有什么想法吗?

解决方案是使用尚未发布的模块的最新补丁。当前版本是node oracle的0.3.1。该版本没有TNS支持修复程序。如果您将模块的最新代码从github检查到一个新目录,并在那里构建它(该目录中的"npm链接"),然后从您的项目目录中进行npm链接oracle,您将获得带有修复的新版本。我们必须解决许多权限问题,这些问题很可能是特定于平台的,所以我不会在这里深入研究这些问题。我已经请求该模块的作者尽快发布这个补丁版本,推测为0.3.2。

最新更新