commit和rollback

原创 2012年03月23日 06:25:19

一、oracle事务

  oracle在第一个可执行sql语句开始时,隐式地开始一个事务,遇到以下情况时结束事务:

  1、commit:整个事务的所有更改永久保存

  2、rollback:撤销事务所做的更改

  3、DDL语句:执行DDL语句时,oracle隐式提交之前事务所做的更改。

  4、程序正常结束:oracle隐式提交

  5、程序失败:oracle隐式rollback

  事务开始时,oracle分配一个撤销段,记录撤销数据。

二、commit

  1、当commit时发生下列事情:重做记录中的事务表被标记所提交事务的唯一SCN

                                               lgwr将事务的重做日志信息连同事务的SCN,从重做日志缓冲区写入到联机重做日志文件

                                               释放事务所持有的锁

  2、commit选项 immediate:commit之后,立即将重做日志信息从日志缓冲区写入到日志文件

                          bath:不立即写

                          wait:直到日志信息成功写入日志文件才返回

                          nowait:不需要等待日志信息成功写入日志文件就可以返回。

    修改commit选项:系统级:比如 alter system set commit_write=bath,nowait scope=spfile

                               会话级:alter session set commit_write=immediate,wait;

                               在提交的时候:commit write immediate nowait;     

三、rollback

  1、当发布rollback之后,oracle使用撤销段中的数据撤销事务所做的更改,释放事务所持有的锁,并标记事务完成。

  2、使用savepoint设置保存点,使用rollback to savepoint save_point_name撤销到保存点,该保存点之后所进行的操作被撤销,保存点被保留。

       事务并未结束,可以继续进行。在oracle中,oracle为每一条sql语句隐式设置保存点,当一条sql语句失败后,oracle隐式撤销到该保存点。           

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

一次插入多条记录的SQL语句介绍

转载:http://database.51cto.com/art/201009/224551.htm(有改动) 在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用S...
  • yjtgod
  • yjtgod
  • 2013-08-15 12:38
  • 1255

Java多线程学习(吐血超详细总结)

本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。

最受欢迎的8位Java牛人

本文由 ImportNew - 唐尤华 翻译自 javatyro。如需转载本文,请先参见文章末尾处的转载要求。 下面是8位Java牛人,他们为Java社区编写框架、产品、工具或撰写书籍改变了Ja...

COMMIT和ROLLBACK的用法

转自:juni的blog http://szqu.blog.163.com/blog/static/38298602201002835727720/ 从SQL语言的分类谈COMMIT和ROLLB...
  • yjtgod
  • yjtgod
  • 2013-07-24 11:03
  • 6125

“对象变量或with块变量未设置”的错误

今天又遇见一个错误,本以为会是一个小错误,结果号了我一个多小时,其实真是个低级错误,只不过我粗心检查了四五遍仍未看出来。建立了一个select的sql语句查询,总是跳出“对象变量或with块变量未设置...

2.SQL Server DML触发器之COMMIT和ROLLBACK TRANSACTION

本文摘自《锋利的SQL》:http://item.jd.com/10380652.html 14.1.2 COMMIT和ROLLBACK TRANSACTION 当执行能够激发触发器操作的语句时,触...

MySQL存储过程中捕获异常的方法

DECLARE处理程序的使用:DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement其中, handler_type的取...

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327问题:         经常看到有人误删数据,或者误操作,特别是update和...

Spring事务异常rollback-only

在利用单元测试验证spring事务传播机制的时候出现了下面的异常: Transaction rolled back because it has been marked as rollback-on...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)