1. If the current extent has more free blocks then the next free block is allocated.
2. Otherwise, if the next extent expired then wrap in the next extent and return the first block.
3. If the next extent does not expired then get space from the UNDO tablespace. If a free extent is available then allocate it to the transaction table and return the first block in the new extent.
4. If there is no free extent available then steal from an offline transaction table. Deallocate the extent from the offline transaction table and add it to the current transaction table. Return the first free block of the extent.
5. Steal from online transaction table. Deallocate the extent from the online transaction table and add it to the current transaction table. Return the first free block of the extent.
6. Extend the file in the UNDO tablespace. If the file can be extended then add an extent to the current transaction table then return the block.
7. Otherwise try to reuse unexpired extents from own transaction table. If all extents are currently busy(they contains uncommitted information) go to the step 8. Otherwise wrap into the next extent.
8. Steal unexpired extents from offline transaction tables. If this fails then try on online transaction tables.
9. If all the above fails then return ORA-30036 unable to extend segment by %s in undo tablespace '%s'
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14130873/viewspace-620324/
,如需转载,请注明出处,否则将追究法律责任。