/*
事务
事务是为了控制数据异步访问所使用的一种技术
就类似于java中的锁机制 synchronized,只不过功能更加强大
事务不能进行嵌套,当我们开启一个事务的之后作的每一次dml语句都属于这个事务 在oracle里面
事务的开启
执行一个dml语句就会开启一个事务
他会把当前dml语句操作的数据进行锁定,别人在操作这些数据的时候就需要等锁
事务的结束
当事务结束的时候会释放掉当前事务所拥有的锁 显示的事务结束
rollback:事务的回滚
回到开启事务的之前的状态
commit:事务的提交
将数据写入到数据库
隐式的事务结束
执行DDL(创建表)语句会提交当前事务
正常退出数据库会提交事务
非正常退出会回滚事务 制造oracle数据库的死锁
窗口1
UPDATE EMP SET SAL = 888 WHERE EMPNO = 7788;
窗口2
UPDATE EMP SET SAL = 666 WHERE EMPNO = 7934;
窗口1
UPDATE EMP SET SAL = 666 WHERE EMPNO = 7934;
窗口2
UPDATE EMP SET SAL = 888 WHERE EMPNO = 7788; ORACLE死锁是非常影响性能的,所以有自己的死锁检测机制 Oracle查询也会开启事务
SELECT * FROM EMP FOR UPDATE; 事务的隔离级别
定义
在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。 更新丢失
两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了
两个事务同时操作一条数据,如果没有锁,那么我正在更改的数据可能会覆盖别人的数据
脏读
一个事务读取到了另一个事务未提交的数据操作结果
如果A线程更新数据为888,然后锁定,如果这个时候b线程可以看到这个数据
不可重复读
一个事务对同一行数据重复读取两次,但是却得到了不同的结果
虚读
别的事务对其做了修改操作
幻读
别的事务对其做了 新增 删除 操作 SQL定义了一些级别去避免这些问题
未授权读取,也称为读未提交(Read Uncommitted)
可以避免更新丢失,但是不能避免脏读
授权读取,也称为读提交(Read Committed)
可以避免脏读,但是不能避免 不可重复读
可重复读取(Repeatable Read)
避免了脏读和虚读和幻读的删除操作
但是不能避免幻读的新增操作
序列化 序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行
事务的四大特征
原子性( Atomicity )、
一致性( Consistency )、
隔离性( Isolation )
持续性( Durability )。
这四个特性简称为 ACID 特性。
1 、原子性
事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
2 、一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
3 、隔离性
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
4 、持续性
也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。 */
--
CREATE TABLE BANK AS SELECT * FROM EMP;
--窗口1
UPDATE BANK SET SAL = SAL - 1000 WHERE EMPNO = 7839 AND ENAME = 'KING' AND SAL >= 1000;
UPDATE BANK SET SAL = SAL + 1000 WHERE EMPNO = 7369 AND ENAME = 'SMITH';
--窗口2
UPDATE BANK SET SAL = 10 WHERE EMPNO = 7839;
/*
    事务
        事务是为了控制数据异步访问所使用的一种技术
        就类似于java中的锁机制 synchronized,只不过功能更加强大
        事务不能进行嵌套,当我们开启一个事务的之后作的每一次dml语句都属于这个事务
        
        
        
        在oracle里面
            事务的开启
                执行一个dml语句就会开启一个事务
                他会把当前dml语句操作的数据进行锁定,别人在操作这些数据的时候就需要等锁
            事务的结束
                当事务结束的时候会释放掉当前事务所拥有的锁
                
                显示的事务结束
                    rollback:事务的回滚
                        回到开启事务的之前的状态
                    commit:事务的提交
                        将数据写入到数据库
                隐式的事务结束
                    执行DDL(创建表)语句会提交当前事务
                    正常退出数据库会提交事务
                    非正常退出会回滚事务
                    
    制造oracle数据库的死锁
        窗口1
            UPDATE EMP SET SAL = 888 WHERE EMPNO = 7788;
        窗口2
            UPDATE EMP SET SAL = 666 WHERE EMPNO = 7934;
        窗口1
            UPDATE EMP SET SAL = 666 WHERE EMPNO = 7934;
        窗口2
            UPDATE EMP SET SAL = 888 WHERE EMPNO = 7788;
            
        ORACLE死锁是非常影响性能的,所以有自己的死锁检测机制
    
    
    Oracle查询也会开启事务
        SELECT * FROM EMP FOR UPDATE;
        
    事务的隔离级别
        定义
            在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。
            
            
        更新丢失
            两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了
            两个事务同时操作一条数据,如果没有锁,那么我正在更改的数据可能会覆盖别人的数据
        脏读
            一个事务读取到了另一个事务未提交的数据操作结果
            如果A线程更新数据为888,然后锁定,如果这个时候b线程可以看到这个数据
        不可重复读
            一个事务对同一行数据重复读取两次,但是却得到了不同的结果
            虚读
                别的事务对其做了修改操作
            幻读
                别的事务对其做了 新增 删除 操作
        
        SQL定义了一些级别去避免这些问题
            未授权读取,也称为读未提交(Read Uncommitted)
                可以避免更新丢失,但是不能避免脏读
            授权读取,也称为读提交(Read Committed)
                可以避免脏读,但是不能避免  不可重复读
            可重复读取(Repeatable Read)
                避免了脏读和虚读和幻读的删除操作
                但是不能避免幻读的新增操作
            序列化      序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行
 
    事务的四大特征
            原子性( Atomicity )、
            一致性( Consistency )、
            隔离性( Isolation )
            持续性( Durability )。
            这四个特性简称为 ACID 特性。 
        1 、原子性 
        事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 
        2 、一致性 
        事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。 
        3 、隔离性 
        一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 
        4 、持续性 
        也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
    
        
*/  
--
CREATE TABLE BANK AS SELECT * FROM EMP;
 
