我的应用程序会自动从故障中恢复。我测试如下:
- 启动应用
- 在处理过程中,杀死应用服务器主机(shutdown -r -f)
- 主机重新启动时,应用程序服务器重新启动(作为 Windows 服务)
- 应用程序重新启动
- 应用程序尝试处理,但被先前会话中 Oracle DB 中不完整的 2 阶段提交事务阻止。
- 大约 10 到 30 分钟后,数据库解析了先前的 txn,并且处理继续正常。
我需要它比这更快地继续处理。我的 DBA 建议我应该在我的声明前加上
ALTER SESSION ADVISE COMMIT;
但他不能向我保证或详细说明这样做可能导致数据丢失。
幸运的是,有问题的语句只是每隔一秒左右更新一个datetime
值SYSDATE
,所以如果有一些数据损坏,它会在被覆盖之前持续 < 1 秒。
但是,对于我的问题。上面的语句究竟做了什么?Oracle在使用时如何解决数据同步问题?