Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana saya bisa menutup Oracle DbLinks di JDBC dengan sumber data dan transaksi XA untuk menghindari kesalahan ORA-02020?

SQL terdistribusi apa pun, bahkan pilihan, akan membuka transaksi yang harus ditutup sebelum Anda dapat menutup tautan basis data. Anda perlu melakukan rollback atau commit sebelum memanggil ALTER SESSION CLOSE DATABASE LINK.

Tapi sepertinya Anda sudah punya sesuatu yang lain menangani transaksi Anda. Jika tidak memungkinkan untuk melakukan rollback atau commit secara manual, Anda harus mencoba menambah jumlah link yang terbuka. OPEN_LINKS parameter adalah jumlah maksimum tautan per sesi. Jumlah tautan yang Anda butuhkan tidak terlalu bergantung pada beban, tetapi harus didasarkan pada jumlah maksimum basis data jarak jauh yang berbeda.

Sunting:

Situasi yang Anda gambarkan dalam komentar Anda seharusnya tidak terjadi. Saya tidak cukup mengerti tentang sistem Anda untuk mengetahui apa yang sebenarnya terjadi dengan transaksi. Bagaimanapun, jika Anda tidak tahu persis apa yang sedang dilakukan sistem, mungkin Anda dapat mengganti "alter session close database link" dengan prosedur seperti ini:

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;
/

Anda mungkin membutuhkan hibah ini:

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. Kelas Pool Koneksi Oracle

  2. Fungsi TO_CHAR(datetime) di Oracle

  3. Oracle getConnection lambat

  4. SQL:bagaimana cara menemukan jika konten kolom varchar adalah numerik?

  5. tidak ada ocijdbc9 di java.library.path