database - jdbc 连接可以恢复吗?

标签 database oracle jdbc

是否可以恢复由于数据库不可用而关闭的 jdbc 连接。

为了给出背景,我按顺序得到以下错误。它看起来不像是手动重新启动。我的问题的原因是我被告知该应用程序在没有 重新开始。因此,如果连接丢失,是否可以在数据库重新启动后恢复。

java.sql.SQLException: ORA-12537: TNS: 连接关闭

java.sql.SQLRecoverableException: ORA-01034: ORACLE 不可用 ORA-27101: 共享内存领域不存在 IBM AIX RISC 系统/6000 错误:2:没有那个文件或目录

java.sql.SQLRecoverableException: ORA-01033: ORACLE 正在初始化或关闭

最佳答案

没有。连接“死了”。创建新连接。

一个好的方法是使用 connection pool ,它将在将连接提供给您之前测试连接是否仍然正常,并在需要时自动创建新连接。

有几个开源连接池可供使用。我用过 Apache's JDCP ,它对我有用。

已编辑:
如果您想等到数据库出现故障时恢复(有趣的想法),您可以实现 getConnection() 的自定义版本,如果数据库没有恢复,它会“稍等片刻并重试” '回应。

附注我喜欢这个主意!

关于database - jdbc 连接可以恢复吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407929/

相关文章:

sql - 不同的数据库在注册表中标识

mysql - 如何根据另一个表的计数对 MySQL 结果进行排序?

sql - 使用 JDBC 从 MATLAB 将数据插入 PostgreSQL 表会抛出 BatchUpdateException

java - Oracle 数据库的 SSDT 等价物

java - ResultSet.TYPE_FORWARD_ONLY 可以向后滚动

java - org.flywaydb.core.api.FlywayException : Unable to instantiate JDBC driver when my java class is triggered from ant taskdef

asp.net - 有没有办法以编程方式将 blob/富文本备忘录存储为 rtf,而不是数据库?

mysql - TextField Django 的默认最大长度是多少?

mysql - 在 CakePHP 1.2 中显示 Oracle 分页查询

java - 如何创建属性来定义具有通用前缀的不同架构名称?