• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > DBA_2PC_PENDING 介绍_Oracle应用_脚本之家

DBA_2PC_PENDING 介绍_Oracle应用_脚本之家

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了DBA_2PC_PENDING,介绍等相关知识,希望本文的分享对您有所帮助

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或者在执行查询前提交或回滚当前事务。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • DBA_2PC_PENDING 介绍_Oracle应用_脚本之家

相关文章

  • 2018-12-05解析PHP编程计算两个时间段是否有交集的实现方法
  • 2018-12-05如何用MATLAB读取数据库Mysql文件?
  • 2018-12-05PHP开发之程序员必掌握的 SQL 指南
  • 2018-12-05SQL Server 7.0 入门(五)
  • 2018-12-05总结SQL Server中常用函数使用方法
  • 2018-12-05Oracle轻松取得建表和索引的DDL语句
  • 2017-05-11MySQL WorkBench管理操作MySQL教程
  • 2018-12-05MySQL创建用户账号和删除用户账号
  • 2018-12-05MySQL的数据类型和建库策略分析详解
  • 2018-12-05Mysql5.5&Mysql5.6&Mysql5.7特性

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySql增加用户、授权、修改密码等语句
    • SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
    • 在CentOS上MySQL数据库服务器配置方法
    • 手动编译安装Mysql
    • Oracle 随机数
    • 全面接触SQL语法(4)
    • MySQL分表实现上百万上千万记录分布存储的批量查询设计模式详解
    • MySQL数据库密码如何修改?
    • mysql获取数据库和表的信息
    • MySQL存储过程相互调用并获得错误码示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有