oracle 事务处理详解

38、Oracle数据库并发、多版本控制与事务处理详解 本文详细解析了Oracle数据库中的并发控制、多版本控制与事务处理机制,探讨了触发器重启对非事务性操作和性能的影响,对比了不同数据库隔离级别的行为差异,并深入介绍了事务的ACID特性、控制语句、分布式事务的两阶段提交协议以及自治事务的使用注意事项。通过合理应用这些机制,可以有效提升数据库应用的可靠性与性能。 阅读详情
 

1、事务概念:

 概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。

 

  主要特性:确保数据库的完整性。

 

2、事务的ACID特性

  对一组SQL语句操作构成事务,数据库操作系统必须确保这些操作的原子性,一致性,隔离性,持久性.

1、  原子性(Atomicity)

    事务的原子性是指事务中包含的所有操作要么全做,要么不做,也就是说所有的活动在数据库中要么全部反映,要么全部不反映,以保证数据库的一致性。

2、  一致性(Consistency)

    事务的一致性是指数据库在事务操作前和事务处理后,其中数据必须满足业务的规则约束。

3、  隔离性(Isolation)

   隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离性可以防止多个事务的并发执行时,由于它们的操作命令交叉执行而导致数据的不一致性。

4、  持久性(durability)

    事务的持久性是指在事务处理结束后,它对数据的修改应该是永久的。即便是系统在遇到故障的情况下也不会丢失,这是数据的重要性决定的。

 

 

 

3、事务的控制语句

   在oracle数据库中,没有提供开始事务处理语句,所有的事务都是隐式开始的,也就是说在oracle中,用户不可以显示使用命令来开始一个事务.oracle任务第一条修改数据库的语句,或者一些要求事务处理的场合都是事务的隐式开始。但是当用户想要终止一个事务处理时,必须显示使用commit和rollback语句结束。

  根据事务ACID属性,oracle提供了如下的事务控制语句:

   Set transaction 设置事物属性

   Set constrains  设置事物的约束模式

   约束模式是指:在事务中修改数据时,数据库中的约束立即应用于数据,还是将约束推迟到当前事务结束后应用。

   Savepoint 在事务中建立一个存储的点.当事务处理发生异常而回滚事务时,可指定事务回滚到某存储点.然后从该存储点重新执行。

   Release  savepoint  删除存储点

   Rollback 回滚事务 取消对数据库所作的任何操作

   Commit 提交事务 对数据库的操作做持久的保存。

 

 

  3、1设置事物的属性:

  set transaction语句可用来设置事物的各种属性。该语句必须放在事务处理的第一个语句.

也就是说,必须在任何insert、update 、delete语句以及其他的事务处理。

  Set transaction的语句可以让用户对事务的以下属性进行设置

  指定事务的隔离层

  规定回滚事务所使用的存储空间

  命名事务

 备注:在使用set transaction语句设置属性时,对于规定回滚事务所使用的存储空间的设置很少使用.对于命名事务也非常简单,只有在分布式事务处理中才会体现出命名事务的用途.

 

 注意:set transaction只对当前事务有效,事务终止,事务当前的设置将会失效。

 

1、  数据异常

事务的隔离性定义了一个事务与其它事务的隔离程度.为了更好的理解隔离层,首先讨论一下并发事务对同一个数据库进行访问可能发生的情况.在并发事务中总体来说会发生如下3种情况

  错读 |脏读

  非重复读取|不可重复读

  假读|幻读

 

    错读|脏读:当一个事务修改数据时,另一事务读取了该数据,但是第一事务由于某种原因取消对数据修改,使数据返回了原状态,这是第二个事务读取的数据与数据库中数据不一致.这就叫错读。

 

   非重复读取:是指一个事务读取数据库中的数据后,另一个事务则更新了数据,当第一个事务再次读取其中的数据时,就会发现数据已经发生了改变,这就是非重复读取。非重复读取所导致的结果就是一个事务前后两次读取的数据不相同。

 

   假读:如果一个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是假读。

 

    事务中遇到的这些异常与事务的隔离性设置有关,事务的隔离性设置越多,异常就出现的越少,但并发效果就越低,事务的隔离性设置越少,异常出现的越多,并发效果越高。

2、  选择隔离层

   针对3中读取的数据时产生的不一致现象,在ANSI SQL标准92中定义了4个事务的隔离级别.如下图所示:

