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

oracle 的redo和undo

来自http://www.inthirties.com/thread-239-1-1.html
 在这里会介绍UNDO,REDO是如何产生的,对TRANSACTIONS的影响,以及他们之间如何协同工作的。 
什么是REDO 
REDO记录transaction logs,分为online和archived。以恢复为目的。 
比如,机器停电,那么在重起之后需要online redo logs去恢复系统到失败点。 
比如,磁盘坏了,需要用archived redo logs和online redo logs区恢复数据。 
比如,truncate一个表或其他的操作,想恢复到之前的状态,同样也需要。 
什么是UNDO 
REDO是为了重新实现你的操作,而UNDO相反,是为了撤销你做的操作,比如你得一个TRANSACTION执行失败了或你自己后悔了,则需要用ROLLBACK命令回退到操作之前。回滚是在逻辑层面实现而不是物理层面,因为在一个多用户系统中,数据结构,blocks等都在时时变化,比如我们INSERT一个数据,表的空间不够,扩展了一个新的EXTENT,我们的数据保存在这新的EXTENT里,其它用户随后也在这EXTENT里插入了数据,而此时我想ROLLBACK,那么显然物理上讲这EXTENT撤销是不可能的,因为这么做会影响其他用户的操作。所以,ROLLBACK是逻辑上回滚,比如对INSERT来说,那么ROLLBACK就是DELETE了。 
COMMIT 以前,常想当然地认为,一个大的TRANSACTION(比如大批量地INSERT数据)的COMMIT会花费时间比短的TRANSACTION长。而事实上是没有什么区别的, 
因为ORACLE在COMMIT之前已经把该写的东西写到DISK中了, 
我们COMMIT只是 
1,产生一个SCN给我们TRANSACTION,SCN简单理解就是给TRANSACTION排队,以便恢复和保持一致性。 
2,REDO写REDO到DISK中(LGWR,这就是log file sync),记录SCN在ONLINE REDO LOG,当这一步发生时,我们可以说事实上已经提交了,这个TRANSACTION已经结束(在V$TRANSACTION里消失了) 
3,SESSION所拥有的LOCK(V$LOCK)被释放。 
4,Block Cleanout(这个问题是产生ORA-01555: snapshot too old的根本原因) ROLLBACK ROLLBACK和COMMIT正好相反,ROLLBACK的时间和TRANSACTION的大小有直接关系。因为ROLLBACK必须物理上恢复数据。COMMIT之所以快,是因为ORACLE在COMMIT之前已经作了很多工作(产生UNDO,修改BLOCK,REDO,LATCH分配), 
ROLLBACK慢也是基于相同的原因。 
ROLLBACK会 
1,恢复数据,DELETE的就重新INSERT,INSERT的就重新DELETE,UPDATE的就再UP


相关文档:

Linux下oracle 10g 日志文件丢失

 ORA-00313: 无法打开日志组 1 (线程 1) 的成员
今天用系统清理工具把系统垃圾清理了一番,结果在打开oracle 数据库时出现了错误:SQL> connect / as sysdba;
已连接。
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。 ......

oracle高级sql的参考资料

 1.集合操作
学习oracle中集合操作的有关语句,掌握union,union all,minus,interest的使用,能够描述结合运算,并且能够将多个查询组合到一个查询中去,能够控制行返回的顺序。
包含集合运算的查询称为复合查询。见表格1-1
表1-1
Operator         Returns       ......

oracle数据库里面commit关键字的使用

    在oracle数据库中插入数据时,运行插入语句,先是把数据放入到缓存中,这时数据并没有真正的进入数据库,这是oracle数据库跟其它数据库中的不同点,这是要运行commit这个事务提交,才能真正的把数据放到数据库中。 ......

Oracle 用户名详解

安装ORACLE时,若没有为下列用户重设密码,则其默认密码如下:
用户名/密码
登录身份
说明
sys/change_on_install
SYSDBA或SYSOPER
不能以NORMAL登录,可作为默认的系统管理员
system/manager
SYSDBA或NORMAL
不能以SYSOPER登录,可作为默认的系统管理员
sysman/oem_temp
 
sysman 为oms的用户名
scott/ ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号