在写pl/sql的时候,有个很重要的注意点;
比如:
begin
update 某个sqlserver的表@dblink名字 .....;
update 某个oracle的表...;
end;
这段pl/sql执行会报错:
错误信息是:
-----------------------------------------------------------------
执行失败:ORA-02054: 事务处理 2.12.27634 有问题
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息:
[Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效。
ORA-02063: 紧接着 2 lines (起自 dblink名字)
-----------------------------------------------------------------
然后你执行:
select * from 某个sqlserver的表@dblink名字
这个没问题;
再执行:
select * from 某个oracle的表
完了!结果提示:
执行失败:ORA-01591: 锁被有问题的分布式事务处理 2.12.27634 持有
这时候,你查询:
SELECT * FROM DBA_2PC_PENDING
会发现,被锁的信息;
然后,你用
commit/rollback force '2.12.27634' ; 解锁;
当然这里的2.12.27634 是随机的。每次被锁,都是不同的值;
这个问题如何解决呢?
begin
update 某个sqlserver的表@dblink名字 .....;
commit; --非常重要;
update 某个oracle的表...;
end;
这样就OK了,原因我觉得是这样的:oracle内部其实是两块事务,一个是针对sqlserver,一个针对自己的oracle;
所以必须把两端的事务独立下来;
下面这个写法也是OK的:
begin
update 某个sqlserver的表@dblink名字 .....;
update 某个sqlserver的表@dblink名字 .....;
commit; --非常重要;
update 某个oracle的表...;
update 某个oracle的表...;
end;
ORA-01591 锁被有问题的分布式事务处理
转载自http://hi.baidu.com/graceyan/item/da33101a33e033f99d778aa8
相关推荐
本篇文章将详细探讨如何使用Redisson实现Redis分布式事务锁,以及在Spring Boot环境中如何进行集成。 首先,Redis作为一个内存数据库,其高速读写性能使其成为实现分布式锁的理想选择。分布式锁的主要作用是在多...
在大规模的SOA(Service-Oriented Architecture,面向服务架构)系统中,分布式事务处理是一项至关重要的技术。这种架构通常涉及多个独立的服务协同工作,每个服务都可能有自己的数据存储,因此,确保这些服务之间的...
分布式事务处理是现代大型服务导向架构(SOA)系统中不可或缺的一部分,特别是在诸如支付宝这样的高并发、高可用性环境中。本讲义将深入探讨在Java环境下实现大规模SOA系统中的分布式事务处理的关键技术和挑战。 ...
6. **分布式事务的挑战与解决方案**:包括网络延迟、单点故障、数据一致性等问题,常见的解决方案有故障恢复机制、超时重试策略、幂等性设计等。 7. **NoSQL数据库的分布式事务**:NoSQL数据库通常不支持ACID(原子...
《LINQ to SQL 分布式事务处理》 在.NET框架中,LINQ(Language Integrated Query,语言集成查询)提供了一种强大的数据访问机制,而LINQ to SQL是它的一个子集,专门用于与SQL Server数据库进行交互。分布式事务...
#### 四、分布式事务处理挑战 在分布式环境中,事务处理面临更多的挑战,主要是因为分布式系统涉及跨多个节点的数据同步和一致性问题。 1. **一致性保证**:在分布式事务中,需要确保多个参与方的操作要么全部成功...
面试中,分布式锁、分布式事务和分布式缓存等概念是考察开发者技术能力的重要方面。下面将对这些主题进行详细阐述。 分布式锁是解决分布式环境下的资源争抢问题的关键工具。在单机系统中,锁的实现相对简单,但在...
在进行分布式事务处理时,我们还需要考虑容灾、性能和数据一致性三个关键问题。容灾要求系统能够应对节点故障,保证数据不丢失,并且能够进行故障恢复。数据一致性要求事务处理机制能够保证数据在多个节点间的一致性...
介绍分布式事务的定义、原则和实现原则,介绍使用Spring框架实现分布式事务的几种方式,包括使用JTA、Spring事务同步、链式事务等,并通过实战介绍其实现。除此以外还介绍了一些分布式事务相关的技术,如幂等性、...
在Oracle数据库中,分布式事务处理可能会导致分布式锁的存在,这些锁如果不正确地处理,可能会引起系统的性能问题甚至阻塞。以下是对分布式锁处理步骤的详细解释: 第一步:检查是否存在分布式锁 通过执行SQL查询`...
然而,随着服务的解耦,分布式事务处理成为了一大挑战。本文将深入探讨在微服务架构下如何有效地处理分布式事务。 微服务架构的分布式事务处理主要涉及到ACID(原子性、一致性、隔离性和持久性)特性,这是传统...
在Oracle中,锁定机制主要分为共享锁(S锁)和独占锁(X锁),它们在事务处理中扮演着至关重要的角色。悲观锁策略是预先获取锁,防止其他事务对相同资源进行修改,以避免并发问题。 1. **悲观锁的概念**: 悲观锁...
### 分布式事务处理方案详解 #### 数据库事务的基本特性:ACID 在讨论分布式事务之前,我们首先回顾一下数据库事务的基本概念。数据库事务具备四大基本特性:原子性(Atomicity)、一致性(Consistency)、隔离性...
在分布式事务中引入幂等性,可以显著降低事务处理的复杂性和风险。常见的分布式事务模型有两阶段提交(2PC)、三阶段提交(3PC)以及更现代的方案如Saga、TCC(Try-Confirm-Cancel)和基于事件驱动的架构。 1. 两...
分布式事务处理是一个复杂的领域,涉及到多个技术层面的挑战。无论是经典的XA协议还是更现代的TCC协议,都有各自的适用场景和限制。在选择合适的分布式事务解决方案时,需要综合考虑系统的具体需求和技术背景。随着...
从技术角度看,HBase分布式事务与SQL实现是一个复杂的话题,它涉及到分布式系统理论、事务处理机制、数据库设计和实际的应用场景等多个领域。理解和掌握这些知识点对于想要深入研究和使用HBase以及TiDB这类分布式...
本文将深入探讨基于MySQL和SpringBoot的分布式事务处理,以及如何通过示例进行学习。 首先,让我们理解分布式事务的概念。分布式事务是指跨越多个数据库或应用系统的事务,确保在所有参与组件中数据的一致性和完整...
- **锁机制**:分布式事务中涉及的锁机制非常重要,需要考虑如何处理跨数据库的锁竞争问题,以及如何避免死锁的发生。 - **只读优化**:在分布式事务中,可以通过只读优化来提高性能,例如减少不必要的锁定操作。 - ...
- 一致性:不同的分布式事务模型在一致性和可用性之间有不同的权衡,需要根据业务需求选择合适方案。 4. **最佳实践**: - 事务设计:避免长时间持有事务,尽早提交或回滚,降低锁竞争。 - 事务隔离级别:合理...