易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle redo undo commit rollback剖析

刚才在逛一个网友的博客的时候发现了一篇关于REDO、UNDO、COMMIT、ROLLBAKC的文章。虽然内容可能不是特别全面,可是还是总结的挺好的,转过来方便将来学习。
==================================================================================
redo--> undo-->datafile
insert一条记录时,表跟undo的信息都会放进 redo 中,在commit 或之前, redo 的信息会放进硬盘上。 故障时, redo 便可恢复那些已经commit 了的数据。
 
redo->
每次操作都先记录到redo日志中,当出现实例故障(像断电),导致数据未能更新到数据文件,则数据库重启时须redo,重新把数据更新到数据文件。
undo->
记录更改前的一份copy,但你系统rollback时,把这份copy重新覆盖到原来的数据
 
redo->记录所有操作,用于恢复(redo records all the database transaction used for recovery)
undo->记录所有的前印象,用于回滚(undo is used to store uncommited data infor used for rollback)
redo->已递交的事务,实例恢复时要写到数据文件去的
undo->未递交的事务.
redo的原因是:每次commit时,将数据的修改立即写到online redo中,但是并不一定同时将该数据的修改写到数据文件中。因为该数据已经提交,但是只存在联机日志文件中,所以在恢复时需要将数据从联机日志文件中找出来,重新应用一下,使已经更改数据在数据文件中也改过来!
undo的原因是:在oracle正常运行时,为了提高效率,加入用户还没有commit,但是空闲内存不多时,会由DBWR进程将脏块写入到数据文件中,以便腾出宝贵的内存供其它进程使用。这就是需要UNDO的原因。因为还没有发出commit语句,但是oracle的dbwr进程已经将没有提交的数据写到数据文件中去了。
undo 也是datafile,可能dirty buffer 没有写回到磁盘里面去。
只有先redo apply 成功了,才能保证undo datafile 里面的东西都是正确的,然后才能rollback 。
做redo的目的是使系统恢复到系统崩溃前(关机前)的状态,再进行undo是保证系统的一致性。
不做redo,系统就不会知道之前的状态,undo就无从谈起 。
所以instance crash recovery 的时候总是先rollforward,再rollback
undo
回退段中的数据是以“回退条目”方式存储。
回退条目=块信息(在事务中发生改动的块的编号)+在事务提交前存储在块中的数据
在每一个回退段中oracle都为其维护一张“事务表&rdquo


相关文档:

Oracle 数据库的各类名称概念

数据库名、实例名、数据库域名、全局数据库名、服务名,
这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。
一、数据库名
什么是数据库名?
数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了 ......

oracle总结

查询:select语句,多表查询,group by 分组,having 对分组后的每一个组进行过滤,order by 排序。(select语句多表查询这个最重要)
DML语句:insert into emp() values(),insert into emp (select * from emp2),
    delete from emp where...
    update emp set sal =.. where ..
rollback;恢复 ......

Oracle数据库字符集问题解析

Oracle数据库字符集问题解析(本文系整理他人帖子形成)
经常看到一些朋友问ORACLE字符集方面的问题,我想以迭代的方式来介绍一下。
 
第一次迭代:掌握字符集方面的基本概念
有些朋友可能会认为这是多此一举,但实际上正是由于对相关基本概念把握不清,才导致了诸多问题和疑问。
首先是字符集的概念。
我们知道, ......

Oracle 10GR2 DataGuard 实例

server A: 10.85.10.44  SID=orcl ­
target server B: 10.85.10.43 ­
oracle version:10.2.0.1 ­
OS platform : windows XP ­
­
Data Guard默认是maximize performance, 可以用以下语句来进行模式间的切换。 ­
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION | AV ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号