0
oracledb.getConnection({
      用户:“”,
      密码 : ””,
      连接字符串:“”
      },
      功能(错误,连接){
      如果(错误){
          console.log("尝试连接数据库时出错", err.message);
          回调(错误消息);
      } 别的 {
          //我的逻辑
      }
      });

我正在使用上述(伪)代码连接到远程 oracledb。我在windows环境下工作。连接字符串具有连接到远程数据库的 URL。现在,如果我的用户名/密码不正确/为空,我可以看到该错误。但是,如果服务器关闭,则不会进入处理错误的 if 部分。如何捕捉服务器关闭错误?

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

4

1 回答 1

0

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

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

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

19c Easy Connect Plus语法对于设置其中一些选项很有用,例如每 5 分钟发送一次 keepalive 探测以检测连接是否仍然有效,您可以使用连接字符串,如 'mydbhost.example.com/myservicename?expire_time= 5' 所以你不需要使用 tnsnames.ora 和 sqlnet.ora 文件来进行一些常见的设置。

于 2017-08-02T01:05:49.347 回答