sql >> データベース >  >> RDS >> Oracle

ORA-02020エラーを回避するために、XAデータソースとトランザクションを使用してJDBCのOracle DbLinksを閉じるにはどうすればよいですか?

    分散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];
    



    1. データベース呼び出しを減らしてWebサイトのパフォーマンスを向上させる

    2. 日付を含む、Oracleの2つの日付間の日数を取得します

    3. postgresでjson_populate_recordsetを使用してjsonを解析する方法

    4. 断続的なMySQLサーバーがなくなったエラー