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.