在了解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分布事务,将关键表锁住,造成应用不能正常工作。Oracle 用户密码含特殊字符时的登陆问题Oracle 11g重建EM时报唯一约束错误相关资讯 Oracle基础教程 Oracle事务 Oracle提交 Oracle分布式
- Oracle批量提交 (今 08:44)
- Oracle事务处理及实例演示JDBC操作 (08/12/2014 10:32:56)
- Oracle 事务的开始与结束 (07/01/2014 20:44:34)
| - MySQL和Oracle对比学习之事务 (04/18/2015 17:33:28)
- 查询Oracle 中死事务的语句 (08/01/2014 11:05:37)
- Oracle事务的隐式提交 (11/14/2013 07:35:37)
|
本文评论 查看全部评论 (0)