隔离层

错读|脏读

非重复读取|不可重复读

假读|幻读

READ UNCOMMITTED(非提交读)

是

是

是

READ COMMITTED(提交读)

否

是

是

Repeatable READ(可重复读)

否

否

是

Serializable(串行读)

否

否

否

 

Oracle支持上述四种隔离层中的两种:read committed 和serializable。除此之外oralce中还定义read only 和 read write隔离层。

 Read committed 这是oracle默认的隔离层。

Serializable:设置事物的隔离层位它时,事务与事务之间完全隔开,事务以串行的方式执行,这并不是说一个事务必须结束才能启动另外一个事务,而是说这些事务的执行的结果于一次执行的事务的结果一致。

 

Read only和 read write 当使用read only时,事务中不能有任何修改数据库中数据的操作语句,这包括 insert、update、delete、create语句。Read only是serializable的一个子集,区别是read only 只读,而serialzable可以执行DML操作。Read write它是默认设置,该选项表示在事务中可以有访问语句、修改语句.但不经常使用.

 

 

 

3、  建立set transaction的语句

 列举如下:

  Set transaction read only

  Set transaction read write

  Set transaction isolation level read committed

  Set transaction isolation level serializable

 

注意:这些语句是互斥的.即不能够同时设置两个或者两个以上的选项。

 

 

4、  结束事务:

什么情况下代表事务的结束呢?

  

1、  Commit 提交事务

2、  rollback 回滚事务 

 

//只读的案例

SQL> set transaction read only;

 

Transaction set

 

SQL> select * from users where username='mj';

 

USERNAME      PASSWORD      NAME             ADDRESS             ZIP

-------------------- -------------------- -------------------- -------------------- -------

mj                  redarmy          陈红军                                

 

SQL> update users set password='123' where username='mj';

 

update users set password='123' where username='mj'

 

ORA-01456: 不能在 READ ONLY 事务处理中执行插入/删除/更新操作

 

//脏读的案例

SQL> set transaction isolation level read committed;

 

Transaction set

 

SQL> select * from users where username='mj';

 

USERNAME      PASSWORD      NAME             ADDRESS             ZIP

-------------------- -------------------- -------------------- -------------------- -------

mj                  redarmy          陈红军                                

 

SQL> update users set password='123' where username='mj';

 

1 row updated

 

SQL> select * from users where username='mj';

 

USERNAME      PASSWORD      NAME             ADDRESS             ZIP

-------------------- -------------------- -------------------- -------------------- -------

mj                  123                 陈红军                                 

 

SQL> rollback;

 

特斯拉 Model 3解析(九)特斯拉 Model 3 自动驾驶域控制器硬件架构 硬件层:车规级高密度主板 → PI/SI优化到极致传感器层:三目摄像头主导视觉,雷达补充冗余,超声波保证近距设计理念:依靠芯片算力最大化视觉潜力,而不是堆传感器这套思路的优点是:成本可控、量产快、迭代快。缺点是:极端场景下感知鲁棒性不足。纯视觉方案短期可行,但中长期必然要重新引入高分辨率雷达甚至固态LiDAR作为冗余。电源/信号完整性会越来越关键,未来域控板设计会越来越像数据中心服务器。 阅读详情

相关推荐

HT7036计量芯片SPI通信与数据读取实战解析

本文详细解析HT7036计量芯片的SPI通信与数据读取实战,涵盖SPI时序配置、命令发送、数据读取及常见问题排查。重点介绍如何通过SPI接口与MCU通信,实现电能数据的稳定采集与处理,为智能电表等应用提供实用解决方案。

vscode5coder的博客 263

ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句 异常

可能的原因: 1:org.quartz.jobStore.txIsolationLevelSerializable设置为true的原因,将此属性设置为false 2:job类中可能做了大量的和数据库交互的代码,但是job默认是多线程并发执行的,出现任务堆积导致,如果使用MethodInvokingJobDetailFactoryBean方式只需设置concurrent为false即可 如果使用实现job接口或者继承QuartzJobBean等类时需要在此job实现类上添加 @DisallowConcurre

zxw08611的专栏 4608

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 412

Java OracleDatabaseException: ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句问题解决

