WEB开发网
开发学院数据库Oracle Oracle 8i中回滚段使用和ORA-1555 阅读

Oracle 8i中回滚段使用和ORA-1555

 2007-05-10 12:20:34 来源:WEB开发网   
核心提示: 6. Read the last undo block (Uba). 7. Compare the block transaction ID with the transaction table transaction ID. If the Transaction ID in the un

6. Read the last undo block (Uba).

7. Compare the block transaction ID with the transaction table transaction ID. If the Transaction ID in the undo block doesnt equal the Transaction ID from the Transaction Table, then issue ORA-1555, Snapshot Too Old. 表示回滚段中回滚信息被覆盖,无法为一致读提供必需的before image。

8. If the Transaction IDs are identical, make a copy of the data block in memory. Starting with the head undo entry, apply the changes to the copied data block.

9. If the tail undo entry (the actual first undo entry in the chain, or the last in the chain going backwards!) indicates another data block address, read the indicated undo block into memory and repeat steps 7 and 8 until the undo entries dont contain a value for the data block address.

10. When theres no previous data block address, the transaction has been completely undone.

11. If the undo entry contains:

a. a pointer to a previous transaction undo block address, read the Transaction ID in the previous transaction undo block header and read the appropriate Transaction Table entry. Return to step 5.

b. an ITL record, restore the ITL record to the data block. Return to step 4.

出现1555的时候,首先判断是哪个原因导致,可以设置event;如果因为transaction slot被覆盖导致,则增加回滚段数目;如果因为回滚信息被覆盖,则增加回滚大大小。1555错误比较复杂,通常需要考虑很多问题。

event = 1555 trace name processstate forever, level 10

That will give you a process state dump for any process that gets an ORA-1555 error. The dump will show you which block the process was trying to rollback to its snapshot SCN. If its a rollback segment header block, then you have your proof. see more from http://www.ixora.com.au/q+a/undo.htm

上一页  1 2 3 

Tags:Oracle 使用 ORA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接