数据库在事务处理过程中突然停止



我正在构建一个以oracle云数据库为主数据库的web应用程序。它是一个支付应用程序,所以每一毫秒都很重要,交易一直在发生。这是最明显的问题,我没有找到答案。我没有任何备份数据中心。我只有一个实例,没有任何备份实例在运行!有一些预算限制

  1. 如果数据库在事务进行到一半时停止,会发生什么
  2. 如果数据库停止并在几分钟后重新启动,该怎么办

对于这两种情况,我可能会丢失/错过事务。

感谢你的帮助。

在不考虑因素或没有备份的情况下(您可能很清楚这一点(,也不考虑您使用什么软件来运行事务,请考虑Oracle数据库完全符合ACID

ACID(原子性、一致性、隔离性、持久性(是用于保证数据的数据库事务的属性有效性,尽管出现错误、电源故障和其他事故。在数据库上下文,满足ACID属性(可以被视为单个逻辑对数据的操作(被称为事务。例如将资金从一个银行账户转移到另一个银行帐户,甚至涉及诸如从一个账户借记和从另一个账户贷记的多种改变,是单个事务。

Oracle使用所谓的系统更改号(SCN(,这是数据库使用的逻辑内部时间戳。SCN对数据库中发生的事件进行排序,这对于满足事务的ACID属性是必要的。Oracle数据库使用SCN来标记SCN,在此之前,所有更改都已知在磁盘上,这样恢复就可以避免应用不必要的重做。数据库还使用SCN来标记一组数据不存在重做的点,以便可以停止恢复。

Oracle数据库使用重做日志文件和撤消表空间中的数据存储,在出现故障时使数据库保持一致状态。

当事务在运行中发生重大故障时,会发生什么主要取决于事务是如何完成的。请阅读下面的文章以了解不同的场景:

交易

如果几分钟后数据库再次恢复,则在数据库关闭时执行的所有事务都将失败。通常情况下,对于支付系统,您应该考虑使用消息队列系统(通常使用事务监视器完成(,以便在数据库从应用程序端重新启动后执行所有挂起的事务。

您应该认真考虑将任何Oracle云备份策略用于PaaS服务。请记住,在云服务中,您可以免受硬件故障和其他注意事项的影响,但备份不仅适用于硬件问题,也适用于逻辑问题。

最新更新