易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

比较SQL Server与Oracle DB2

 开发数据库应用,选择一个好的数据库是非常重要的。本文从一些方面比较了SQL Server与Oracle、DB2三种数据库,为你选择数据库提供一些参考。
  
  开放性
  SQL Server
  只能在Windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用,NT se ......

oracle的体系结构,你了解多少?

很久没有更新Oracle数据库的文章了,今天小编整理了一下资料,和大家分享Oracle的体系。oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。
 
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成) 控 ......

Oracle 用户名详解

安装ORACLE时,若没有为下列用户重设密码,则其默认密码如下:
用户名/密码
登录身份
说明
sys/change_on_install
SYSDBA或SYSOPER
不能以NORMAL登录,可作为默认的系统管理员
system/manager
SYSDBA或NORMAL
不能以SYSOPER登录,可作为默认的系统管理员
sysman/oem_temp
 
sysman 为oms的用户名
scott/ ......

oracle中connect by prior实现递归查询

oracle中connect by prior实现递归查询
收集的几条在oracle中通过connect by prior来实现递归查询
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID    NUMBER,
NAME VARCHAR2(100 BYTE),
PID   NUMBER    ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号