Unlike your expectation, it looks like the database link is the source of an open transaction. I noticed a behavior like this before running SELECT queries on remote tables in PL / SQL Developer.
To quote Tom Kyte ( source ):
distributed material starts the transaction "just in case".
EDIT : "Any SQL statement triggers a transaction in Oracle?" No, this is not so, and here is a demonstration of this. This demo uses the V $ TRANSACTION data dictionary view, which lists the active transactions. All this works on my local Oracle XE database, which has no other users besides me associated with it.
During this demonstration, we will use the following table. It contains only one column:
SQL> desc test;
Name Null? Type
----------------------------------------- -------- - ---------------------------
A NUMBER (38)
SQL> select count (*) from v $ transaction;
COUNT (1)
----------
0
There are currently no active transactions. Let run the SQL query on this table:
SQL> select * from test;
A
----------
2
SQL> select count (*) from v $ transaction;
COUNT (1)
----------
0
There are still no active transactions. Now let's do something that starts the transaction:
SQL> insert into test values ββ(1);
1 row created.
SQL> select count (*) from v $ transaction;
COUNT (1)
----------
one
As expected, we now have an active transaction.
SQL> commit;
Commit complete.
SQL> select count (*) from v $ transaction;
COUNT (1)
----------
0
After the transaction, it is no longer active.
Now create a link to the database. I am using Oracle XE, and the following creates a database link from my Oracle XE instance back to myself:
SQL> create database link loopback_xe connect to user identified by password using 'XE';
Database link created.
Now let's see what happens when we select from the table by the database link:
SQL> select count (*) from v $ transaction;
COUNT (1)
----------
0
SQL> select * from test@loopback _xe;
A
----------
2
one
SQL> select count (*) from v $ transaction;
COUNT (1)
----------
one
As you can see, simply selecting from a remote table opens a transaction.
Iβm not sure exactly what is needed to complete or rollback here, but I must admit that I donβt know what happens to distributed transactions, which probably contains the answer.