Ao contrário da sua expectativa, parece que o link do banco de dados é a origem da transação aberta. Eu notei um comportamento como esse antes ao executar consultas SELECT em tabelas remotas no PL/SQL Developer.
Para citar Tom Kyte ( fonte ):
EDITAR :'Qualquer instrução SQL inicia uma transação no Oracle'? Não, não, e aqui está uma demonstração disso. Esta demonstração usa a visualização do dicionário de dados V$TRANSACTION , que lista as transações ativas. Tudo isso está sendo executado no meu banco de dados Oracle XE local, que não possui outros usuários além de mim conectados a ele.
Usaremos a tabela a seguir durante esta demonstração. Ele contém apenas uma única coluna:
SQL> desc test; Name Null? Type ----------------------------------------- -------- ---------------------------- A NUMBER(38) SQL> select count(*) from v$transaction; COUNT(1) ---------- 0
Nenhuma transação ativa no momento. Vamos executar uma consulta SQL nesta tabela:
SQL> select * from test; A ---------- 2 SQL> select count(*) from v$transaction; COUNT(1) ---------- 0
Ainda sem transações ativas. Agora vamos fazer algo que iniciará uma transação:
SQL> insert into test values (1); 1 row created. SQL> select count(*) from v$transaction; COUNT(1) ---------- 1
Como esperado, agora temos uma transação ativa.
SQL> commit; Commit complete. SQL> select count(*) from v$transaction; COUNT(1) ---------- 0
Depois de confirmar a transação, ela não está mais ativa.
Agora, vamos criar um link de banco de dados. Estou usando o Oracle XE e o seguinte cria um link de banco de dados da minha instância do Oracle XE de volta para si mesmo:
SQL> create database link loopback_xe connect to user identified by password using 'XE'; Database link created.
Agora vamos ver o que acontece quando selecionamos da tabela sobre o link do banco de dados:
SQL> select count(*) from v$transaction;
COUNT(1)
----------
0
SQL> select * from [email protected]_xe;
A
----------
2
1
SQL> select count(*) from v$transaction;
COUNT(1)
----------
1
Como você pode ver, simplesmente selecionar de uma tabela remota abre uma transação.
Não sei exatamente o que há para confirmar ou reverter aqui, mas tenho que admitir que não conheço os meandros das transações distribuídas, nas quais a resposta provavelmente está.