当前位置:首页 > 开发 > 数据库 > 正文

ORA-02050故障诊断一例

发表于: 2012-04-05   作者:czmmiao   来源:转载   浏览次数:
ora
摘要: 昨天客户反映说在下午某时间段有几个事务失败了,让我查下当时数据库系统的负载是否正常,看了下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

昨天客户反映说在下午某时间段有几个事务失败了,让我查下当时数据库系统的负载是否正常,看了下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;

参考至:http://orax.blog.sohu.com/207245155.html
如有错误,欢迎指正
邮箱:czmcj@163.com

ORA-02050故障诊断一例

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
主题1: 什么是蓝屏错误? 当Windows遇到某些情况时,它会挂起并显示蓝屏,且以白色文本显示生成的
主题1: 什么是蓝屏错误? 当Windows遇到某些情况时,它会挂起并显示蓝屏,且以白色文本显示生成的
前言 这两天一只对外提供查询的数 据库CPU使用率频繁攀升到100%,客户记得焦头烂额,总希望我抓点sq
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta content="Wo
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta content="Wo
ORA-2020错发生在一个分布式事务使用的dblink数超过参数open_links定义的阀值时: oracle@ibmvs_a@/
故障现象: 某物流公司新上一套软件系统,数据库CPU占用率基本维持在80%以上,业务高峰期数据库宕机
故障现象: 某物流公司新上一套软件系统,数据库CPU占用率基本维持在80%以上,业务高峰期数据库宕机
目的:在DridView中的每一行显示任务进度条! HttpHandler实现如下: namespace THOA.Web.Utility { cl
经常在SQL中会遇到比较复杂的SQL,很多老手也不知道怎么入手。在Postgres数据库中有一种强大的with
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号