Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Błąd wycofania transakcji JDBC przy zamkniętym połączeniu

Nie (z wyjątkiem poważnego błędu w Oracle lub chyba że mówimy o transakcji rozproszonej).

Jeśli połączenie między klientem a bazą danych zostanie utracone, możliwe jest, że baza danych nigdy nie otrzymała żądania zatwierdzenia transakcji. W takim przypadku, gdy baza danych wykryje, że klient nie żyje (co może zająć trochę czasu), transakcja zostanie wycofana. Jeśli połączenie zostanie utracone, możliwe jest, że baza danych pomyślnie zatwierdzi, ale klient nigdy nie otrzyma powiadomienia, że ​​zatwierdzenie się powiodło.

Jeśli mówimy o transakcji rozproszonej, możliwe, że transakcja pozostaje wątpliwa na jednym (lub więcej) rozproszonych węzłach. W takim przypadku transakcja pojawi się w dba_2pc_pending na węzłach, w których transakcja jest nadal w toku. Ale nie byłoby to częściowo zatwierdzone w żadnym węźle.

Gdybym miał zgadywać, jeśli widzisz coś, co jest „częściowo zatwierdzone”, założę się, że problem polega na tym, że granice Twojej transakcji nie są poprawne i że masz gdzieś kod, który się zatwierdza (niejawnie lub jawnie) tam, gdzie się tego nie spodziewasz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. to jest błąd ORA-12154:TNS:nie można rozwiązać podanego identyfikatora połączenia?

  2. jak zamienić wiele ciągów razem w Oracle

  3. Oracle utwórz tabelę jako wybierz z warunkiem liczenia max

  4. Różnica między zapytaniami o uprawnienia w tabelach

  5. Jak korzystać z EXTRACT przez dbplyr podczas łączenia się z bazą danych Oracle?