Oracle数据一致性与事务管理
数据一致性和事务
Oracle中的数据一致性
当从A表取一条数据添加到B表时,需先删除A表数据,再新增B表数据,
如果第二条操作出异常时,就造成了数据不一致。
Oracle中的事务
事务是保证数据一致性的重要手段,试图改变数据库状态的多个动作应该视作一个密不可分的整体。无论其中经过了多么复杂的操作,该整体执行之前和执行之后,数据库均保证一致性。整个逻辑整体即是一个事务。
Oracle中的事务处理
事务的生命周期包括:事务开始、事务执行和事务结束。Oracle中,不会显式声明事务开始,而是由Oracle自行处理,事务结束可以利用commit或者rollback命令
利用commit命令界定事务
在一个会话中,一次事务的结束便意味着新事务的开始。事务的结束可以用commit命令
Update...;
Update...;
Update...;
利用多次Update命令,任意2个步骤间不存在commit和rollback命令,因此他们处于同一事务中。可以利用commit命令来提交修改
事务是指全部提交或者全部回滚,并不代表所有动作都可成功执行,如果某个动作失败,利用commit仍会提交所有成功的修改。
begin
Update...;
Update...;
Update...;
commit;
end
当使用begin end块时,一旦sql语句出现错误,那么不会对数据库做任何修改。
利用rollback命令界定事务
rollback回滚事务内的所有数据修改,并结束事务。
Update...;
Update...;
Update...;
rollback;
数据仍保持原状
Oracle事务的属性和隔离级别
Read only属性
利用Read only 设置只读事务
set transaction Read only ;
一旦设置事务为只读事务,则不能进行任何数据库修改操作、
只读事务除了自身不能修改数据库之外,还冻结了自身所认识到的数据库状态。也就是说,即使有其他事务修改了数据库状态,只读事务是无法识别的。
rollback回滚事务可以解除只读事务。
只读事务的特性,可以提供一种稳定的状态,从而处理大量的数据查询工作。例如,在生成统计报表时,需要查询大量数据。大数据量的查询耗时较多,又需要屏蔽外界干扰。在处理报表的过程中,可以利用只读事务提供稳定的环境,以使生成的报表更符合实际情况。
Read write 属性
Read write属性可以将事务设置为可读、可写状态。也是事务的默认状态。此状态下,事务可以查询、更新数据库内容。
serializable隔离级别
隔离级别是指当前事务对数据库状态变化的屏蔽程度。具有serializable隔离级别的事务是串行化事务。此事务与只读事务有完全相同的隔离级别,对外界其他事务对数据库的修改没有认知度。
设置隔离界别为serializable
set transaction isolation level serializable
与只读事务不同,串行化事务中是可以对数据库进行修改操作的。
Read commited隔离级别
Read commited隔离级别是事务的默认隔离级别。具有该隔离级别的事务只能识别其他事务已经提交的数据修改。
事务处理原则
原子性
原子性是事务的最基本属性。整个事务所有操作是一个逻辑整体。如同院子一样,不可分割,或者全部执行,或者都不执行。
一致性
事务结束后(无论提交还是回滚),数据库中数据的状态必须保持一致性、
隔离性
多个事务可能同时执行。在运行过程中,这些事务之间必须保持互相独立,不能相互影响。
脏读取
一个事务在执行时,有可能读取到外界其他事物对数据库的修改,这些修改是尚未提交,并可能被回滚。如果当前事务受到外界未提交数据的影响,将造成脏读取。
不可重读
同一事务中,前后2次读取表中同一记录,结果不同的。是因为有外界事务修改了该数据。这种修改是其他事务结束之后对数据的影响。
影像读取
同一事务中,前后2次执行相同的查询。第一次结果仍存在第二次结果中,并且没有任何改变。
持久性
持久性是指,事务一旦提交,对数据库的修改记录到永久介质中,例如存为磁盘文件,及时下一刻数据库故障,数据也不会丢失。
当用户提交事务时,Oracle总是先生成redo文件。此文件记录了事务对数据库修改的细节,即使系统崩溃,Oracle同样可以利用redo文件保证所有事务成功提交。
Oracle数据一致性与事务管理的更多相关文章
- Oracle并发控制、事务管理学习笔记
(a)基本概念 锁的2种最基本.最简单的类型:排他锁(eXclusive lock,即X锁).共享锁(Share lock,即S锁). 不同级别的锁定协议及其作用: 申请的锁 及其作用 锁定协议 修改 ...
- spring+springmvc+mybatis+oracle+atomikos+jta实现多数据源事务管理
---恢复内容开始--- 在做项目过程中,遇到了需要一个项目中访问两个数据库的情况,发现使用常规的spring管理事务,导致事务不能正常回滚,因此,采用了jta+atomikos的分布式数据源方式 ...
- Oracle的表创建和事务管理
Oracle的表创建和事务管理 - CURD,根据查询结果创建新表 - 事务管理 - 什么是事务 ,为什么要用事务 - SQL99事务隔离级别 - Oracle事务隔离级别 - 事务回滚 - 隐式回滚 ...
- Java数据库连接——JDBC调用存储过程,事务管理和高级应用
一.JDBC常用的API深入详解及存储过程的调用 相关链接:Jdbc调用存储过程 1.存储过程(Stored Procedure)的介绍 我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后 ...
- 事务基础知识-->Spring事务管理
Spring虽然提供了灵活方便的事务管理功能,但这些功能都是基于底层数据库本身的事务处理机制工作的.要深入了解Spring的事务管理和配置,有必要先对数据库事务的基础知识进行学习. 何为数据库事务 “ ...
- 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)
Spring事务管理概述 文章目录 Spring事务管理概述 数据库事务 什么是Spring的事务管理? Spring对事务管理的支持 Spring事务管理的核心接口 Platform Transac ...
- Spring的事务管理
事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...
- JDBC、JTA、Spring的事务管理
Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么 ...
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
http://blog.csdn.net/bao19901210/article/details/41724355 http://www.cnblogs.com/leiOOlei/p/3725911. ...
- Oracle数据库——数据库安全性管理
一.涉及内容 1.验证系统权限管理. 2.验证角色管理. 3.验证概要文件管理. 二.具体操作 (一) 1.根据以下要求进行系统权限的授予与回收操作. (1)创建用户user1,并为它授予create ...
随机推荐
- centos7防火墙启动关闭
1. 查看防火墙状态 systemctl status firewalld.service 2. 查看对外开放的端口号 firewall-cmd --list-ports 3. 添加端口号 firew ...
- zookeeper选主机制
Zookeeper选主机制 一.Server工作状态 每个Server在工作过程中有四种状态: LOOKING:竞选状态,当前Server不知道leader是谁,正在搜寻. LEADING:领导者状态 ...
- kettle实时增量同步mysql数据
** 本文主要介绍运用kettle实时增量同步mysql数据 ** Debezium介绍 官网地址:https://debezium.io/documentation/ Debezium是一个开源项目 ...
- 银河麒麟v10 sysctl内核参数加载顺序的思考
背景 最近很多伙伴想使用银河麒麟高级服务器系统v10来部署最新版本的k8s集群,可能遇到了各式各样的问题,于是准备使用kylinOS v10重温一遍kubeadm部署最新版本k8s的流程,也是替大家踩 ...
- Sentinel——热点规则
目录 热点规则 配置热点规则 API配置热点规则 热点规则 热点规则是用于实现热点参数限流的规则.热点参数限流指的是,在流控规则中指定对某方法参数的 QPS 限流后,当所有对该资源的请求URL中携带有 ...
- 【代码】Python3|无GUI环境中使用Seaborn作图的学习路线及代码(阴影折线图)
我有个需求是需要画图,让GPT帮我生成了一下学习计划. 学习路线依照GPT的来的,使用的Prompt工具是https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tuto ...
- 【HUST】代数学|理想的分解习题
以下内容中,背景知识部分尽数由GPT生成,生成的方式是直接对问题进行提问,存在错误的小节我已经标注,不保证不存在其他错误. 习题部分是GPT生成后,我将看不懂的地方自己重写了一遍的结果.不保证完全正确 ...
- String类中的多种日期格式化方法
package javaBasic; import java.util.*; public class DateFormat { public static void main(String[] ar ...
- MySQL聚集索引与辅助索引的区别
聚集索引也称聚簇索引,英文为clustered index.从物理存储角度来分, 索引可以分为聚集索引和辅助索引(secondary index,也称作非聚簇索引),区别主要看叶子节点存了什么数 ...
- Kubernetes控制器-Deployment
Kubernetes控制器-Deployment 我们已经知道ReplicaSet控制器是用来维护集群中运行的Pod数量的,但是往往在实际操作时候,我们反而不去直接使用RS,而是使用更上层的控制器,比 ...