Chinaunix首页 | 论坛 | 博客
  • 博客访问: 790919
  • 博文数量: 180
  • 博客积分: 4447
  • 博客等级: 上校
  • 技术积分: 1582
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-03 14:51
文章分类

全部博文(180)

文章存档

2014年(6)

2013年(8)

2011年(125)

2009年(35)

2008年(1)

2007年(5)

分类: Oracle

2011-01-19 14:39:39

回滚(rolling back)的含义是撤销一个未提交事务(uncommitted transaction)中已执行的 SQL 语句对数据的修改。Oracle使用撤销表空间(undo tablespace)(或回滚段(rollback segment))来存储被修改的数据的原始值。而重做日志(redo log)内则保存了对数据修改操作的记录。
用户可以回滚(roll back)整个未提交事务(uncommitted transaction)。除此之外,用户还可以部分回滚未提交事务,即从事务的最末端回滚到事务中任意一个被称为保存点(savepoint)的标记处。
以下各种类型回滚操作(rollback)的过程基本相同:
  • 语句级回滚(tatement-level rollback)(由于语句执行错误或死锁(deadlock)造成)
  • 回滚到一个保存点(savepoint)
  • 依据用户请求回滚一个事务(transaction)
  • 由于进程异常终止而回滚一个事务
  • 由于实例(instance)异常终止而回滚所有正在执行的事务
  • 在数据库恢复(recovery)过程中回滚不完整的事务
不考虑保存点(savepoint)而回滚(rolling back)整个事务(transaction)的过程如下:
  1. Oracle使用相关撤销表空间(undo tablespace)内的信息来撤销事务内所有 SQL 语句对数据的修改
  2. Oracle释放事务中使用的所有锁
  3. 事务结束
阅读(6360) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~