预习事务处理

一 事务概念:由一组sql语句组成的一个逻辑工作单元

二 事务的属性:

2.1 原子性

一个事务是一个不可分割的逻辑工作单元,事务所包含的所有工作单元要么不做,要么全做

例如:银行转账业务。A向B转账,A的账户减少100,B账户增加100,这两个操作要么同事提交,要么都回退

2.2 一致性

系统在一个状态变换到另外一个状态,他们的一致性必须保持一直,事务总体上不能破坏特性环境下的任何业务规则

例如,在AB账户总金额在转账前后始终保持一致,只是有短暂的不一致。这个短暂时间发生在事务提交之前,事务提交

之后,保持一致。

2.3 隔离性

每个事务 都必须独立于其他业务执行

例如:活动事务所做的改变对并发运行的其他事务来说是不可见的,当A向B转账的同时,C向A转账,若同时进行,则A和B

之间的一致性不能满足。所以在AB事务执行过程中,其他事务不能访问当前相关的数值。

2.4 持久性

确保事务完成之后,对数据的修改是永久性的,即使发生系统故障也不会对其有影响、

例如:当AB转账完成事务提交之后,就算系统故障,数据已经被修改,转账已经成功、

注意:关于隔离性所引起的几个问题

1  更新结果丢失、在oracle默认级别下,该情况不会发生

事务1----- 更新数据 2000+200

事务2 ----- 更新数据(读取的是没有更新的结果)2000+200

事务1----- commit 2200

事务2 ---- commit 2200

本来结果应该为2400 ,但是现在只有2200,出现更新结果丢失

2 脏读 在oracle默认级别下,该情况不会发生

事务1 ---更新数据:2000+200

事务2 --更新数据:查询到的数据为2000,实际上已经为2200了,只是事务1没有提交,导致事务2读取的数据错误

事务2--commit

事务1 ---commit

3 不可重读

解释:事务1----查询数据

事务2---修改数据

事务2---commit

事务1----查询数据

此时会发现事务1中发生两次查询数据不同(数据内容上的不同天)

4 幻读

事务1 ----查询数据

事务2 ----添加或者删除(insert delete)

事务2 ----commit

事务1-----查询数据

事务1中两次查询数据条目不同

三 基本的事务处理

3.1 开始事务

在oracle中默认状态下,事务是自动启动的,不需要在代码中手动定义,(当我们执行第一句sql代码时,事务自动开启)

3.2 执行sql语句

如果有多条执行语句组成一个事务。那么必须待所有sql都执行成功,那么表示事务可以被提交,否则事务要进行回滚。

3.3 提交事务

如果事务中的所有sql都执行成功,可以通过执行commit提交事务

语句:

commit;

3.4 注意:以下情况会自动提交事务

1 当执行ddl语句时将会自动提交事务。例如 create table alter table 以及drop table

2 当执行dcl表,

3 当oracle服务被关闭的时候。   四  隔离级别      4.1 未提交读 (Read Uncomited)oracle中最低最危险级别,无法避免脏读现象,但是不允许数据更新丢失      4.2 提交读(Read Commited)是大多数数据库系统的默认级别。可以避免脏读现象,但是不可避免重复读      4.3 可重复读取(Repeatable Read)可以避免可重复读取和脏读,但是不可避免幻读。      4.4 可串行读(Serializable Read)要求事务按照顺序执行,确保事务不被干扰,但是并发性低   五 数据库中的锁        (一)  锁的种类    5.1 行级共享锁(RS row share):一个用户使用共享锁锁定某一行之后,其他用户也可以对相同列加上共享锁                             加锁之后,可以查询该行,但是不能修改该行的数据。      5.2 行级排他锁(RX row exclusive):只允许某一用户对其加锁,其他用户不能再锁定。           用法 :for update                通过for update 给sql语句添加排它锁                例如:select * from emp where empno = 7369 for update;用于锁住编号为7369的一行数据,                此时,另外的用户来修改该行数据,则会一直等待该条数据释放锁,然后执行修改语句,但是某些                情况下,用户不希望等待太长时间,这时,可以设定等待时间或者设置不等待                update set sal = 1000 where empno = 7369 nowait设置不等待模式                update set sal = 1000 where empno = 7369 wait 10 设置等待10秒                如果在十秒之后,锁还没有被释放,则停止等待。      5.3 共享锁 (S share):和行级享锁差不多,只是共享锁锁住的对象是整个表。例如                            lock table tableName in share mode                                    5.4 共享更新锁 (in share update mode)                     5.5 排他模式 :只允许某一用户对其加锁,其他用户不能再锁定。不允许其他用户插入、更新和删除行,允许其他表插入数据,                (二)锁的级别         行级锁:也称事务所,该锁从事务被创建开始,事务提交或者回滚释放。行级锁可以锁定某一行数据          表级锁:               备注:相应的操作自动产生锁的对象关系        1 在执行insert update delete语句时,自动产生行级排他锁        2 在执行create语句时候,自动产生共享锁(S锁)              3 在执行alter语句的时候,自动产生排他锁