问题描述: Caused by: oracle.jdbc.OracleDatabaseException: ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句 问题分析: 1、Quartz从MySQL数据库换成Oracle数据库,出现了报错。 解决办法: (1)注释掉Quartz配置类的@Configuration注解。 (2)注释掉Quartz配置类的prop.put("org.quartz.jobStore.txIsolationLevelSerializabl

旭东怪的博客 2364

编译原理(东南大学)一:【编译原理期末冲刺救命笔记】速存!看完再上考场稳了!

本文详细介绍了编译原理的核心概念和流程,包括程序设计语言的分类、编译程序的各个阶段(如词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成)以及编译程序生成和构造的基础知识。文章还探讨了编译中的表格管理、出错处理和遍的概念,以及编译基础知识如高级语言、语法规则、字母表和符号串的运算。此外,文中还涉及文法与语言的关系,包括文法的概念、非终结符、终结符、产生式、推导和规约等。整体内容旨在为学习编译原理的学生提供全面的复习资料和考试准备指南。

一位搞嵌入式和前端的genius的博客 1026

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(一)(附源码)

俯视角射击游戏)是一类以俯视视角进行游戏展示的射击游戏。在这种游戏中,玩家控制着一个角色或载具,从俯视的角度上方观察游戏世界,并与敌人进行战斗。这种视角使玩家能够有更好的全局观察和策略性,同时也强调快速反应和精确射击。视角:俯视角度可以是固定的,也可以随着玩家角色的移动而变化,但都允许玩家以全局视角观察整个战场,有利于制定战略和规划行动。射击:玩家通常需要使用各种武器来与敌人进行战斗,包括枪械、爆炸物等。射击动作依赖于玩家的反应速度和准确性。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7829

oracle入门05

1、事务概念: 概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。   主要特性:确保数据库的完整性。 2、事务的ACI

440

STM32CubeMX之DAC产成正弦波

“在之前的文章中曾经介绍过用TIM产生PWM做DAC用,STM32定时器输出PWM做DAC。部分型号的STM32单片机内部有专用的DAC,本篇文章将介绍如何用内部DAC+DMA产生正弦波...

zhang062061的专栏 1513

hibernate ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句

public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory).getCurrentSession(); session.beginTransaction(); Users user = new Users(); user.setName("weiwei");...

iteye_11350的博客 3198

图解ADAS电源系统架构:看懂这张图,搞懂前装摄像头的供电秘密!

别以为ADAS系统就是“摄像头 + SoC”,其实最难搞的是供电系统,尤其是要满足车规级ASIL-D安全等级时。供电时序、电压稳定性、电源监控、冗余通信链路,一个都不能少。😤一旦电源选型不对,轻则系统卡顿,重则全车失控,不是闹着玩的。

weixin_43199439的博客 671

windows下宝塔安装教程

windows下宝塔安装教程 目录宝塔是什么?宝塔安装流程1.下载2.配置3.登录4.安装的环境套件小结 宝塔是什么? 宝塔是管理服务器的免费的软件,宝塔上面可以进行对你的服务器批量进行管理,对于运维人员来说还是必不可少的一个软件,值得使用。 宝塔安装流程 1.下载 链接: https://download.bt.cn/win/panel/BtSoft.zip 下载后安装买最好自定义目录,方便找 2.配置 下载完成后会出现这个页面,对着页面进行配置 点击默认密码复制进来,这里注意一点就是一定要查看

你在看屏幕的同时,屏幕也在注视着你 4421

oracle事务处理详解

1、事务概念:  概念:在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。   主要特性:确保数据库的完整性。   2、事务的ACID特性   对一组SQL语句操作构成事务,数据库操作系统必须确保这些操作的原子性,一致

naomi_qing的博客 1万+

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

Edward的博客 851

oracle数据 事务处理,Oracle数据库事物详解

一、事务概念:概念:在中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么完全成功执行,完成整个工作单元操作,要么一点也不执行。主要特性:确保数据库的完整性。二、事务的ACID特性对一组SQL语句操作构成事务,数据库必须确保这些操作的原子性,一致性,隔离性,持久性.1、 原子性(Atomicity)事务的原子性是指事务中...

weixin_42518035的博客 699

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

oracle 采购入库 退货,详解EBS接口开发之库存事务处理采购接收和退货

