分散SQLは、選択されたものであっても、データベースリンクを閉じる前に閉じる必要のあるトランザクションを開きます。 ALTER SESSION CLOSE DATABASE LINKを呼び出す前に、ロールバックまたはコミットする必要があります。
しかし、トランザクションを処理する何かがすでにあるようです。手動でロールバックまたはコミットできない場合は、開いているリンクの数を増やすようにしてください。 OPEN_LINKS パラメータは、セッションごとのリンクの最大数です。必要なリンクの数は、実際には負荷に依存していません。個別のリモートデータベースの最大数に基づいている必要があります。
編集:
コメントで説明する状況は発生しないはずです。トランザクションで実際に何が起こっているのかを知るには、システムについて十分に理解していません。とにかく、システムが何をしているのか正確に理解できない場合は、「alter sessionclosedatabaselink」を次のような手順に置き換えることができます。
create or replace procedure rollback_and_close_db_links authid current_user is
begin
rollback;
for links in (select db_link from v$dblink) loop
execute immediate 'alter session close database link '||links.db_link;
end loop;
end;
/
おそらくこの助成金が必要になります:
grant select on v_$dblink to [relevant user];