Oracle之事务

一,oracle的事务:

是指对数据操作的一系列动作的统称.即:事务的任务便是使数据库从一种状态变换成为另一种状态,这不同于文件系统,它是数据库所特用的。

事务有四大特性(ACID):

1,原子性(atomicity),

事务中的所有任务要么全部成功,要么全部失败.不能存在部分成功,部分失败.比如银行转账,A向B转200元,A账户余额少200元,B账户余额多200元.不能出现A账户少200元而B账户余额没多出200元.

2,一致性(consistency),

  事务将数据库从一种一致状态转变为下一个一致状态.

比如转账,A账户和B账户都成功的更新了余额,则这个转账操作才是成功完成的,如果任何一个操作发生而另一个没有发生,就会导致数据出现不一致,而使用事务可以确保数据的一致性.

  

3,隔离性(isolation),

  一个事务的影响在该事务提交到数据库前对其他事务都是不可见得.比如转账,当将A账户的余额减少时,由于还没有更新B账户,事务没提交,其他用户在查看A账户时,不会看到A账户余额已经减少,只有在转账成功完成时,才会看到效果,这使得事务好像是串行执行的一样

4,持久性(durability),

  事务一旦提交,其所做的更改就是永久性的.

数据库通过其恢复机制,确保在事务中所作的更改不会丢失.

事务结束的几种情况:

1,遇到commit,rollback语句时,提交或者回滚事务.

2,当用户退出Oracle工具时,

3,当机器失效或者是系统崩溃时.

二,事务的管理

commit,提交自上一次commit或者是rollback一来,所有当前的改变,并且释放所有的锁

rollback,回滚自上一次commit或者是rollback一来,所有当前的改变,并且释放所有的锁

rollback to savepoint ,回滚改变到一个已经保存的保存点,并且释放所有该范围内的锁

savepoint,建立一个保存点,允许完成部分回滚操作

set transaction,允许开始一个只读或者读写回话,建立一个隔离级别,或者将当前的事务赋给一个特定的回滚段

lock table,允许使用特定的模式锁定整个数据库表,这将覆盖默认行级别的锁定,

使用commit提交事务:

时间: 2024-08-01 21:43:07

Oracle之事务的相关文章

Oracle core05_事务和一致性

事务和一致性 oracle的redo和undo机制保证了数据库的ACID特性,以及高性能和可恢复特性. redo的数据是记录着数据块变更的顺序的正向数据流, commit时,保证redo同步持久化,保证高性能. 恢复的时候,顺序的应用日志. redo的机制相对比较简单. undo记录着数据块的前映像. 保证事务的特性,数据只有在commit后才可见. 提供读一致性,保证读写互不阻塞. 一方面,在undo segment header中transaction table中记录着事务,并在undo的

oracle数据库事务相关【weber出品必属精品】

事务的概念:事务:一个事务由一组构成一个逻辑操作的DML语句组成 事务有开始有结束,事务以DML语句开始,以Conmmit和Rollback结束.以下情况会使得事务结束: 1. 执行COMMIT 或者 ROLLBACK 语句 2. 执行DDL或者 DCL语句 3. 用户退出 4. 系统崩溃 一个事务可以包含下列语句: 1. 对数据做出一致性修改的DML语句 2. 一个 DDL 语句 3. 一个 DCL语句 DDL与和DCL语句执行的过程: 1. 首先发出COMMIT; 2. 执行对数据字典的DM

Oracle 基于事务的临时表在11g和12C下的区别

Oracle 基于事务的临时表在11g和12C下的区别下,可以看到收集临时表的统计信息后,前者记录被清空,后者没有,这是个很重要的区别.在公司环境上用的是12C,在现场用的是11g,使用临时表会造成时快时慢,之前我有帖子http://blog.csdn.net/stevendbaguo/article/details/39964807,用了hint之后,也不是特别好,于是直接采集,结果临时表被清空.解决的方法是:建基于session的临时表,且每次用完之后要truncate,要不然,会有问题.

oracle ITL(事务槽)的理解

一.ITL描述: ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block header),itl由xid,uba,flag,lck和scn/fsc组成,用来记录该块所有发生的事务,一个itl可以看作是一条事务记录.当然,如果这个事务已经提交,那么这个itl的位置就可以被反复使用了,因为itl类似记录,所以,有的时候也叫itl槽位.如果一个事务一直没有提交,那么,这个事务将一直占用一个itl槽位,itl里面记录了事务信息,回

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

今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数据,然后再更新表B的两个字段,更新的两个字段是特定值.并且插入和更新在一个事务中. 有个需求需要在表A添加一个Insert的行级触发器,在触发器里,插入表A一行记录后去表B查看更新的两个字段是否满足特定条件, 如果表B的两个字段同时等于特定值,则把表A和表B的数据整合下放到表C.触发器的初衷就是这样

查看oracle的事务级别

[email protected] SQL>delete from scott.emp; 14 rows deleted. [email protected] SQL>SELECT s.sid, s.serial#,   2     CASE BITAND(t.flag, POWER(2, 28))   3        WHEN 0 THEN 'READ COMMITTED'   4        ELSE 'SERIALIZABLE'   5     END AS isolation_le

浅述Oracle分布式事务概念

着系统的复杂性不断增加,我们所面对的分布式系统渐渐增加.分布式文件系统.分布式消息队列系统等等层出不穷,在一些行业特别是互联网行业应用广泛.分布式数据库也是目前使用比较常用的分布式系统之一. 简单来说,分布式数据库就是通过多个相互连接的数据库节点(注意不是Instance),来支持前端系统数据访问需要的数据库组织结构.各个节点之间相互独立.自我管理(site autonomy).分布式数据库系统追求的主要目标包括:可用性(availability).准确性(accuray).一致性(concur

Oracle - 数据更新 - 事务

/* 事务 事务是为了控制数据异步访问所使用的一种技术 就类似于java中的锁机制 synchronized,只不过功能更加强大 事务不能进行嵌套,当我们开启一个事务的之后作的每一次dml语句都属于这个事务 在oracle里面 事务的开启 执行一个dml语句就会开启一个事务 他会把当前dml语句操作的数据进行锁定,别人在操作这些数据的时候就需要等锁 事务的结束 当事务结束的时候会释放掉当前事务所拥有的锁 显示的事务结束 rollback:事务的回滚 回到开启事务的之前的状态 commit:事务的

oracle分布式事务总结-转载

基本概念 Local Coordinator:在分布事务中,必须参考其它节点上的数据才能完成自己这部分操作的站点. Global Coordinator:分布事务的发起者,负责协调这个分布事务. Commit Point Site:在分布事务中,首先执行COMMIT或ROLLBACK操作的站点.一般情况下,应该把存储关键数据的站点作为Commit Point Site.因为Commit Point Site和其它站点不一样,从来不会进入prepared状态,所以不会存在IN-DOUBT事务. 可