--窗口1
UPDATE BANK SET SAL = SAL - 1000 WHERE EMPNO = 7839 AND ENAME = 'KING' AND SAL >= 1000;
UPDATE BANK SET SAL = SAL + 1000 WHERE EMPNO = 7369 AND ENAME = 'SMITH';    
 
--窗口2
UPDATE BANK SET SAL = 10  WHERE EMPNO  = 7839;

Oracle - 数据更新 - 事务的更多相关文章

  1. Oracle一个事务中的Insert和Update执行顺序

    今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数 ...

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

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

  3. [转]了解oracle自治事务

    http://blog.csdn.net/indexman/article/details/7799862 1.什么是Oracle自治事务 在官方文档中,是这样的定义的“Autonomous tran ...

  4. Oracle之事务

    一,oracle的事务: 是指对数据操作的一系列动作的统称.即:事务的任务便是使数据库从一种状态变换成为另一种状态,这不同于文件系统,它是数据库所特用的. 事务有四大特性(ACID): 1,原子性(a ...

  5. 浅述Oracle分布式事务概念

    着系统的复杂性不断增加,我们所面对的分布式系统渐渐增加.分布式文件系统.分布式消息队列系统等等层出不穷,在一些行业特别是互联网行业应用广泛.分布式数据库也是目前使用比较常用的分布式系统之一. 简单来说 ...

  6. oracle之事务和锁

    Oracle的事务和锁(PPT-I-283-293) 10.1 什么是事务 必须具备以下四个属性,简称ACID 属性:原子性(Atomicity):  事务是一个完整的操作.事务的各步操作是不可分的( ...

  7. oracle分布式事务总结-转载

    基本概念 Local Coordinator:在分布事务中,必须参考其它节点上的数据才能完成自己这部分操作的站点. Global Coordinator:分布事务的发起者,负责协调这个分布事务. Co ...

  8. Oracle基础 事务

    一.事务 事务就是业务上的一个逻辑单元,它能够保证其中对数据所有的操作,要么全部成功,要么全部失败. 二.事务的特性: 1.原子性:事务是SQL中的最小执行单位,不能再进行分割.要么全部执行,要么全部 ...

  9. Oracle 临时事务表 全局临时表_global temporary table

    所有的操作都在一个事务里,事务提交后,此表清空,特别适合做插入删除频率特别高的临时表操作,比如插入完数据就开始查询,查询完就删掉等,用完就扔! 临时表分事务级临时表和会话级临时表. 事务级临时表只对当 ...

随机推荐

  1. 【URAL 1989】 Subpalindromes(线段树维护哈希)

    Description You have a string and queries of two types: replace i'th character of the string by char ...

  2. 一份快速实用的 tcpdump 命令参考手册

    对于 tcpdump 的使用,大部分管理员会分成两类.有一类管理员,他们熟知  tcpdump 和其中的所有标记:另一类管理员,他们仅了解基本的使用方法,剩下事情都要借助参考手册才能完成.出现这种情况 ...

  3. 本机操作Excel文件提示错误:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

    解决办法是: 选择项目-->右键"属性"-->生成-->目标平台-->选择X86或者首选32位

  4. [Istioc]Istio部署sock-shop时rabbitmq出现CrashLoopBackOff

    因Istio官网自带的bookinfo服务依赖关系较少,因此想部署sock-shop进行进一步的实验. kubectl apply -f <(istioctl kube-inject -f so ...

  5. [Go]通道(channel)的基本操作

    通道类型是Go语言自带的.唯一一个可以满足并发安全性的类型,在声明并初始化一个通道时,需要用到内建函数make,传给make函数的第一个参数应该代表通道的具体类型的类型字面量. 如类型字面量 chan ...

  6. 七牛云一站式 SSL 证书服务上线,即刻使用最多可省 7 万

    2017 年 ,随着谷歌.苹果和腾讯对原 HTTP 的相继限制,全站 HTTPS 已经成为了当下趋势,所以安装 SSL 证书成为网站建设中必不可少的一步. 在 2016 年底,七牛云已经与 Trust ...

  7. CSU 1307 最短路+二分

    题目大意: 帮忙找到一条a到b的最短路,前提是要保证路上经过的站点的最大距离尽可能短 这道题居然要用到二分...完全没去想过,现在想想求最大距离的最小值确实是... 这里不断二分出值代入spfa()或 ...

  8. [luoguP1227] [JSOI2008]完美的对称(sort)

    传送门 排序! #include <cstdio> #include <iostream> #include <algorithm> #define N 20001 ...

  9. 路线统计(codevs 1482)

    题目描述 Description N个节点的有向图, 求从start到finish刚好经过时间time的总方案数 mod 502630. 输入描述 Input Description 第一行包含一个整 ...

  10. ZOJ 3471 【状态压缩DP】

    题意: 有n种化学物质,他们彼此反应会有一种消失并释放出能量. 给出矩阵,第i行j列代表i和j反应j消失释放的能量. 求最大释放多少能量. 思路: 状态压缩DP,我是这么想的. 利用二进制0代表该物质 ...