分布式事务概述

分布式数据库是在分布式系统中,可以对应用程序而言,作为单一数据源出现的一组数据库。分布式事务,包括一个或多个使用称为数据库链接的模式对象的语句,更新位于分布式数据库中两个或更多不同节点上的数据。数据库链接描述一个数据库实例如何登录到另一个数据库实例的方式。

与本地数据库上的事务不同,分布式事务变更多个数据库上的数据。因此,分布式事务处理更复杂,因为数据库必须进行协调,以将事务中所做的更改作为一个原子单元提交或回滚。必须提交或回滚整个事务。Oracle 数据库必须通过网络协调事务控制,并保持数据的一致性,即使发生网络或系统故障。

两阶段提交

两阶段提交机制保证参与分布式事务的所有数据库,要么都提交、或者要么都回滚事务中的语句。该机制还可以保护由完整性约束、 远程过程调用、和触发器执行的隐式 DML。

在涉及多个数据库的两阶段提交中,由某个数据库协调该分布式事务。发起的节点称为全局协调者。协调者询问其他数据库是否已准备好提交。如果任何数据库响应说未准备好,则整个事务回滚。如果所有数据库都说已准备好,则协调者将广播一个消息,使该提交在每个数据库上持久化。

两阶段提交机制对发出分布式事务的用户是透明的。事实上,用户甚至不需要知道事务是分布式的。表示事务结束的 COMMIT语句自动触发两阶段提交机制。在数据库应用程序正文中不需要额外编码或复杂的语句语法来包括分布式事务。

可疑事务

可疑分布式事务,发生在两阶段提交被任何类型的系统或网络故障中断时。例如,两个数据库向协调数据库报告他们已准备提交,但协调数据库实例收到消息后却立即失效了。这两个准备提交的数据库现在被挂起,而他们还在等待通知结果。

恢复器 (RECO) 后台进程会自动解决可疑分布式事务的残局。该故障修复和通信重新建立后,在所有涉及到的节点上,每个本地的 Oracle 数据库的RECO进程一致地自动提交或回退任何可疑的分布式事务。

对于长时间失败的情况, Oracle 数据库使每个本地管理员手动提交或回滚任何由于失败引起的可疑分布式事务。此选项使本地数据库管理员能够释放任何由于长期的失败所引起的无限期持有资源锁定。

如果数据库必须恢复到过去的某个时间,则数据库恢复工具使得在其它站点的数据库管理员能将其数据库返回到某个过去的时间点。此操作可确保全局数据库保持一致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值