delete 必然是用的,被删除的全部数据都会先放入回滚段,rollback时再插回去。
insert 也会用,但是不是数据,而是会把insert行的rowid记进去,一旦需要rollback,把相应的行删除即可。

解决方案 »

  1.   

    The undo segments contain the old values of data that have been changed by uncommitted or recently committed transactions.concepts里并没有就insert, update, delete 对undo进行分析,但是从undo的本质和测试中可以得到一些线索。
    insert时在undo中只记录rowid; update在undo中保存被修改的记录的对应字段及rowid; delete会产生被删除的记录的所有字段值及rowid
      

  2.   


    在做修改操作时,是把整个表所有字段都放到回滚表空间去,还是只把被修改的那几个字段放入回滚表空间呢??
    把修改前的相关字段值放到UNDO里
      

  3.   


    那么问题来了,当查询表的全部字段,并发生一致读的情况下,数据库是在自己表空间读一部分字段,又在UNDO表空间读取另外一部分字段吗?
      

  4.   


    那么问题来了,当查询表的全部字段,并发生一致读的情况下,数据库是在自己表空间读一部分字段,又在UNDO表空间读取另外一部分字段吗?是这样子的,没错。
      

  5.   

    insert操作很简单,只要保存记录插入到数据块及数据块内的槽号,回滚时只要根据数据块号及槽号做删除就可以了。update操作需要保存记录位置,还需要保存变更的字段原内容,回滚时采用原值即可。delete操作麻烦一些,不仅要保存记录位置,还需要将原有记录的内容全部保存下来,回滚时才能组成新的数据插入进去。
    具体的我们共同学习吧,我也不太了解。
    http://www.cnblogs.com/solan/archive/2009/02/06/1385323.html