【发布时间】:2015-08-03 18:04:58
【问题描述】:
在我的组织中,Oracle 数据库是一个 2 节点 RAC 数据库。集群的每个成员都处于重启计划中:
节点 1 - 每个月的第一个星期日凌晨 1:00 节点 2 - 每个月的第二个星期日凌晨 1:00
每当这些节点重新启动时,我都会在我的 J2EE 应用程序日志文件中看到以下异常:
org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)
... 154 more
Caused by: java.sql.SQLRecoverableException: ORA-01089: immediate shutdown in progress - no operations are permitted
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)
at oracle.jdbc.driver.T4C7Ocommoncall.processError(T4C7Ocommoncall.java:93)
at oracle.jdbc.driver.T4CTTIfun.receive
我们的 DBA 说“我们在本地关闭事务。它应该尝试等待飞行中的事务完成并且不允许新事务。”
正如我上面提到的,在 2 个节点中,一次只有一个节点会重新启动,并且考虑到 DBA 的回答。我们的应用在重新启动过程中绝不应该阻塞数据库。
我的问题是,为什么我的应用程序会抛出这个异常呢?为什么我的应用程序尝试连接到正在关闭的数据库节点?
【问题讨论】:
标签: java oracle jakarta-ee database-connection connection-pooling