我们正在尝试使用node.js应用程序从Ubuntu 12.04.1 LTS服务器连接到Oracle 11 g服务器(企业版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程序也不能连接,即使使用相同的连接信息,我们可以从sqlplus 64客户端和一个简单的3行PHP程序连接。我们已经尝试了所有不同的连接选项,例如在传递给connect函数的json中指定所有连接信息,仅指定user,password,并在oracle tnsnames.ora文件中引用连接字符串,甚至直接将连接字符串传递给json我们得到两个错误之一:
错误:ORA-12154:TNS:无法解析指定的连接标识符
或者我们稍微改变一下参数:
错误:ORA-12514:侦听器当前不知道连接描述符中请求的服务
我尝试连接到数据中心中的不同Oracle服务器:一个服务器使用SID=databasename约定,一个RAC系统使用SERVICE_NAME=database_servicename约定。两个案子都一样。
我已经看了这里所有其他的Node.js/Oracle帖子,并尝试了他们所说的一切。启动sqlplus 64用户名/密码@SID_NAME立即连接。我开始得出结论,我正在使用的版本组合根本不能一起工作。有什么想法吗
1条答案
按热度按时间ilmyapht1#
解决方案是对尚未发布的模块使用最近的补丁。当前版本是node-oracle的0.3.1。该版本没有TNS支持修复。如果你将模块的最新代码从github checkout 到一个新的目录中,并在那里构建它(该目录中的'npm link'),然后从你的项目目录中执行npm link oracle,你将获得带有修复的新版本。我们必须解决许多权限问题,这些问题很可能是特定于平台的,因此我不会在这里深入讨论。我已经要求模块的作者发布这个补丁版本很快推定为0.3.2。