oracle事务处理编号,oracle事务处理相关推荐

  1. ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息(对象名 ‘RECOVER.HS_TRANSACTION_LOG‘ 无效,ERROR ORA-02054: 未决事务处理)

    今天在存储过程中通过dblink的方式从oracle中往sql server中的表插入数据时,报如下的错误: ERROR ORA-02054: 未决事务处理 15.29.1031 ORA-28500: ...

  2. oracle更新编号的值,更改oracle数据库编码

    修改oracle 数据服务器编码 如何修改数据库oracle 的编码呢? 我使用的oracle的版本是: Oracle Database 11g Enterprise Edition Release ...

  3. Oracle学习笔记 --- Oracle ORA错误解决方案

    今天在Debug的时候报错了如下信息: 后来综合了网上的东西,总结如下: ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-000 ...

  4. cmd删除oracle监听,oracle数据库监听删除

    oracle 10G for linux常用命令 oracle 10G for linux常用命令 首先以Oracle用户登录 1. $/oracle/oracle/app/product/101/b ...

  5. oracle成本岗,ORACLE的成本管理.doc

    ORACLE的成本管理 ORACLE ERP COST 第一章 成本管理系统概览 1.1 成本管理系统概览 Oracle Cost Management 是一个全面吸收的.永续的期间成本计算系统,可用 ...

  6. oracle 峰度 函数,Oracle Database 21c 十大新特性一览

    摘要:Oracle 考虑到 2020 年我们的客户将面临前所未有的经济和业务中断.我们决定不将 Database 20c Preview 版本升级为 General Availability. 相反, ...

  7. oracle 快捷 企业,Oracle自治数据库提供APEX 20.1,助企业快速构建应用

    Oracle自治数据库(Oracle Autonomous Database)现已提供Oracle APEX 20.1,Oracle Application Express(APEX)是一个低代码应用 ...

  8. rds oracle,Amazon RDS Oracle数据库托管

    您可通过两种不同的许可模式运行 Amazon RDS for Oracle,即"附带许可"和"使用自有许可 (BYOL)".在"附带许可"服 ...

  9. oracle 9i hwm,Oracle 10g HWM原理及性能优化

    摘 要: HWM(High Water Mark)是表中已经使用过的存储空间与未使用过的存储空间之间的分界线,HWM对全表扫描的性能有非常大的影响.当全表扫描时,Oracle会读取HWM下所有的块,即 ...

最新文章

  1. SharePoint 2010中的客户端AJAX应用——ASP.NET AJAX模板
  2. 数据结构与算法之美-目录
  3. FTP服务(vsftpd)配置
  4. 搜索推荐炼丹笔记:酒店搜索位置偏差的边际重要性
  5. linux常用命令(1)帮助命令man使用
  6. leetcode 441. 排列硬币(Java版)
  7. 老子学不动系列:Vue 3.0 新特性预览
  8. 100个犯人和一个亮灯泡_每个人都在一个开放的组织中更换灯泡
  9. sklearn报错DeprecationWarning: the imp module is deprecated in favour of importlib
  10. 本地创建多个ssh-key
  11. 景驰无人车余波:王劲“嫡系”忽然发难,官方回应辞退员工所述不实
  12. java 对象给对象赋值为空_java中,只声明一个对象不赋值,与声明一个对象并赋为 null 的区别...
  13. pe系统如何读取手机_五分钟教会你pe系统制作
  14. 软件研发的6sigma案例解析
  15. Spring Cloud Open Feign系列【23】OAuth2FeignRequestInterceptor、BasicAuthRequestInterceptor拦截器解析
  16. python批量图像处理_基于python代码批量处理图片resize
  17. J2ME移动开发平台搭建
  18. 系统安全 --------- 账号安全管理
  19. web前端《叮叮书店》编写
  20. Android电源管理分析

热门文章

  1. Eureka 2.0 开源流产,真的对你影响很大吗?
  2. linq调用mysql函数_mysql-在LINQ中执行FirstOrDefault的另一种方法
  3. matlab微分方程组边值,matlab求解常微分方程边值问题的方法
  4. pip is configured with locations that require TLS/SSL 解决
  5. PCL谢谢笔记 体素栅格滤波(下采样)
  6. dbface backbone
  7. python list合并拼接
  8. pytorch模型转换
  9. 在windows10上搭建caffe
  10. pytorch 多进程队列