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