sql >> Databáze >  >> RDS >> Oracle

Selhání vrácení zpět transakce JDBC při uzavřeném připojení

Ne (s výjimkou vážné chyby v Oracle nebo pokud nemluvíme o distribuované transakci).

Pokud dojde ke ztrátě spojení mezi klientem a databází, je možné, že databáze nikdy neobdržela požadavek na potvrzení transakce. V takovém případě, jakmile databáze zjistí, že klient je mrtvý (což může nějakou dobu trvat), bude transakce vrácena zpět. Pokud dojde ke ztrátě připojení, je možné, že databáze byla úspěšně potvrzena, ale klient nikdy neobdrží oznámení, že potvrzení bylo úspěšné.

Pokud mluvíme o distribuované transakci, je možné, že transakce zůstane na pochybách na jednom (nebo více) z distribuovaných uzlů. V takovém případě by se transakce objevila v dba_2pc_pending na uzlech, kde transakce stále čeká. Ale nebylo by to částečně potvrzeno na žádném uzlu.

Pokud bych měl hádat, pokud vidíte něco, co je „částečně potvrzeno“, vsadil bych se, že problém je v tom, že vaše hranice transakcí nejsou správné a že někde máte nějaký kód, který se zavazuje (implicitně nebo explicitně) kde to nečekáte.



  1. Přihlašovací skript nefunguje na živém serveru

  2. Php addlashes sql injection stále platné?

  3. Jak CONCAT_WS() funguje v PostgreSQL

  4. Syntaxe MySQL pro nastavení výchozího data