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.什么是事务,事务的特性是什么? 事务的任务便是使数据 ...
随机推荐
- iBatis.net 循环iterate,没有foreach
3.9.4. Iterate Element This tag will iterate over a collection and repeat the body content for each ...
- ASP.NET MVC移动M站建设-使用51Degree 移动设备的识别
上一篇,介绍了移动M站的建设.说的很简单.觉得好像也没把M站给讲清楚.估计是对移动M站 认识还不够深刻吧.这里,在讲一讲51Degree 这个组件. 51degrees 号称是目前最快.最准确的设备检 ...
- 中文编程语言Z语言开源正式开源!!!
(Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为 ...
- ASP.NET获取客户端、服务器端的信息
ASP.NET获取客户端.服务器端基础信息 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名: ...
- WebForm 分页、组合查询--2017年1月5日
sql = "select * from Commodity"; hs = new Hashtable(); if (txt_name.Text.Trim() != "& ...
- Web干货存档
今天看了某乎,介绍了web一些基本东西,讲的很好,随手留下https://www.zhihu.com/question/22689579 web开发者文档,纯干货 https://develope ...
- Robot Framework用户手册 (版本:3.0)
版权信息:诺基亚网络和解决中心 本翻译尊重原协议,仅用于个人学习使用 1.开始: 1.1 介绍: Robot Framework是一个基于Python的,为终端测试和验收驱动开发(ATDD)的可扩展的 ...
- 《jQuery知识点总结》(一)
write less do more写更少的代码实现更多的功能DOM:document object model (文件对象模型)选择器(选择元素的对象或者节点)id 选择器 $("#id& ...
- nginx配置反向代理解决前后端分离跨域问题
摘自<AngularJS深度剖析与最佳实践>P132 nginx配置文件如下: server { listen ; server_name your.domain.name; locati ...
- too many open files 报错
看到这种某个程序或sock 打开文件数超出了限制,可以在/etc/security/limits.conf 这个文件中设置某个用户的可打开文件数. 例如: root hard nofile 16384 ...