Oracle的undo回滚是将数据库“物理地”恢复到某个语句或事务之前的样子吗?
针对回滚,数据库只是“逻辑地”将数据恢复到原来的样子,某些修改会被“逻辑地”取消,数据结构以及数据库块本身在回滚后可能与事务或语句开始之前的数据块状态大不相同。原因在于:在所有多用户系统中,可能会有数十、数百甚至数千个并发事务,数据库的主要功能之一就是协调它们对数据的并发访问,回滚事务修改的块,很有可能同时也正被其他的事务修改。因此,不能简单地将一个块回到事务开始前的样子,这样会撤销其他人(其他事务)的工作。