If part of a transaction is rolled back to a savepoint, Oracle undoes all changes made by DML
commands after the savepoint. All subsequent savepoints are lost, all locks obtained after the
savepoint are released, and the transaction remains active.
Read Consistency
Undo provides read consistency for users who are reading rows that are involved in a DML
transaction by another user. In other words, all users who are reading the affected rows will see
no changes in the rows until they issue a new query after the DML user commits the transaction.
Undo segments are used to reconstruct the datablocks back to a read-consistent version and, as
a result, provide the previous values of the rows to any user issuing a select statement before the
transaction commits.
For example, user CLOLSEN begins a transaction at 10:00 that is expected to commit at 10:15,
with various updates and insertions to the EMPLOYEES table. As each insert, update, and delete
occurs on the EMPLOYEES table, the old values of the table are saved in the undo tablespace.
When the user SUSANP issues a select statement against the EMPLOYEES table at 10:08, none
of the changes made by CLOLSEN are visible to anyone except CLOLSEN; the undo tablespace
provides the previous values of CLOLSEN??™s changes for SUSANP and all other users. Even if the
query from SUSANP does not finish until 10:20, the table still appears to be unchanged until a
new query is issued after the changes are committed.
Pages:
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366