`

ORA-02050故障诊断一例

 
阅读更多

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

分享到:
评论

相关推荐

    Oracle利用errorstack追踪tomcat报错ORA-00903 无效表名的问题

    errorstack是Oracle提供的一种高级诊断工具,当特定的ORA错误发生时,它会记录导致错误的会话、语句以及各个进程的trace文件路径。这有助于我们快速定位到出问题的代码。errorstack有四个级别,级别越高,收集的信息...

    oracle11g OCM 题库_第三场

    在这段场景中,通过使用RMAN进行故障诊断,我们能够看到一系列故障的详细信息,包括优先级、状态、检测时间及摘要等。 #### 故障列表示例 ```plaintext List of Database Failures ========================= ...

    oracle OCP 认证试题

    - **选项 B**: DBMS_REPAIR 包可用于诊断和修复损坏,但在本例中可能不如直接使用 RMAN 快速有效。 - **选项 C**: TSPITR(表空间时间点恢复)不适合用于单一数据块的恢复。 - **选项 E**: RESTORE DATABASE 和 ...

    Oracle 8i数据库恢复一例.pdf

    首先,故障诊断是恢复的第一步。当用户报告计算机启动时出现错误,提示D盘错误,这可能由非法关机或硬盘问题引起。通过查看日志和检查硬件状态,确定问题可能是由于停电导致的多次非法关机,以及硬盘可能存在坏道。 ...

    (绝对干货)Oracle ADG数据库完整部署、切换、备份、运维手册

    4. 打开 `tnsnames.ora` 文件并添加需要访问的数据库别名配置。 5. 使用PL/SQL Developer工具连接数据库。 #### 三、数据库的启动与关闭 对于Oracle ADG部署来说,启动和关闭数据库需要按照特定的顺序来进行。 **...

    oracle面试1000例

    Oracle是全球广泛使用的大型...以上只是Oracle面试中可能涉及的部分知识点,实际面试可能会更深入,包括Oracle的最新版本特性、故障诊断、性能调优策略等。对于数据库相关的职位,深入理解和实践这些知识是至关重要的。

    创建Oracle数据库(以Oracle10g为例)

    ### 创建Oracle数据库(以Oracle10g为例) #### 引言 本文旨在详细介绍如何在Linux与Windows环境下搭建Oracle10g数据库。Oracle10g作为Oracle数据库产品线中的一个重要版本,提供了众多功能改进和性能优化,是企业...

    启动和停止CRS(oracle 11g R2)

    Cluster Ready Services (CRS) 是 Oracle Grid Infrastructure 的一部分,它为集群环境中的 Oracle 数据库实例提供高可用性和故障转移功能。在 Oracle 11g R2 版本中,CRS 负责管理集群中的所有资源和服务,如数据库...

    oracle创建数据库.docx

    在本例中,从`orcl`数据库拷贝`init.ora`到`D:\oracle\product\10.1.0\admin\book\pfile`,并重命名为`initbook.ora`,然后编辑文件以设置新的数据库名(如`db_name=book`)和其他必要的参数。 3. **设置环境变量...

Global site tag (gtag.js) - Google Analytics