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

Грешка при връщане назад на JDBC транзакция при затворена връзка

Не (с изключение на сериозна грешка в Oracle или освен ако не говорим за разпределена транзакция).

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

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

Ако трябва да гадая, ако виждате нещо, което е „частично ангажирано“, бих се обзаложил, че проблемът е, че границите на вашата транзакция не са правилни и че имате някакъв код някъде, който се ангажира (имплицитно или изрично) където не го очаквате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OracleCommandBuilder.DeriveParameters() хвърля OracleException:ORA-06564:обектът не съществува ORA-06512:в SYS.DBMS_UTILITY

  2. Празен RELIES_ON за RESULT_CACHE

  3. Възстановяване на файлове на SQL Editor (заявки, процедури) след срив или увисване на Toad For Oracle

  4. Опитвам се да внедря приложението Oracle-ADF на Tomcat 7

  5. Java Multicast Time To Live винаги е 0