0

我使用 sqldeveloper(但这个问题在 TOAD 上也有重复,所以我认为它与 sqldeveloper 没有特别关系)。基本问题是在我SELECT通过 sqldeleloper 运行使用数据库链接的复杂查询后,它会通知我有更改需要回滚或提交,当我关闭会话时。奇怪的是,我只是在运行一个SELECT查询,而COMMIT. 有人可以向我解释这种行为吗?

4

1 回答 1

3

选择 dblink 时会发生隐式事务。

当 Oracle 执行分布式 SQL 语句时,Oracle 在回滚段区域中保留一个条目用于两阶段提交处理。即使 SQL 语句是查询,该条目也会保留到提交 SQL 语句

更多关于这个here。如果可以的话,我会尝试挖掘一个 Oracle 链接。

更多来自马口:)

两阶段提交机制

数据库必须保证事务中的所有语句(分布式或非分布式)作为一个单元提交或回滚。正在进行的交易的影响应该对所有节点的所有其他交易不可见;对于包含任何类型操作(包括查询、更新或远程过程调用)的事务,这种透明度应该是正确的。

更多来自 Oracle 的分布式数据库概念指南

于 2013-10-08T16:04:25.857 回答