Không (trừ một lỗi nghiêm trọng trong Oracle hoặc trừ khi chúng ta đang nói về một giao dịch phân tán).
Nếu kết nối giữa máy khách và cơ sở dữ liệu bị mất, có thể cơ sở dữ liệu chưa bao giờ nhận được yêu cầu thực hiện giao dịch. Trong trường hợp đó, một khi cơ sở dữ liệu phát hiện ra rằng máy khách đã chết (có thể mất một thời gian), giao dịch sẽ được khôi phục. Nếu kết nối bị mất, có thể cơ sở dữ liệu cam kết thành công nhưng máy khách không bao giờ nhận được thông báo rằng cam kết đã thành công.
Nếu chúng ta đang nói về một giao dịch phân tán, có thể giao dịch vẫn còn nghi ngờ trên một (hoặc nhiều) nút phân tán. Nếu đúng như vậy, giao dịch sẽ xuất hiện trong dba_2pc_pending
trên các nút nơi giao dịch vẫn đang chờ xử lý. Nhưng nó sẽ không được cam kết một phần trên bất kỳ nút nào.
Nếu tôi phải đoán, nếu bạn thấy điều gì đó được "cam kết một phần", tôi cá rằng vấn đề là ranh giới giao dịch của bạn không chính xác và bạn có một số mã ở đâu đó đang cam kết (ngầm hoặc rõ ràng) nơi bạn không mong đợi.