【问题标题】:Database Transaction Notifying of Changes When no Changes Made when using Database Link使用数据库链接时未进行更改时通知更改的数据库事务
【发布时间】:2013-10-08 14:38:47
【问题描述】:
我使用的是sqldeveloper(但是这个问题在TOAD上也有重复,所以我认为它与sqldeveloper没有特别的关系)。基本问题是在我通过 sqldeleloper 运行使用数据库链接的复杂 SELECT 查询后,它会通知我有更改需要回滚或提交,当我关闭会话时。奇怪的是我只运行了一个SELECT 查询并且COMMIT 没有任何变化。有人可以向我解释这种行为吗?
【问题讨论】:
标签:
sql
oracle
oracle10g
oracle-sqldeveloper
toad
【解决方案1】:
通过 dblink 进行选择时会发生隐式事务。
当 Oracle 执行分布式 SQL 语句时,Oracle 保留一个
两阶段提交的回滚段区域中的条目
加工。在提交 SQL 语句之前,将保留该条目
即使 SQL 语句是查询
更多关于这个here。如果可以的话,我会尝试挖掘一个 Oracle 链接。
更多来自马口:)
两阶段提交机制
数据库必须保证事务中的所有语句,
分布式或非分布式,作为一个单元提交或回滚。
正在进行的交易的影响应该对所有其他人不可见
所有节点的交易;这种透明度应该是真实的
包含任何类型的操作,包括查询的交易,
更新或远程过程调用。
更多来自 Oracle 的 Distributed Database Concepts 指南