0

我们正在尝试使用 node.js 应用程序从 Ubuntu 12.04.1 LTS 服务器连接到 Oracle 11g 服务器(企业版 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 构建。

即使使用我们可以从 sqlplus64 客户端和简单的 3 行 PHP 程序连接的相同连接信息,即使是最小的 Node 程序也不会连接。我们尝试了所有不同的连接选项,例如在传递给连接函数的 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 立即连接。我开始得出结论,我正在使用的版本组合根本不能一起工作。有任何想法吗?

4

1 回答 1

0

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

于 2013-07-22T16:25:16.337 回答