我们正在尝试使用node.js应用程序从Ubuntu12.04.1LTS服务器连接到Oracle11g服务器(企业版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:listener当前不知道连接描述符中请求的服务
我尝试在我们的数据中心连接到不同的Oracle :一个使用SID=databasename约定的单个服务器和一个使用SERVICE_NAME=database_servicename约定的RAC系统。两种情况都是一样的。
我已经看过这里的所有其他Node.js/Oracle帖子,并尝试了他们所说的一切。启动sqlplus64用户名/密码@SID_NAME立即连接。我开始得出结论,我正在使用的版本组合根本不能协同工作。有什么想法吗?
发布于 2013-07-23 00:25:16
解决方案是使用模块的最新补丁,该补丁尚未发布。当前版本是node-oracle的0.3.1。该版本没有TNS支持修复。如果您将模块的最新代码从github签出到一个新目录,并在那里构建它(该目录中的‘npm link’),然后从您的项目目录执行npm link oracle,您将获得带有修复的新版本。我们必须解决一些权限问题,这些问题很可能是特定于平台的,所以我不会在这里深入研究这些问题。我已经要求模块的作者尽快发布这个补丁版本,估计是0.3.2。
https://stackoverflow.com/questions/17709084
复制相似问题