1.事务处理头SELECTpo.rcv_interface_groups_s.nextvalINTOl_group_idFROMdual;g_group_id(x_group_num):=l_group_id;x_group_num:=x_group_num+1;SELECTrcv_headers_interface_s.nextvalINTOl_rcv_headers_...

weixin_33196106的博客 1387

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Oracle 笔试面试题详解

文章目录1 概述2 笔试2.1 选择题2.2 填空题2.3 简答题2.4 编码题3 面试 1 概述 1. 笔试、面试常考题(题目来源于网络及工作中的自我总结,欢迎补充) 2. 随时更新,相关知识点,会在本人博客中详细说明(搜索关键字) 3. 最后,愿大家都能找到心仪的工作 ^_^ 2 笔试 2.1 选择题 1. 下面哪个用户不是 Oracle 缺省安装后就存在的用户?('A') A.SYSDBA B.SYSTEM C.SCOTT D.SYS 解析:A:SYSDB

鱼丸丶粗面 1298

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Oracle(四)这些SQL基础你都会了么

目录 1.SQL语言基础 1.1 DDL(数据定义语言DDL) 1.2 DCL(数据控制语言DCL) 1.3 DML(数据操纵语言DML) SQL语句的一些规范: 2.用户与模式 2.1 用户(user): 2.2模式/方案(schema) : 3.select语句的使用(重点) 4.SQL中常用内置函数(重点) 5.子查询(难点) 6.Oracl...

小小前端攻城狮的博客 3328

Oracle 第13章:事务处理

事务处理是数据库操作的核心组成部分,对于保证数据的一致性和完整性至关重要。通过理解事务的概念、特性和管理方法,以及采取合适的并发控制策略和技术手段,可以在Oracle数据库中实现高效可靠的事务处理。在实际应用中,不断优化事务的设计,并确保异常处理得当,可以帮助构建更加健壮的应用系统。

hummhumm的专栏 1223

SQL、Oracle 和 SQL Server 的比较与分析

*Oracle环境**: - 充分利用PL/SQL的强大功能 - 考虑使用分区表处理大数据量 - 利用RAC实现高可用性 2. **SQL Server环境**: - 利用内存优化表提高性能 - 对分析型查询使用列存储索引 - 考虑Always On可用性组实现高可用 3. **跨平台开发**: - 尽量使用标准SQL语法 - 将数据库特定代码封装在存储过程中 - 使用ORM工具时注意不同数据库的方言配置 4. **迁移注意事项**: - 数据类型

weixin_46261399的博客 1933

oracle事务处理是什么,oracle事务处理

oracle事务处理什么是事务?事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:网上转账就是典型的要用事务来处理,用以保证数据的一致性。事务和锁当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表表的结构,这种锁机制采用的是文件锁形式,之前学习Java多线程的时候,对此一个比较直观的认识就是,上锁就表示在他没有解...

weixin_34116482的博客 577

oracle成批事务处理,Oracle事务处理

Oracle事务处理事务是由一系列语句构成的逻辑工作单元。事务和存储过程等批处理有一定程序上的相似之处,通常都是为了完成一定业务逻辑而将一条或多条语句“封装”起来,使它们与其他语句之间出现一个逻辑上的边界,并形成相对独立的一个工作单元。当使用事务修改多个数据表时,如果在处理的过程中出现了某种错误,例如系统死机或突然断电等情况,则返回结果是全部数据均没有被保存。因为事务的处理结果只有两种:一种是在事...

weixin_29446845的博客 266

Oracle之事务处理

一. 事务处理 事务处理: 二.Oracle中事务操作命令 三. 关于‘SESSION’ 所有的命令,每个 SESSION 全都具备,为了更好的观察出事务的特点。下面会使用多个 sqlplus 窗口进行功能的展示。 1. sqlplus /nolog ...

weixin_30363817的博客 89

SQL-Oracle04事务处理

事务处理 eg:创建一个只包含10部门雇员的一张临时表 CREATE TABLE emp10 AS SELECT * FROM emp WHERE deptno=10 ; eg:删除emp10表中的7782雇员。 SELECT * FROM emp10 WHERE empno=7782 ; 从当前的窗口中发现,此时数据被删除了。 但是,现在开启第二个窗口,再次查询emp10表,观察

52Pig的专栏 785
上一篇: oracle集合查询
下一篇: DML详解
日依
博客等级 码龄15年 165粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值