易截截图软件、单文件、免安装、纯绿色、仅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和sql server中简单备份table的方法

如果temp_t1不存在,
oracle:
create table temp_t1
as
select * from t1
sql server:
select * into temp_t1 from t1
如果temp_t1存在,
oracle:
insert into table temp_t1
select * from t1
sql server:
insert into table temp_t1
select * from t1 ......

oracle 10g pl/sql 学习

选择10g是因为对网格技术比较好奇,好像还没得到广泛应用,也就无所谓与前面版本有很大区别了。
在迅雷上下了个软件,运行sqlplusw,然后照着书,狂敲了一翻,有在网上下了个视频教程(MLDN魔乐科技_Oracle课堂),讲得挺好的,就是时间长了点,不如看书来得快。反正现在只是想熟悉一下基本语句。
看了两天书了。了解了一 ......

Oracle Exception

 1) 基本结构
  BEGIN
    ... --语句
  EXCEPTION -- 例外处理
    WHEN ...
    ...
    WHEN OTHERS
      ...
  END;
  2) 常用预定义例外
  EXCEPTION
    WHEN CU ......

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号