如何解决数据库在事务中间突然停止
我正在构建一个以oracle云数据库为主数据库的Web应用程序。它是一个支付应用程序,因此每毫秒都非常重要,并且交易一直在发生。 这是最明显的问题,我没有找到答案。我没有任何备份数据中心。我只有一个实例,没有任何备份实例在运行!它有一些预算限制
- 如果数据库停止了事务的中间会发生什么?
- 如果数据库在几分钟后停止并重新启动怎么办?
在这两种情况下,我可能会丢失/丢失交易。
感谢您的帮助。
解决方法
在没有输入您可能很了解的注意事项或没有备份的情况下,或者在使用哪种软件运行事务时,请考虑到Oracle数据库完全符合ACID
ACID(原子性,一致性,隔离性,耐久性)是一组 用于保证数据的数据库事务的属性 尽管有错误,断电和其他事故,但仍具有有效性。在里面 数据库的上下文,满足数据库操作的序列 ACID属性(可以视为一个逻辑 对数据的操作)称为交易。例如,一个 将资金从一个银行帐户转移到另一个银行帐户,甚至涉及 多项更改,例如从一个帐户借记而在另一个帐户记入贷方, 是一次交易。
Oracle使用所谓的系统更改号(SCN),它是数据库使用的逻辑内部时间戳记。 SCN对数据库中发生的事件进行排序,这对于满足事务的ACID属性是必需的。 Oracle数据库使用SCN来标记所有更改都已存储在磁盘上的SCN,以便恢复避免应用不必要的重做。该数据库还使用SCN标记了一组数据不存在重做的点,因此恢复可以停止。
Oracle数据库使用重做日志文件和undo表空间中的数据存储,以在发生故障时使数据库保持一致状态。
在进行交易时如果发生重大故障,会发生什么情况主要取决于交易的完成方式。请阅读下面的文章,以了解不同的情况:
如果几分钟后数据库又恢复正常,则在数据库关闭期间所有正在执行的事务将失败。通常,在这里,对于支付系统,您应该考虑使用消息队列系统(通常使用事务监视器来完成),以便一旦数据库从应用程序侧重新启动后就执行所有待处理的事务。
您应该认真考虑对PaaS服务使用任何Oracle Cloud Backup策略。请记住,可以保护您免受硬件故障和Cloud服务中其他注意事项的侵害,但是备份不仅针对硬件问题,而且还针对逻辑问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。