Heim  >  Artikel  >  Datenbank  >  Oracle更新一条数据然后提交的整个经过(包括undo,redo,后台进程

Oracle更新一条数据然后提交的整个经过(包括undo,redo,后台进程

WBOY
WBOYOriginal
2016-06-07 15:50:421259Durchsuche

语句:UPDATE TEST SET A=999 WHERE A=1; 1.首先UPDATE操作开始前 数据块读入DATA BUFFER CACHE(或者已经在内存中)。然后在修改前将要修改的数据放到回滚段(或者已经在内存中),回滚段发生变化,产生REDO。 REDO BUFFER-演示 tranID file block row colu

语句:UPDATE TEST SET A=999 WHERE A=1;

1.首先UPDATE操作开始前

数据块读入DATA BUFFER CACHE(或者已经在内存中)。然后在修改前将要修改的数据放到回滚段(或者已经在内存中),回滚段发生变化,产生REDO。

REDO BUFFER-演示

tranID file block row column value
test    4   9    -    -    1   

2.开始UPDATE操作

此时开始UPDATE操作修改读入DATA BUFFER CACHE的数据块,将1改为999,产生REDO信息记录了UNDO数据块操作。

REDO BUFFER-演示
tranID file block row column value
test    4   9    -    -    1    
 test    3   19   1     1      999

3.执行COMMIT

此时执行COMMIT提交,在REDO产生一个COMMIT标记。

执行COMMIT后,LGWR进程将重做日志缓冲区记录顺序写入当前重做日志文件中

REDO BUFFER-演示
tranID file    block row column value
test    4      9      -    -    1    
 test    3      19    1     1      999
 test  commit  SCN   TIME STAMP

Oracle更新一条数据然后提交的整个经过(包括undo,redo,后台进程


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn