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.