当前位置: 首页 > news >正文

ORA-02050故障诊断一例

http://czmmiao.iteye.com/blog/1474678昨天客户反映说在下午某时间段有几个事务失败了,让我查下当时数据库系统的负载是否正常,看了下CPU的历史负载,很正常,于是看了下日志发现有几个timeout错误和一个ORA-02050错误。
Tue Feb 15 20:44:05 2011
Error 1013 trapped in 2PC on transaction 199.40.297416. Cleaning up.
Tue Feb 15 20:44:56 2011
Error stack returned to user:
ORA-02050: transaction 199.40.297416 rolled back, some remote DBs may be in-doubt
ORA-01013: user requested cancel of current operation 
这个是分布式事务处理出错的提示,根据提示可知,可能是由于远程的数据库处理失败,导致事务号为199.40.297416的事务失败而回滚。原因可能是网络,也可能是远程节点的连接超时或是人为kill等。
Oracle给出的解释是:
Error: ORA 2050
Text: transaction <num> rolled back, some remote DBs may be in-doubt
-------------------------------------------------------------------------------
Cause:There was a network failure or a remote failure during the two-phase commit.
Action:Notify the database administrator.
The remote databases will automatically resynchronize when the failure is repaired. 
大致意思为:一种可能为网络失败,另外一种是事务在两个阶段commit时,远程节点操作不成功,这时,它会记在dba_2pc_pending中,reco进程后续会自动尝试去继续完成这个事务。但如果能确定这个节点段时间内不能完成,可能就需要人工处理这个pending transaction了。
查询数据字典dba_2pc_pending和dba_2pc_neighbors均无任何记录,说明事务已经自动被恢复了。
附录:
dba_2pc_pending describes distributed transactions awaiting recovery.
dba_2pc_neighbors describes incoming and outgoing connections for pending transactions. 
在我这个例子中,由于事务已经被自动恢复,所以无需人工干预,如果没有自动恢复的话,可以通过如下语句处理:
强制提交或回滚:
SQL>commit force '199.40.297416'; 

SQL>rollback force '199.40.297416'; 
如果事务的状态为collecting,则不需要commit/rollback force,可这样处理,如下:
1、disable分布式恢复
SQL>alter system disable distributed recovery; 
2、purge in-doubt transaction entry
SQL>exec dbms_transaction.purge_lost_db_entry('199.40.297416'); 
3、最后enable分布式恢复
SQL>alter system enable distributed recovery; 

相关文章:

  • 初次体验百度eCharts遇到的问题和解决方法
  • Swoole 实例四(心跳检测)
  • AssemblyInfo.cs文件的作用
  • JS设计模式一:单例模式
  • std::vectorChannel2* m_allChannels;容器,以及如何根据channelid的意义
  • 【unity】关于时间等常用工具类
  • 安装Redhat6.3系统(通过iLO4)
  • CCNA 学习笔记(三)--路由选择协议(静态路由协议)
  • 辅助的写与数据库交互的XML文件的类
  • mysql事务提交模式
  • 2.羽翼sqlmap学习笔记之MySQL注入
  • 理解shell中的atime,mtime,ctime
  • UINavigationController的常用属性和方法
  • tactic remove project
  • [转载]开机出现A disk read error occurred错误
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • Hexo+码云+git快速搭建免费的静态Blog
  • HTML中设置input等文本框为不可操作
  • Java比较器对数组,集合排序
  • js继承的实现方法
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PAT A1120
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端面试之闭包
  • 小程序测试方案初探
  • 中文输入法与React文本输入框的问题与解决方案
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​用户画像从0到100的构建思路
  • #if 1...#endif
  • #每日一题合集#牛客JZ23-JZ33
  • (算法)N皇后问题
  • (转)关于pipe()的详细解析
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 服务 ServiceController
  • .net2005怎么读string形的xml,不是xml文件。
  • .net操作Excel出错解决
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • @ConfigurationProperties注解对数据的自动封装
  • @ModelAttribute使用详解
  • [Android] Amazon 的 android 音视频开发文档
  • [BeginCTF]真龙之力
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [DevOps云实践] 彻底删除AWS云资源
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [Hive] 常见函数
  • [iOS开发]iOS中TabBar中间按钮凸起的实现
  • [JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏
  • [LeetCode] 2.两数相加
  • [Linux]进程间通信(进程间通信介绍 | 匿名管道 | 命名管道)
  • [Oh My C++ Diary]善用三目运算符(a?b:c)