名词解释

DML:Data Manipulation Language (数据库操纵语言) 例如:DELETE、INSERT、UPDATE、SELECT

DDL:Data Definition Language(数据库定义语言) 例如:CREATE、ALTER、DROP、

DCL: Data Control Language (数据库控制语言) 例如:GRANT、REVOKE、DENY

1.按照组成方式

Oracle数据库的事务可以有以下几种组成方式:

  • 一个或多个DML
  • 一个DCL语句
  • 一个DDL语句

2.事务按照启动方式

  • 显示事务

Oracle 11g中事务是隐式自动开始的,它不需要用户显示的执行开始事务语句

  • 隐性事务

打开隐性事务设置开关后,执行下一条SQL语句的时候自动启动一个新事务,并且每关闭一个事务时,下一条SQL语句又自动启动一个新事务,直到关闭了隐性事务的设置开关。

  • 自动提交事务

此处是SQL Server默认模式。当一条有效的SQL语句执行后,成功了便自动提交,如果失败了,那么将自动回滚并返回错误信息。

改变事务的模式只影响当前数据库连接,不影响其他连接中的事务

Oracle事务结束

当下列事件发生的时候结束:

  • 用户执行了COMMIT语句(提交)
  • 用户执行了ROLLBACK语句(回滚)
  • 用户执行了DDL语句(自动提交)
  • 用户执行了DCL语句(自动提交)
  • 用户正常退出SQL*Plus(自动提交)
  • 用户非正常退出SQL*Plus(自动回滚)
  • 系统奔溃,包括硬件或软件故障(自动回滚)

事务的并发控制

1.丢失更新

个人理解:我们一起修改,谁也不管谁

当两个或多个事务选择同一行,然后基于最初选定的值更新改行时,会发生丢失更新问题。

例如:

A与B同时在修改电子文档,当A提前修改完毕提交后,B修改完提交则会覆盖A修改的内容,这就造成了丢失更新,如果是等待A修改完毕,B才可以得到文档再修改,则会避免这种问题。

2.未确认的相关性(脏读)

个人理解:我还在改,你就复制我还没改好的东西

如果一个事务读取了另外一个事务尚未提交的更新,则称为脏读。

例如:

A复制了B的电子文档,但是此时B还在修改电子文档,此时A获取到的电子文档就与B修改后的电子文档不一致了。如果B等A修改完成后再复制,那么将不会出现这种情况。

3.不一致的分析(不可重复读)

个人理解:没有互相通知,你改你的,我读我的,第一次读对的,第二次读,变化好大

当事务多次访问同一行数据,并且每次读取的数据不同时,将会发生不一致分析的问题。不一致的分析与未确认的相关性类似,因为其他事务也在更改该数据。

例如:

A两次读取B的文档,第一次读取未修改,但是在A第二次读取的时候,B觉得文档需要优化,对文档进行了修改,当A第二次读取文档的时候,发现与第一次的文档不一致了,这就叫做不可重复读,如果A在B完全修改完毕后再读取,那么就可以避免该问题。

4.幻象读

个人理解:你都已经提交给我了,你还在修改

当一个事务的更新结果影响到另一个事务时,会发生幻象读。

B修改了文档A提交的文档,但是在B修改的同时,A又修改了文档,并且还提交了,接着B修改完毕后提交,却发现A在把文档提交给自己修改的同时再次修改了文档。如果B在修改文档之前,没有任何人更新过文档,那么就可以避免该问题。

