iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle数据库分布式事务ORA-01591错误的解决方法
  • 128
分享到

Oracle数据库分布式事务ORA-01591错误的解决方法

2024-04-02 19:04:59 128人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关oracle数据库分布式事务ORA-01591错误的解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定

这篇文章将为大家详细讲解有关oracle数据库分布式事务ORA-01591错误的解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

最近在update某张表时突然提示了个比较少见的错误,ORA-01591,这个问题跟平时的还有点不一样,下面一起来看看吧~

Oracle数据库分布式事务ORA-01591错误的解决方法

思路

这个错误是由于分布式事务引起,而不是普通的锁引起的,检查一般对象数据表锁定,只需要检查v$locked_object和v$transaction视图,就可以定位到具体的sql语句和操作人等信息。

select * from gv$locked_object; select * from gv$transaction;

使用oerr工具查看该错误编号

oerr ora 1591 01591, 00000, "lock held by in-doubt distributed transaction %s" // *Cause: Trying to access resource that is locked by a dead two-phase commit // transaction that is in prepared state. // *Action: DBA should query the pending_trans$ and related tables, and attempt // to repair network connection(s) to coordinator and commit point. // If timely repair is not possible, DBA should contact DBA at commit // point if known or end user for correct outcome, or use heuristic // default if given to issue a heuristic commit or abort command to // finalize the local portion of the distributed transaction.

简单的说,01591错误的原因是该对象被一个处在“in-doubt”状态的分布式事务锁定。分布式事务使用的是“two-phase  commit”二阶段提交技术。解决该问题的方法就是查看内部表pending_trans$,确定分布式事务信息。这种状态的事务主要是由于在进行分布式事务时候,发生网络突发中断的情况,引起分布式事务无法正常结束,等待中断节点的事务响应。于是,各节点的事务所锁定的表就不会被释放掉。

处理方法

rollback force '20.13.14721';

Rollback force的参数是DBA_2PC_PENDING中记录本地事务信息的编号即LOCAL_TRAN_ID。

处理还是比较简单的,这里顺便分享下分布式事务的相关知识点。

分布式事务相关知识点

分布式事务,简单来说,是指一个事务在本地和远程执行,本地需要等待确认远程的事务结束后,进行下一步本地的操作。如通过dblink  update远程数据库的一行记录,如果在执行过程中网络异常,或者其他事件导致本地数据库无法得知远程数据库的执行情况,此时就会发生in  doublt的报错。此时需要dba介入,且需要分多种情况进行处理。

Oracle会自动处理分布事务,保证分布事务的一致性,所有站点全部提交或全部回滚。一般情况下,处理过程在很短的时间内完成,根本无法察觉到。

但是,如果在commit或rollback的时候,出现了连接中断或某个数据库  站点CRASH的情况,则提交操作可能会无法继续,此时DBA_2PC_PENDING和DBA_2PC_NEIGHBORS中会包含尚未解决的分布事务。  对于绝大多数情况,当恢复连接或CRASH的数据库重新启动后,会自动解决分布式事务,不需要人工干预。只有分布事务锁住的对象急需被访问,锁住的回滚段阻止了其他事务的使用,网络故障或CRASH的数据库的恢复需要很长的时间等情况出现时,才使用人工操作的方式来维护分布式事务。  手工强制提交或回滚将失去二层提交的特性,Oracle无法继续保证事务的一致性,事务的一致性应由手工操作者保证

使用ALTER SYSTEM DISABLE DISTRIBUTED  RECOVERY,可以使Oracle不再自动解决分布事务,即使网络恢复连接或者CRASH的数据库重新启动。

ALTER SYSTEM ENABLE DISTRIBUTED RECOVERY恢复自动解决分布事务。

两个重要的视图

1. DBA_2PC_PENDING

DBA_2PC_PENDING:列出所有的悬而未决的事务﹐此视图在末填入悬而未决的事务之前是空的﹐解决这后也被清空。

Oracle数据库分布式事务ORA-01591错误的解决方法

DBA_2PC_PENDING的STATE列的说明

Oracle数据库分布式事务ORA-01591错误的解决方法

SELECT * FROM DBA_2PC_PENDING;

Oracle数据库分布式事务ORA-01591错误的解决方法

2. DBA_2PC_NEIGHBORS

DBA_2PC_NEIGHBORS:列出所有获得的(从远程客户)和送出的(给远程服务器)悬而未决的事务﹐也表示该本地节点是不是事务的提交点站点。

Oracle数据库分布式事务ORA-01591错误的解决方法

关于Oracle数据库分布式事务ORA-01591错误的解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Oracle数据库分布式事务ORA-01591错误的解决方法

