Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да затворя Oracle DbLinks в JDBC с XA източници на данни и транзакции, за да избегна грешки ORA-02020?

Всеки разпределен SQL, дори избран, ще отвори транзакция, която трябва да бъде затворена, преди да можете да затворите връзката към базата данни. Трябва или да върнете назад, или да се ангажирате, преди да извикате ALTER SESSION CLOSE DATABASE LINK.

Но изглежда, че вече имате нещо друго, което обработва вашите транзакции. Ако не е възможно ръчно връщане назад или ангажиране, трябва да опитате да увеличите броя на отворените връзки. OPEN_LINKS параметърът е максималният брой връзки на сесия. Броят на връзките, от които се нуждаете, всъщност не зависи от натоварването, той трябва да се базира на максималния брой отделни отдалечени бази данни.

Редактиране:

Ситуацията, която описвате в коментара си, не трябва да се случва. Не разбирам достатъчно за вашата система, за да знам какво наистина се случва с транзакциите. Както и да е, ако не можете да разберете какво точно прави системата, може би можете да замените „промяна на връзката за затваряне на сесия към база данни“ с процедура като тази:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Агрегат на Oracle за свързване на низове със запетая и за писане на персонализирани агрегати

  2. Заявката за вмъкване на Oracle в съхранена процедура не работи, когато се извиква от задния код

  3. Как да копирате данни от една база данни/таблица в друга база данни/таблица

  4. Извикване на PL/SQL код на пакет в Java програма

  5. Oracle SQL - Сума и групиране на данни по седмица