前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 事务操作

Oracle 事务操作

作者头像
郑小超.
发布2018-01-26 10:54:59
9630
发布2018-01-26 10:54:59
举报
文章被收录于专栏:GreenLeavesGreenLeaves

在看本文之前,请确保你已经了解了Oracle事务和锁的概念即其作用,不过不了解,请参考数据库事务的一致性和原子性浅析Oracle TM锁和TX锁

1、提交事务

当执行使用commit语句可以提交事务.当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁。在此之前,与当前事务相关的数据都会被加锁,直到当前事务进行了commit操作,如果在这个过程中有其他回话试图操作相关数据,(这些数据已经被当前事务加锁),那么其他回话会进行等待,或者直接返回错误。

注意:只有在提交事务之后也就是进行commit操作之后,数据才会真正的发生改变,在commit提交之前操作,全部被记录入Oracle日志系统

2、回退事务

在说回退事务之前,先说Oracle事务的保存点(savepoint)的概念和作用,保存点是事务中的一点,用于取消部分事务,保存点记录的是当前数据库的状态

在事务commit提交前,可以使用rollback 到指定的保存点,来回退到指定的保存点

在事务commit提交后,保存点会被删除,这个时候,就无法进行回退了

这里在使用保存点之前,强调一点,任何commit操作,也就是事务提交操作,都会导致savepoint的被删除!!!

3、rollback to savepoint    取消部分事务

代码语言:javascript
复制
select * from test;
savepoint a;   ---创建回退点

接着删除一条数据

代码语言:javascript
复制
delete from test where deptno=10
代码语言:javascript
复制
select * from test;

ok,depetno为10的那行数据被删了,现在使用rollback+savepoint进行回退

代码语言:javascript
复制
rollback to a;
select * from test;

数据又回来了,我在删除数据之前,添加了一个会退点,然后进行删除数据,接着发现那条数据不能删,我就通过保存点返回到删除数据之前的那个保存点所对应的数据库状态

 4、rollback  取消全部事务

 回退的机制和rollback to savepoint 一样,但是使用rollback就是取消当前事务的全部操作,也就说当前事务先前的操作会全部被取消

5、只读事务

只读事务是指只允许执行查询的操作,而不允许执行其他任何的DML操作,只读事务可以帮助获取某个时间点的数据。

例:假定机票代售点每天18点统计今天的销售情况,这时可以使用只读事务,在设置了只读事务之后,尽管其他回话会提交新的事务,但是只读事务不会获取新的数据变化,从而保证取得特定时间点的数据信息。

口令:

代码语言:javascript
复制
set transaction read only

使用scott登录的会话,设置只读事务

ok,只读事务设置完毕

现在我们用dba身份登录sqlplus,创建一个会话,然后向scoot.dept表中插入一条新数据

ok,插入成功!

现在看看scott回话中,能不能插到dept中新添加的记录;

scott会话,并没有查到,新添加的记录。

但是sysdba的回话中,数据已经添加了

ok,根据上面的代码演示,我们可以得出,当一个事务被设置为只读事务,那么当前事务只能查询到这个时间点的数据记录,就算有其他会话对数据记录进行修改,也不会影响到只读事务。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档