commit和rollback

本文介绍了Oracle数据库中的事务管理机制,包括事务的开始与结束、提交(commit)及回滚(rollback)的具体过程,还详细阐述了commit的不同选项及其效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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隐式撤销到该保存点。           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值