ORA-01591 锁定已被有问题的分配事务处理--解决方法(转)
转载自love wife & love life —Roger 的Oracle技术博客
本文链接地址: ORA-01591: lock held by in-doubt distributed transaction
- 昨天某客户遇到一个问题是关于两阶段分布式事务的,大概是内容是
- 一个定时job执行失败,然后报如下错误:
|
- 这里我们首先需要关注是 ORA-01591 错误,
|
- 如上是mos关于该错误的一个描述,当然,引起该错误的原因可能有很多很多。
- 关于分布式事务,其实可以这样理解,就是一个完整的事务,其中包含的多个操作分布在
- 两个以上的数据库中,只有这些操作都全部完成了,该事务才算完成,不然该事务都将失败。
- 换句话说,如果该事务失败了,其中涉及到操作表A,那么当其他session访问到表A时将出现
- ORA-01591错误。
- 至于具体说为什么分布式事务会失败,那么就要具体分析了,可能是程序本身的问题或者网络
- 问题等等。
- 我们回到我客户的问题上来,既然是分布事务,那么我们就查询dba_2pc_pending视图:
- 查询结果如下;
|
- 从上可以看到,目前该库有3个失败的分布事务,其中 19.3.5343485 是我们需要处理的。
- 关于字段LOCAL_TRAN_ID的解释,大家可以去查看dba_2pc_pending的说明,这里只简单的
- 描述一下;
- LOCAL_TRAN_ID 格式为:xidusn + xidslot + xidsqn
- 下面继续查询当前系统回滚段中是否还有如上几个失败的分布式事务信息:
|
- 我们可以发现,仍然存在,这处理就简单了,处理之前我还需要说明一下的是:
- 根据分布事务的状态(state)不同,我们需要采取不同的方法进行处理,稍后进行一个
- 简单的总结,这里我继续描述如何处理该问题。
- 通过如下两个小步骤进行处理:
- rollback force '19.3.5343485';
- execute dbms_transaction.purge_lost_db_entry('19.3.5343485');
- 然后再次执行该job,正常。
- 当然这仅仅是一个处理的办法,我们最终的目的是想知道为什么该分布事务会执行失败呢?
- 先来查询该job的基本信息:
|
- 该job (job number为84) 已经执行失败12次了,INTERVAL是该job的执行间隔。对于dba_jobs中的 FAILURES字段,
- 该字段最大值为16,每次执行失败后该值递增,但是一旦执行成功后将被清0.
- 从报错信息来看,该job执行失败问题出在PKG_SODB_MAINTAIN的1064行,通过dbms_metadata获取定义后,发现
- 如下信息:
- 该过程执行到如下步骤时失败:
|
|
- 其中: 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中加上以下语句: < ...
随机推荐
- 原始套接字-自定义IP首部和TCP首部
/* ===================================================================================== * * Filenam ...
- js 正则之 检测素数
相信很多人应该看过这篇文章,我第一次看到的时候是11年的样子,那时候学vbs的时候看过这个问题.原文<检查素数的正则表达式>,在文章里已经解释了他是怎么判断的,我就不啰嗦了.我们来说说 j ...
- JavaScript继承详解(四)
在本章中,我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript. Crockford是Java ...
- Ascending Rating(单调队列)
题目描述 Before the start of contest, there are n ICPC contestants waiting in a long queue. They are lab ...
- 使用 scm-manager 搭建 git/svn 代码管理仓库(二)
主要介绍scm的配置. 1.配置为在Windows服务中启动scm-manager的启动方式有多种,可以在DOS(即命令行CMD模式)中启动,也可以在Windows服务中启动. 下面我们采用Windo ...
- 【mongoDB】 分享系列
mongoDB 作为一个非关系性数据库(功能很像关系型数据库) MongoDB 之一 MongoDB是什么 MongoDB 之二 增-删-改-查 MongoDB 之三 数据类型 MongoDB 之四 ...
- expect学习笔记及实例详解【转】
1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...
- python的map/reduce区别
直接上列子 map: 把f(x)作用在list的每一个元素并把结果生成一个新的list” # coding=utf-8def f(x): return x * x r = map(f, [1, 2, ...
- python3.3中print换行
python 3.3版本中的print默认有个换行的操作 如: for i in range(5): print(i) 结果为: 01234 如果不想换行,需要用到print函数的end参数,pri ...
- sublime text 3 使用简介
2014年1月22日 09:47:50 2用了一段时间感觉不错,就是自带的高亮显示匹配标签或者代码块儿时有点儿不清楚,所以一直是sublime 开PHP,notepad++开html 现在想只用一个编 ...