Oracle事务
Oracle事务的ACID特性
| 原子性Atomicity:事务中的所有动作要么都发生,要么都不发生。 |
| 一致性Consistency:事务将数据库从一种状态转变为下一种一致状态。 |
| 隔离性Isolation:一个事务的影响在该事务提交前对其他事务时不可见的。 |
| 持久性Durability:事务一旦提交,其影响就是永久性的。 |
事务控制语句
事务隐式开始
事务必须显示结束(Commit、Rollback)
| Commit 会结束事务,并使得已做的修改持久的保存在数据库中 |
| Rollback 会结束事务,并撤销这个事务所做的修改。撤销动作需要读取回滚段中的信息,并把数据恢复到事务开始之前的状态 |
| Savepoint 创建标记点(marked point),一个事务可以有多个标记点 |
| Rollback To<Savepoint> 把事务回滚到指定的标记点,但是不回滚此标记点之前的工作。 |
| Set transaction 允许设置不同的事务属性,如事务的隔离级别以及事务时只读的还是可读可写的。 |
原子性
| 语句级原子性 SQL> create table t2(cnt int); Table created. SQL> insert into t2 values(0); 1 row created. SQL> create table t(x int check(x>0)); Table created. SQL> create or replace trigger t_trigger CNT SQL> select * from t; no rows selected SQL> insert into t values(1); 1 row created. SQL> insert into t values(-1); SQL> select * from t2; CNT |
| 过程级原子性 Oracle把PL/SQL匿名块也当做是语句 SQL> create or replace procedure p Procedure created. SQL> delete from t; 0 rows deleted. SQL> update t2 set cnt=0; 1 row updated. SQL> commit; Commit complete. SQL> select * from t; no rows selected SQL> select * from t2; CNT SQL> begin SQL> set serveroutput on SQL> select * from t; no rows selected SQL> select * from t2; CNT |
| 事务级原子性 |
| DDL与原子性 |
持久性
| COMMIT的WRITE扩展 COMMIT WRITE WAIT (默认)必须等待redo写到磁盘才返回消息给客户端 COMMIT WRITE NOWAIT 异步提交,redo条目还没写入磁盘就返回消息给客户端 |
| 非分布式PL/SQL代码块中的COMMIT 在后台以异步的方式执行 即commit=commit write nowait |
完整性约束和事务
| Immediate约束 整个SQL语句得到处理后立即检查 SQL> create table t(x int unique); Table created. SQL> insert into t values(1); 1 row created. SQL> insert into t values(2); 1 row created. SQL> commit; Commit complete. SQL> update t set x=x-1; 2 rows updated. |
| Deferrable约束和级联更新 SQL> create table parent Table created. SQL> create table child Table created. SQL> insert into parent values(1); 1 row created. SQL> insert into child values(1); 1 row created. SQL> update parent set pk=2; 由于约束是IMMEDIATE模式,update失败,换为deferred模式 Constraint set. SQL> update parent set pk=2; 1 row updated. SQL> set constraint child_fk_parent immediate; SQL> update child set fk=2; 1 row updated. SQL> set constraint child_fk_parent immediate; Constraint set. SQL> commit; Commit complete. |
不好的事务习惯
| 在循环中提交 1.性能影响
2.Snapshot Too Old |
|||
| 使用自动提交 |
分布式事务
自治事务:允许创建一个事务中的事务,它能独立于其父事务提交或者回滚。
Oracle事务的更多相关文章
- 浅谈Oracle事务【转载竹沥半夏】
浅谈Oracle事务[转载竹沥半夏] 所谓事务,他是一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单元.通俗解释就是事务是把很多事情当成一件事情来完成,也就是大家都在一条船上,要 ...
- Oracle事务之一:锁和隔离
Oracle事务之一:锁和隔离 一. 事务概述 事务管理是数据库处理的核心.数据库既要保证用户能并发地执行事务,还要保证数据库的一致性. 当第一条可执行的SQL开始执行,就隐形地开始了一个事务,直到遇 ...
- oracle事务和锁
数据库事务概括 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数 ...
- oracle事务和锁(转)
If you use a SET TRANSACTION statement, then it must be the first statement in your transaction. How ...
- oracle事务(转)
今天温习oracle事务,记录如下: 事务定义 事务是保持数据的一致性,它由相关的DDL或者DML语句做为载体,这组语句执行的结果要么一起成功,要么一起失败. 我们 ...
- oracle 事务 与 提交
Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...
- Oracle事务隔离级别处理差异
Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...
- Oracle事务与锁
Oracle事务与锁 2017-12-13 目录 1 数据库事务概括 1.1 事务定义 1.2 事务生命周期 1.3 事物的特性 1.4 死锁2 事务相关语句 2.1 事务相关语句概括 2 ...
- 转:oracle 事务
原文地址:http://blog.csdn.net/junmail/article/details/5556561 关于Oracle事务的总结 1.什么是事务,事务的特性是什么? 事务的任务便是使数据 ...
随机推荐
- p/invoke碎片--对类的封送处理
主要是看默认封送处理行为 按类成员的类型是否为“可直接传递到非托管内存”的类型来分类;按照成员中是否有“可直接传递到非托管内存”的类型来讨论. 所有成员都是“可直接传递到非托管内存”的类型 托管代码和 ...
- 【先定一个小目标】在Windows下的安装Elasticsearch
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...
- java 多线程 1 线程 进程
Java多线程(一).多线程的基本概念和使用 2012-09-10 16:06 5108人阅读 评论(0) 收藏 举报 分类: javaSE综合知识点(14) 版权声明:本文为博主原创文章,未经博 ...
- 浅谈Android样式开发之View Animation (视图动画)
引言 一个用户体验良好的App肯定少不了动画效果.Android为我们提供了2种动画框架,分别是视图动画(View Animation)和属性动画(Property Animation).视图动画比较 ...
- Oracle TO_DATE 日期格式
Oracle trunc()函数的用法 --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdat ...
- 【JSP错误总结】无法访问jsp页面
运行环境:window 7 64位 JSP服务器 tomcat 7 现象:无法访问JSP页面,如下图所示:
- java基础知识(十一)java反射机制(上)
java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...
- php.h: No such file or directory
建立一个php的include路径到/usr/include的软连接就好了 ln -s /usr/include/php-zts/* /usr/include/
- Decode Ways
https://leetcode.com/problems/decode-ways/ A message containing letters from A-Z is being encoded to ...
- 触发bfd 的条件
满足下列条件之一就可触发BFC [1]根元素,即HTML元素 [2]float的值不为none [3]overflow的值不为visible [4]display的值为inline-block.tab ...