ORA-01591 锁定已被有问题的分配事务处理--解决方法(转)
转载自love wife & love life —Roger 的Oracle技术博客
本文链接地址: ORA-01591: lock held by in-doubt distributed transaction
昨天某客户遇到一个问题是关于两阶段分布式事务的,大概是内容是
一个定时job执行失败,然后报如下错误:
Sun Oct 9 02:38:12 2011 |
这里我们首先需要关注是 ORA-01591 错误,
Error: ORA 1591 |
如上是mos关于该错误的一个描述,当然,引起该错误的原因可能有很多很多。
关于分布式事务,其实可以这样理解,就是一个完整的事务,其中包含的多个操作分布在
两个以上的数据库中,只有这些操作都全部完成了,该事务才算完成,不然该事务都将失败。 换句话说,如果该事务失败了,其中涉及到操作表A,那么当其他session访问到表A时将出现
ORA-01591错误。 至于具体说为什么分布式事务会失败,那么就要具体分析了,可能是程序本身的问题或者网络
问题等等。 我们回到我客户的问题上来,既然是分布事务,那么我们就查询dba_2pc_pending视图:
查询结果如下;
LOCAL_TRAN_ID STATE FAIL_TIME OS_USER DB_USER |
从上可以看到,目前该库有3个失败的分布事务,其中 19.3.5343485 是我们需要处理的。 关于字段LOCAL_TRAN_ID的解释,大家可以去查看dba_2pc_pending的说明,这里只简单的
描述一下; LOCAL_TRAN_ID 格式为:xidusn + xidslot + xidsqn 下面继续查询当前系统回滚段中是否还有如上几个失败的分布式事务信息:
SQL> SELECT KTUXEUSN, |
我们可以发现,仍然存在,这处理就简单了,处理之前我还需要说明一下的是: 根据分布事务的状态(state)不同,我们需要采取不同的方法进行处理,稍后进行一个
简单的总结,这里我继续描述如何处理该问题。 通过如下两个小步骤进行处理: rollback force '19.3.5343485';
execute dbms_transaction.purge_lost_db_entry('19.3.5343485'); 然后再次执行该job,正常。 当然这仅仅是一个处理的办法,我们最终的目的是想知道为什么该分布事务会执行失败呢? 先来查询该job的基本信息:
SQL> SELECT job,SCHEMA_USER,LAST_DATE,NEXT_DATE,BROKEN,FAILURES,INSTANCE |
该job (job number为84) 已经执行失败12次了,INTERVAL是该job的执行间隔。对于dba_jobs中的 FAILURES字段,
该字段最大值为16,每次执行失败后该值递增,但是一旦执行成功后将被清0. 从报错信息来看,该job执行失败问题出在PKG_SODB_MAINTAIN的1064行,通过dbms_metadata获取定义后,发现
如下信息: 该过程执行到如下步骤时失败:
1 |
PROCEDURE refine_msg (p_date IN DATE) |
其中: Proc_Expired_Msg_Log 和 Proc_Expired_Msg_Tbm 为存储过程;
Get_Expired_Msg_Days 和 Get_Expired_Tbm_Days 为过程PKG_SODB中的2个函数; 这样来看似乎问题就出在这里,我怀疑可能是业务逻辑什么的可能有问题,比如
该 Proc_Expired_Msg_Log(p_date - PKG_SODB.Get_Expired_Msg_Days) 有可能计算出来
是负数吗?或者说执行到该步时,后面的rolllback操作时,其他前面的事务是否还存在关联? 不是开发出身,分析起来有些麻烦,主要是这几个包里面包含了太多的存储过程和函数,
看起来就头晕,最好建议客户找开发商看看这几个包。 补充:关于分布式事务处理的简单总结
++++++ 常规处理步骤 ++++++ |
ORA-01591 锁定已被有问题的分配事务处理--解决方法(转)的更多相关文章
- AppStore下载失败使用已购页面再试一次解决方法
AppStore载失败 使用已购页面再试一次解决方法 工具/原料 Mac OS 方法/步骤 1.大家可以先试试更改系统 DNS 的方法,由于苹果的 App Store 应用商店在国外,所以 DNS 如 ...
- mac os 错误提示:下载失败 使用已购页面再试一次 解决方法
最近由于买了macbook,开始用mac os系统,发现一个奇怪的现象,在app store里下载应用,老是提示:下载失败 使用已购页面再试一次 原来一直不知道怎么解决这个问题,今天研究了下,发现解决 ...
- SAP无输入历史记录(已在本地数据开启历史记录)解决方法
SAP客户端已开启本地数据的历史记录,但是仍然没有录入记录,重装SAP无法解决问题,没有最近输入记录操作极为不方便,经研究表现出的问题特征如下:1.同一用户在另一台电脑使用SAP就有历史记录,到了本电 ...
- VS提示无法连接到已配置的开发web服务器的解决方法
VS2013每次启动项目调试好好的,今天出现了提示“提示无法连接到已配置的开发web服务器“,使用环境是本地IISExpress,操作系统为windows10,之前也出现过就是重启电脑又好了,这次是刚 ...
- ubuntu中出现:程序 'java' 已包含在下列软件包中的解决方法
已经安装sun java 在终端中输入java,出现以下提示: 程序 'java' 已包含在下列软件包中: * default-jre * gcj-4.8-jre-headless * gcj-4.9 ...
- 显示器驱动程序 NVIDIA Windows Kernel Mode Driver Version 已停止响应 并且己成功恢复 解决方法
原文:http://news.160.com/?p=1890 在玩游戏中 经常 出现显示器驱动程序 NVIDIA Windows Kernel Mode Driver Version 已停止响应 并且 ...
- SqlServer2008 无法修改表,超时时间已到 在操作完成之前超时解决方法
在 SQL Server Management Studio 里, 通过菜单“工具-选项”打开选项对话框. 在左侧寻找“设计器-表设计器和数据库设计器”, 然后在右侧勾选“为表设计器更新重写连接字符串 ...
- 本地连接出现"已启用检测该状态的服务"解决方法、方案
1.运行 输出dcomcnfg 2.组件服务-计算机-我的电脑-DCOM配置-netprofm 3.右键属性-安全-启动和激活权限-自定义 4.编辑-添加-输入对象名称来选择-输入“LOCAL SER ...
- 【转】"超时时间已到。在操作完成之前超时时间已过或服务器未响应"的解决方法
方法有以下三种: 1.原因应该在数据访问有问题,可以把连接时间设置长些,在数据库连接字符串,加上Connect Timeout=18000,单位毫秒 2,在web.config中加上以下语句: < ...
随机推荐
- Training (deep) Neural Networks Part: 1
Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...
- html5 canvas画布上合成
source-over 默认.在目标图像上显示源图像. source-atop 在目标图像顶部显示源图像.源图像位于目标图像之外的部分是不可见的. source-in 在目标图像中显示源图像.只有目标 ...
- 用Canvas做动画
之前看过不少HTML5动画的书,讲解的是如何去做,对于其中的数学原理讲解的不详细,常有困惑.最近看的<HTML5+JavaScript 动画基础>这个是译本,Keith Peters曾写过 ...
- 20155225 2016-2017-2 《Java程序设计》第八周学习总结
20155225 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 通用API 日志API 国际化基础 规则表达式 JDK8增强功能 教材学习中的问题和解决过程 ...
- Python网络通信 (一)
ISO(国际标准化组织)--->网络体系结构标准 OSI模型 OSI 七层模型 应用层 :提供用户服务,具体内容由特定程序规定 表示层 :提供数据的压缩解压和加密等 会话层 :建立程序级的连接, ...
- 【SSH异常】InvalidDataAccessApiUsageException异常
今天在整合SSH的时候,一开始我再测试的时候service层添加了注解事务调用DAO可以正常的保存,在环境中我在XML中采用了spring的OpenSessionInViewFilter解决hiber ...
- C++产生固定范围内的固定数量的随机数
#include<iostream> #include<ctime> #include<random> using namespace std; void knut ...
- 如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件
项目基本算法已经完成,甲方需要一个可以运行的demo.目前,程序能在自己的电脑上正常运行.移植到其他win7系统上,运行失败. 寻找各种解决办法,baidu找到两个办法: 1.使用静态链接的方法,这种 ...
- Visual Studio 2012“完美的拥抱”Visual Studio Online
看了Visual Studio 2012完美的拥抱GitHub 写的不错,不过,配置起来太麻烦.既然是使用VS编码,微软的东西嘛,当然还有更简单的,那就是Visual Studio Online.不用 ...
- Axure RP Pro 7.0
Axure RP Pro专为Rapid Prototype Design而生,它可以辅助产品经理快速设计完整的产品原型,并结合批注.说明以及流程图.框架图等元素将产品完整地表述给各方面设计人员,如UI ...