2017-07-31 62 views
0
 
oracledb.getConnection({ 
     user   : "", 
     password  : "", 
     connectString : "" 
     }, 
     function(err, connection) { 
     if (err) { 
      console.log("Error while trying to connect to DB ", err.message); 
      callback(err.message); 
     } else { 
      //My Logic 
     } 
     }); 

我正在使用上面的(伪)代码连接到远程的oracledb。我在Windows环境下工作。连接字符串具有连接到远程数据库的URL。现在,如果我的用户名/密码不正确/ null,我能够看到该错误。但是,如果服务器关闭,那么处理错误的部分就不会进入。如何捕获服务器关闭错误?节点oracledb没有检测到服务器是否关机

任何线索都会有帮助。 TIA。

回答

0

它可能正在等待TCP超时。您可以使用您的操作系统网络配置,和/或配置Oracle Net层(这是处理应用程序和数据库之间的通信的)。

创建一个文件$TNS_ADMIN/sqlnet.ora(不要忘记设置TNS_ADMIN所以它被读取!)然后你可以配置SQLNET.OUTBOUND_CONNECT_TIMEOUT

根据您的应用可用性要求,您还可以配置各种其他选项,如SQLNET.RECV_TIMEOUTSQLNET.SEND_TIMEOUT。可能还有其他您感兴趣的选项。最后,您可能需要创建一个tnsnames.ora文件来配置数据库服务设置('ENABLE=BROKEN')。

+0

感谢Chris对node-oracledb的持续支持。 – Nigilan

+0

谢谢。我已经在node-oracledb手册中添加了一些注释:https://github.com/oracle/node-oracledb/blob/dev-2.0/doc/api.md#connectionha –