我们有一个24x7应用程序,可处理数十个WF4实例。
我们成功实施了持续性和使用SQL实例存储保持OnIdle的恢复策略,在受控关闭中等待该状态并在恢复中加载回来。
我们需要迁移到ORACLE,我们使用了DevArt Instance Store,我们遇到了一些相同代码的问题。
到目前为止,我们仍然坚持OnIdle但现在我们不得不在受控关闭时卸载,以便能够加载恢复。
当我们想到可能出现的“不那么温和”的停机时,我们就会感到恐惧。
如果持久化实例无法达到受控关闭方法而未被卸载,那该怎么办?如何恢复它们?任何人都面临同样的情况?
答案 0 :(得分:2)
找到它,
可以使用ORACLE Devart Instance Store完成。问题是OracleInstanceStoreLogic的DevArt dotConnect包中的一个错误,该错误导致锁定到期时间延长至2037年,不再允许再次加载实例。
而不是
newLockExpiration:= sysdate + p_lockTimeout / 24 * 60 * 60;
应该是
newLockExpiration:= sysdate + p_lockTimeout /(24 * 60 * 60);
我已经向DevArt人报告了这个问题,以便在下次更新时修复它。
答案 1 :(得分:2)
我对“The Beat”的回答有一个重要的补充:缺少括号的错误只能在两个地方修复!具体来说,脚本“OracleInstanceStoreLogic.sql”中有一个方法“ExtendLock”仍然有
newLockExpiration:= sysdate + p_lockTimeout / 24 * 60 * 60;
(在编写本文时我们有Devart版本7.8.287.0,但错误仍然存在。)这肯定会导致我们的工作流程出现问题,这些工作流程在添加括号后就消失了。
我刚刚向Devart提交了一份错误报告。