DBA_2PC_PENDING 介绍

一曲肝肠断何处

一曲肝肠断何处

2016-02-19 09:55

下面是个DBA_2PC_PENDING 介绍教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!
DBA_2PC_PENDING
Oracle会自动处理分布事务,保证分布事务的一致性,所有站点全部提交或全部回滚。一般情况下,处理过程在很短的时间内完成,根本无法察觉到。但是,如果在commit或rollback的时候,出现了连接中断或某个数据库站点CRASH的情况,则提交操作可能会无法继续,此时DBA_2PC_PENDING和DBA_2PC_NEIGHBORS中会包含尚未解决的分布事务。 

 

对于绝大多数情况,当恢复连接或CRASH的数据库重新启动后,会自动解决分布式事务,不需要人工干预。只有分布事务锁住的对象急需被访问,锁住的回滚段阻止了其他事务的使用,网络故障或CRASH的数据库的恢复需要很长的时间等情况出现时,才使用人工操作的方式来维护分布式事务。 


手工强制提交或回滚将失去二层提交的特性,Oracle无法继续保证事务的一致性,事务的一致性应由手工操作者保证。 


对于分布式事务,给事务命名是一个好的习惯。而且在事务执行过程中,可以使用ALTER SESSION ADVISE COMMIT(ROLLBACK);语句,为手工解决分布事务提供参考信息。 


当手工解决分布事务出现了冲突,比如一个站点进行了提交而另一个进行了ROLLBACK,这时,DBA_2PC_PENDING中的记录不会清除,必须使用DBMS_TRANSACTION.PURGE_MIXED过程来清除。 


如果CRASH的数据库必须重建,或者无法再次启动,则DBA_2PC_PENDING中的记录也无法自动清除,需要使用DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY过程来清除。 


Oracle9i中,当使用上述两个过程时,必须处于UNDO_MANAGEMENT=MANUAL的模式,这个限制条件Oracle没有写到文档中。一般使用9i都会使用AUTO模式(Oracle也是这样推荐的),也就是说,想要清除DBA_2PC_PENDING中的信息,必须重起数据库两次,感觉这两个过程的实际用处不大。 

 

出现无法解决的分布式事务时,可能会锁住分布式事务中涉及的表,由于Oracle无法确定哪些数据是提交过的,哪些是没有提交的,无法确定查询操作可见的结果集,因此,即使是查询操作也无法在该表上执行。 


使用ALTER SYSTEM DISABLE DISTRIBUTED RECOVERY,可以使Oracle不再自动解决分布事务,即使网络恢复连接或者CRASH的数据库重新启动。ALTER SYSTEM ENABLE DISTRIBUTED RECOVERY恢复自动解决分布事务。 


为了保证数据库之间的SCN同步,可以采用两种方法:在查询数据前,执行SELECT * FROM DUAL@REMOTE或者在执行查询前提交或回滚当前事务。
展开更多 50%)
分享

猜你喜欢

DBA_2PC_PENDING 介绍

编程语言 网络编程
DBA_2PC_PENDING 介绍

《无主之地》DLC-2大概介绍 (PC版)

电脑网络
《无主之地》DLC-2大概介绍 (PC版)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

《fifa 11》pc板实况玩家设置简单介绍

电脑网络
《fifa 11》pc板实况玩家设置简单介绍

《死亡空间2》pc版实况解说

电脑网络
《死亡空间2》pc版实况解说

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

AJAX介绍(2)

Web开发
AJAX介绍(2)

《死亡空间2》pc版图文流程攻略

电脑网络
《死亡空间2》pc版图文流程攻略

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

不用解压Win8.1的install.wim文件

不用解压Win8.1的install.wim文件

JavaScript与函数式编程解释

JavaScript与函数式编程解释
下拉加载更多内容 ↓