Oracle 事务操作

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

1、提交事务

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

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

2、回退事务

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

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

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

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

3、rollback to savepoint    取消部分事务

select * from test;
savepoint a;   ---创建回退点

接着删除一条数据

delete from test where deptno=10
select * from test;

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

rollback to a;
select * from test;

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

 4、rollback  取消全部事务

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

5、只读事务

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

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

口令:

set transaction read only

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

ok,只读事务设置完毕

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

ok,插入成功!

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

利用Apache ab以及GNUPlot来进行Web测试

最近写了几个测试脚本,希望要观察使用PUT方式上传文件和使用POST方式上传文件,两者效率的差别。

942
来自专栏Python爬虫与算法进阶

学习Git(二)基本操作

Git 基础操作 1. 创建版本库 什么是版本库呢?版本库又名仓库,英文名 repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被 G...

36012
来自专栏会跳舞的机器人

Nginx+Tomcat实现负载均衡

在103和117上分别部署相同的Tomcat程序,修改index.jsp页面,把内容改为各自的IP地址。

1243
来自专栏蛋未明的专栏

网页实现批量数据导入功能

1962
来自专栏强仔仔

Redis集群环境中添加和删除节点

上一节中说道如何在window下面安装redis集群,今天给大家介绍一下如何在redis集群环境中添加和删除节点。 首先是配置六个节点,三个为从节点,三个为主节...

2898
来自专栏北京马哥教育

使用 nice、cpulimit 和cgroups 获取进程的 CPU 使用率

Linux内核是一个令人难以置信的马戏团的表演者,可以很小心的玩弄许多进程和它们的资源需求,来保证你的服务器一直嗡嗡作响。内核也是关于公平的一切:当有资源竞争时...

3564
来自专栏散尽浮华

Centos下MooseFS(MFS)分布式存储共享环境部署记录

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文...

7445
来自专栏韩伟的专栏

集群开源软件赏:ZooKeeper

本篇是开源软件最后一篇,接下来的一周将推送语言相关或项目管理相关内容。敬请期待。以下正文: 所谓集群系统,是指由多个进程和服务器合作组成完成一定功能的系统。之所...

4167
来自专栏腾讯云TStack专栏

nova backup 剖析

nova backup 可以指定虚拟机备份类型,备份保留的数目,那 nova backup 到底是怎么做到备份虚拟机的?下面为大家拨开层层迷雾。

3000
来自专栏草根专栏

Git -- 分支与合并 (命令行+可视化工具p4merge)

把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面.

6358

扫码关注云+社区

领取腾讯云代金券