本文链接: https://www.lsjlt.com/news/67990.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle数据库分布式事务ORA-01591错误的解决方法
    这篇文章将为大家详细讲解有关Oracle数据库分布式事务ORA-01591错误的解决方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定...
    99+
    2024-04-02
  • oracle数据库ORA-01196错误解决办法分享
    上一篇文章中我们了解到oracle常见故障类别及规划解析,接下来,我们看看oracle数据库ORA-01196错误解决的相关内容,具体如下: 问题现象 在使用shutdown abort停DataGuar...
    99+
    2024-04-02
  • 数据库分布式事务的实现原理!
    事务是数据库系统中非常有趣也非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全不执行;在 SOA 与微服务架构大行其道的今天,在分布式的多个服...
    99+
    2024-04-02
  • java SpringBoot 分布式事务的解决方案(JTA+Atomic+多数据源)
    目录前言一、项目依赖二、数据源配置三、数据源的注册四、配置数据源对应的sqlSessionFactory五、测试接口六、建立JtaTestContoller.java七、在test....
    99+
    2024-04-02
  • 基于PostgreSQL/openGauss 的分布式数据库解决方案
    在 MySQL ShardingSphere-Proxy 逐渐成熟并被广泛采用的同时,ShardingSphere 团队也在 PostgreSQL ShardingSphere-Pr...
    99+
    2024-04-02
  • 怎么分析分布式事务常用解决方法
    这期内容当中小编将会给大家带来有关怎么分析分布式事务常用解决方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。分布式事务的解决方法方案1:全局事务(DTP模型)全局事务基于DTP模型实现。DTP是由X/O...
    99+
    2023-06-04
  • SYBASE数据库错误DBSQL_SQL_ERROR的解决方式是什么
    这期内容当中小编将会给大家带来有关SYBASE数据库错误DBSQL_SQL_ERROR的解决方式是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SAP DUMP分析中...
    99+
    2024-04-02
  • SQLSERVER数据库中提示5173错误的解决方法
    本篇内容介绍了“SQLSERVER数据库中提示5173错误的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2024-04-02
  • 阿里云数据库密码错误的解决方法
    在使用阿里云数据库时,我们可能会遇到忘记密码或者密码错误的情况,这将导致我们无法正常访问数据库。本文将介绍如何解决阿里云数据库密码错误的问题。 一、阿里云数据库密码错误的常见原因未正确输入密码:这是最常见的原因,用户可能不小心输入了错误的...
    99+
    2023-10-29
    阿里 解决方法 错误
  • 怎么理解高并发下的数据库分布式事务
    这篇文章主要介绍“怎么理解高并发下的数据库分布式事务”,在日常操作中,相信很多人在怎么理解高并发下的数据库分布式事务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解高并发下的数据库分布式事务”的疑惑有所...
    99+
    2023-06-02
  • navicat连接数据库报2013错误的解决方法
    这篇文章将为大家详细讲解有关navicat连接数据库报2013错误的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本地采用ssh连接出现2013错误,如下图:采用...
    99+
    2024-04-02
  • navicat连不上数据库2003错误的解决方法
    这篇文章主要介绍了navicat连不上数据库2003错误的解决方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。打开Navicat for My...
    99+
    2024-04-02
  • navicat连接数据库密码错误解决方法
    navicat连接数据库密码错误的解决方法:检查密码正确性,区分大小写,去除特殊字符。重置数据库密码或检查数据库连接参数配置。更新navicat版本,联系数据库管理员或检查防火墙设置。尝...
    99+
    2024-04-24
    mysql navicat
  • 解决Oracle错误3114的有效方法分享
    解决Oracle错误3114的有效方法分享,需要具体代码示例 Oracle数据库是常用的企业级关系型数据库管理系统,但在使用过程中经常会遇到各种错误。其中,错误3114是一个比较常见的...
    99+
    2024-03-09
    错误 方法 oracle 防火墙配置
  • 解决阿里云服务器数据库链接错误的方法
    阿里云服务器数据库链接错误是一个常见的问题,对于不懂技术的用户来说,可能一时无法解决。但是,只要我们按照正确的方法操作,就可以轻松地解决这个问题。本篇文章将详细介绍如何解决阿里云服务器数据库链接错误的问题。 一、检查数据库服务状态首先,我们...
    99+
    2023-11-20
    阿里 错误 链接
  • 详解Java分布式事务的 6 种解决方案
    介绍 在分布式系统、微服务架构大行其道的今天,服务间互相调用出现失败已经成为常态。如何处理异常,如何保证数据一致性,成为微服务设计过程中,绕不开的一个难题。 在不同的业务场景下,解决...
    99+
    2024-04-02
  • 云服务器远程连接数据库错误的解决方法
    1. 检查网络连接 首先,确保你的云服务器和数据库服务器之间的网络连接是正常的。可以尝试使用 ping 命令来测试两者之间的连通性。如果无法 ping 通,可能是由于网络配置问题导致的连接错误。你可以检查服务器的网络配置,确保正确设置了 ...
    99+
    2023-10-27
    解决方法 连接数据库 错误
  • MySQL数据库分布式事务XA的实现原理分析
      1 原理   关于MySQL数据库的分布式事务XA,分布式事务实现的原理,可见[3];关于MySQL XA的说明,可见[1][2]。   MySQL XA分为两类,内部XA与外部XA;内部XA用于同一...
    99+
    2024-04-02
  • Dreamweaver数据库连接出现错误404的解决方法
    这篇文章给大家分享的是有关Dreamweaver数据库连接出现错误404的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。很多php新手会遇到一个问题,Dreamweaver连接数据库的时候出现404错误,...
    99+
    2023-06-08
  • MySQL数据库数据导出出现1290(secure_file_priv)错误解决方法
    目录 解决方案: 测试效果: 解决方案: secure_file_priv是用来限制mysql数据库导出的位置/目录。算是一直安全保护系统。 我们可以去通过show variables like '%secure%';  这个指令去查看...
    99+
    2023-09-03
    数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作