Oracle分布事务中最先提交分布式的3个阶段

数据库 Oracle 分布式
文章先引出了Oracle分布事务的3个相关概念:Local Coordinator,Global Coordinator,Commit Point Site,然后介绍了Oracle分布事务中最先提交分布式的3个阶段:准备阶段,提交阶段以及注销阶段。

在了解Oracle分布事务之前,我们首先需要明确几个概念,这对于我们更好的掌握Oracle分布事务是十分必要的。下面,我们先来看几个概念,然后具体学习Oracle分布事务的3个阶段。

1)Local Coordinator:在Oracle分布事务中,必须参考其它节点上的数据才能完成自己这部分操作的站点。
2)Global Coordinator:Oracle分布事务的发起者,负责协调这个分布事务。
3)Commit Point Site:在Oracle分布事务中,首先执行COMMIT或ROLLBACK操作的站点。一般情况下,应该把存储关键数据的站点作为Commit Point Site。因为Commit Point Site和其它站点不一样,从来不会进入prepared状态,所以不会存在IN-DOUBT事务。

可以设置初始化参数COMMIT_POINT_STRENGTH,在Oracle分布式事务中,会根据这个值的大小来确定Commit Point Site,Oracle分布事务的状态信息也存在该数据库中。一般将关键的数据库作为commit point site ,commit_point_strength值较高的数据库为commit point site,在Oracle分布事务中最先提交分布式的3个阶段。

Oracle分布事务的两阶段提交分三个过程:

1.Oracle分布事务的准备阶段(PREPARE PHASE)
·本地数据库Global Coordinator向其它数据库发出COMMIT通知
·比较所有数据库的SCN号,将最高的SCN号作为Oracle分布事务的全局SCN号
·所有数据库写在线日志
·对Oracle分布事务修改的表加分布锁,防止被读写
·各数据库向Global Coordinator发出已经准备好的通知
所有参与Oracle分布事务的数据库必须经过上述准备,才能进入下一阶段。

2.Oracle分布事务的提交阶段(COMMIT PHASE)
·本地数据库Global Coordinator通知commit point site首先提交。commit point site提交后,释放其占有的资源,通知Global Coordinator完成提交
·本地数据库Global Coordinator通知其它数据库提交
·提交节点在日志中追加一条信息,表示Oracle分布事务已经完成提交,并通知Global Coordinator。此时所有数据库的数据保持了一致性。

3.Oracle分布事务的注销阶段(FORGET PHASE)
·本地数据库Global Coordinator通知commit point site所有数据库已经完成提交
·commit point site清除Oracle分布事务的记录和状态信息,并通知Global Coordinator
·Global Coordinator清除本地Oracle分布事务的记录和状态信息
此时Oracle分布事务的两阶段提交全部完成。

如果Oracle分布事务两阶段提交完成之前,数据库或网络出现异常,应用就会报错,Oracle分布事务处于IN_DOUBT状态。一旦数据库或网络恢复正常,系统(RECO PROCESS)会自动处理IN_DOUBT状态的Oracle分布事务。有些情况需要管理员手工处理IN_DOUBT状态的Oracle分布事务:·IN_DOUBT状态的Oracle分布事务,将关键表锁住,造成应用不能正常工作

【编辑推荐】

  1. Oracle事务管理中经常出现的问题破解
  2. 详解Oracle分布式系统数据复制技术
  3. Oracle存储结构之Oracle物理存储结构
  4. Oracle存储过程的创建
  5. Oracle存储过程中应注意的事项
责任编辑:王婧瑶 来源: 互联网
相关推荐

2023-07-26 09:24:03

分布式事务分布式系统

2022-06-27 08:21:05

Seata分布式事务微服务

2024-01-26 08:18:03

2021-03-17 00:05:50

分布式事务提交

2018-10-29 08:44:29

分布式两阶段提交事务

2022-06-21 08:27:22

Seata分布式事务

2017-07-26 15:08:05

大数据分布式事务

2019-10-10 09:16:34

Zookeeper架构分布式

2009-06-19 15:28:31

JDBC分布式事务

2009-09-18 15:10:13

分布式事务LINQ TO SQL

2021-09-29 09:07:37

分布式架构系统

2022-06-27 08:36:27

分布式事务XA规范

2023-12-26 08:59:52

分布式场景事务机制

2023-09-11 15:40:43

键值存储云服务

2019-06-26 09:41:44

分布式事务微服务

2021-02-01 09:35:53

关系型数据库模型

2022-03-24 07:51:27

seata分布式事务Java

2019-06-19 15:40:06

分布式锁RedisJava

2014-01-22 13:37:53

2009-02-05 11:39:41

Oracle甲骨文Tuxedo
点赞
收藏

51CTO技术栈公众号