我们正在尝试使用node.js应用程序从Ubuntu 12.04.1 LTS服务器连接到Oracle 11g服务器(Enterprise Edition 11.2.0.1.0 - 64位生产)。我们运行Node v0.10.12和nearinfinity node-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-12514:TNS:侦听器当前不知道连接描述符中请求的服务
我尝试连接到数据中心的不同Oracle服务器:使用SID = databasename约定的单个服务器和使用SERVICE_NAME = database_servicename约定的RAC系统。两种情况都是一样的。
我在这里查看了所有其他Node.js / Oracle帖子,并尝试了他们所说的一切。启动sqlplus64用户名/密码@ SID_NAME立即连接。我开始得出结论,我使用的版本组合根本无法协同工作。有什么想法吗?
答案 0 :(得分:0)
解决方案是使用尚未发布的模块的最新补丁。当前版本是node-oracle的0.3.1。该版本没有TNS支持修复程序。如果你从github检查模块的最新代码到一个新目录并在那里构建它(该目录中的'npm link'),然后从项目目录中执行npm link oracle,你将获得带有修复的新版本。我们必须解决一些很可能是平台特定的权限问题,因此我不会深入研究这些问题。我已经要求该模块的作者发布这个修补后的版本,很快就会推测为0.3.2。