【Oracle】事务处理的更多相关文章

  1. Oracle事务处理

    原文转自:(http://www.cnblogs.com/ITtangtang/archive/2012/04/23/2466554.html) 一.事务概念事务用于保证数据的一致性,它由一组相关的d ...

  2. Oracle 事务处理

    事务的四大特性 1.原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的. 2.一致性(Consistency) 一致性是指数据库在事务操作前和事 ...

  3. oracle事务处理及实例演示jdbc操作批量删除

    事务 作为逻辑处理的基本单位,对于数据库操作来说由一条或者多条sql语句来构成.当然还有针对非数据库操作的,如在计算机中设置的还原点即是一个非常好的应用. 对于事务的基本性质在还有一篇中有所叙述:SQ ...

  4. 关于ORACLE事务处理的一些笔记

    这是2013年在看ORACLE概念手册的时候的一些笔记,现在整理如下(可能跟其他一些文章的内容有重复):     20131012 周六 oracle概念手册中文版 第4章 事务管理   事务具有原子 ...

  5. oracle 事务处理 注意事项(笔记)

    事务:一个独立的逻辑工作单元.它有特定的一系列必须作为一个整体一起成功或者失败的SQL语句组成.是一个要么全有要么全无,很个性的一个东东. 事务的四大属性——ACID属性:原子性(atomicity) ...

  6. Oracle与SQL Server事务处理的比较

    事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异.事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的 ...

  7. 数据库事务隔离级ORACLE数据库事务隔离级别介绍

    本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committ ...

  8. oracle 笔记

    1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create databas ...

  9. oracle系列索引

    今天终于把oracle入门的知识通篇过了一遍. 一篇文章没有写,先做个索引.把知识系统的梳理下. 数据库基本概念-oracle介绍 oracle安装,配置,启动 oracle工具 sqlplus 用户 ...

  10. SQL Server与Oracle中的隔离级别

    在SQL92标准中,事务隔离级别分为四种,分别为:Read Uncommitted.Read Committed.Read Repeatable.Serializable 其中Read Uncommi ...

随机推荐

  1. “System.InvalidOperationException”类型的未经处理的异常在 ESRI.ArcGIS.AxControls.dll 中发生

    问题描述: 新手们进行ArcGIS ArcObject开发时经常会遇到各种十分古怪的问题,比如下面的这个问题: “System.InvalidOperationException”类型的未经处理的异常 ...

  2. UIView 精要概览(持续更新)

    --1-- 知识点:为UIView 设置圆角 前提:layer 属性需要 <QuartzCore/QuartzCore.h> 静态库的支持,所以需要提前导入到项目中,并在你的文件中包含#i ...

  3. c++11改进我们的程序之垃圾回收(一)

    c#和java中有自己主动垃圾回收机制,.net执行时和java虚拟机能够管理分配的堆内存,在对象失去引用时自己主动回收,因此在c#和jva中,  内存管理不是大问题.c++语言没有垃圾回收机制,必须 ...

  4. myql --- mysqldump使用方法

    1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构 ...

  5. 《Windows核心编程》第五章——作业

    #include <windows.h> #include<iostream> #include <tchar.h> using namespace std; ty ...

  6. 简明python教程 --C++程序员的视角(五):面向对象的编程

    面向对象的编程 在大多数时候你可以使用过程性编程,但是有些时候当你想要编写大型程序或是寻求一个更加合适的解决方案的时候,你就得使用面向对象的编程技术. 对象可以使用普通的属于对象的变量存储数据.属于一 ...

  7. Endianess(字节次序)简介

    1. 基础 在解释Endianess前,需要先明白几个基础定义 1) 数据的高位与低位是什么 以1001001为例,则从左边算起是 高位 -> 低位, 简而言之就是左边是高位,右边是低位 而内存 ...

  8. 眼前一亮!十八款新潮而又独特的网站Header设计

    一个网站最重要的一个部分就是标题.这将是访问者的第一印象,设计出一个吸引眼球并且功能清晰导航还是比较容易的,但想出一个独特的header却总是困难的,这就是为什么我决定把那些对我有最影响的导航列出来了 ...

  9. 遇到问题描述:Android Please ensure that adb is correctly located at问题解决

    遇到问题描述: 运行android程序控制台输出 [2013-11-04 16:18:26 - ] The connection to adb is down, and a severe error ...

  10. 【Python】Python 微服务框架 nameko

    nameko: 1.支持服务发现.负载均衡 2.支持依赖自动注入,使用很方便 3.缺点:超时.限速.权限等机制不完善 代码示例:https://github.com/junneyang/nameko- ...