Nee (behalve een ernstige bug in Oracle of tenzij we het hebben over een gedistribueerde transactie).
Als een verbinding tussen de client en de database wordt verbroken, is het mogelijk dat de database nooit het verzoek heeft ontvangen om de transactie vast te leggen. In dat geval, zodra de database ontdekt dat de client dood is (wat enige tijd kan duren), wordt de transactie teruggedraaid. Als de verbinding wordt verbroken, is het mogelijk dat de database succesvol is gecommit, maar dat de client nooit de melding krijgt dat de commit succesvol was.
Als we het hebben over een gedistribueerde transactie, is het mogelijk dat de transactie twijfelachtig blijft op een (of meer) van de gedistribueerde nodes. Als dat het geval is, wordt de transactie weergegeven in dba_2pc_pending
op de nodes waar de transactie nog in behandeling is. Maar het zou op geen enkele node gedeeltelijk worden vastgelegd.
Als ik moest raden, als je iets ziet dat "gedeeltelijk is vastgelegd", wed ik dat het probleem is dat je transactiegrenzen niet correct zijn en dat je ergens een code hebt die (impliciet of expliciet) commit waar je het niet verwacht.