Domanda

I use sqldeveloper (but this problem has also been duplicated on TOAD, so I don't think it's specifically related to sqldeveloper). The basic problem is after I run a complex SELECT query that uses a database link through sqldeleloper, it will notify that I have changes that need to be rolled back or committed when I go to close my session. The weird part is that I was only running a SELECT query and there are no changes to COMMIT. Can someone explain this behavior to me?

È stato utile?

Soluzione

An implicit transaction occurs when selecting over a dblink.

When Oracle performs a distributed SQL statement Oracle reserves an entry in the rollback segment area for the two-phase commit processing. This entry is held until the SQL statement is committed even if the SQL statement is a query

More on this here. I'll try to dig up an Oracle link if I can.

More from the horses mouth:)

Two-Phase Commit Mechanism

A database must guarantee that all statements in a transaction, distributed or non-distributed, either commit or roll back as a unit. The effects of an ongoing transaction should be invisible to all other transactions at all nodes; this transparency should be true for transactions that include any type of operation, including queries, updates, or remote procedure calls.

More from Oracle's Distributed Database Concepts guide

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top