tnblog
首页
视频
资源
登录

Oracle 事务相关

3764人阅读 2019/12/27 14:25 总访问:38553 评论:0 收藏:0 手机
分类: Oracle

1、Oracle事务处理

事务用于确保数据库数据的一致性,事务处理和锁是两个紧密联系的概念。

事务就是一个单元的工作,包括一系列的操作,这些操作要么全部提交成功,要么全部提交失败。

事务确保多个数据的操作作为一个事务单元来处理。

举个例子:

假定某一客户需要将自己银行卡里的钱全部转移给另一客户。

这里要执行两个操作,分别是:

减少这一客户银行卡里的钱,增加另一客户银行卡里的钱。

为了确保数据库一致,这两个操作必须全部成功,或者全部取消。

Oracle通过事务机制管理多个事务,确保事务的一致性。

锁定机制可以有效防止其他用户的修改另外一个还没有完成的事务中的数据。


2、事务处理技术

事务用于确保数据库的一致性,它由一组相关的DML语句组成。

注意:在Oracle中没有“开始事务处理”语句。

用户不能显示的开始一个事务处理。事务处理会隐式的开始于第一条修改数据的语句,或者在一些要求事务处理的场合。

数据库事务主要由INSERT、UPDATE、DELETE、SELECT......FOR UPDATE等语句组成。

当应用程序执行第一条SQL语句时,事务就开始了,当执行COMMIT或ROLLBACK语句时结束。

Oracle中对事务处理的控制语句主要包括COMMIT、ROLLBACK、SAVEPOINT、ROLLBACK TO SAVEPOINT、

SET TRANSACTION和SET CONSTRAINTS


3、提交事务

在事务处理中,用户只需用使用COMMIT语句就可以结束事务。

当执行COOMIT语句之后,系统确认事务变化、结束事务、删除保存点、释放锁,其他的会话就可以查看到事务变化后的数据了。

例子:

SQL>UPDATE scott.emp SET SAL=2000 WHERE ENAME='MARY';

SQL>COMMIT;

SQL>SELECT SAL FROM scott.emp WHERE ENAME='MARY';

结果;

SAL

----------------

2000


4、回退事务

回退就是可以撤销已经进行的操作。

当应用中出现错误,或者说运行程序的终端时,用户决定不保存对数据所进行的修改时,就需要进行回滚操作。

回滚事务使用ROLLBACK命令。

例子:

SQL>UPDATE scott.emp SET SAL=3000 WHERE ENAME='MARY';

SQL>COMMIT;

SQL>SELECT SAL FROM scott.emp WHERE ENAME='MARY';

结果;

SAL

----------------

2000


设置保存点:


保存点顾名思义就是一个保存的位置。

作用:可以让用户将单独的大规模事务处理分割成一系列较小的部分,用户可以将特定的语句组织到一起,将其作为单独的语句进行回滚。

事务处理中,其他以前的语句不会受到影响。

设置保存点是使用SQL命名SAVEPOINT来完成的,也可使用包DBMS_TRANSCTION的过程SAVEPOINT来设置保存点。

例子:

SQL>SAVEPOINT A;

或者

SQL>EXEC DBMS_TRANSCTION.SAVEPOINT('A');


取消部分事务


为了取消部分的事务,用户可以退回到保存点。回退到保存点既可以使用ROLLBACK命名,也可以适用包DBMS_TRANSCTION的过程

ROLLBACK_SAVEPOINT.

例子:

SQL>ROLLBACK TO A;

或者

SQL>EXEC DBMS_TRANSCTION.ROLLBACK_SAVEPOINT('A');


取消全部事务


ROLLBACK命名可以取消全部事务。

例子:

SQL>ROLLBACK;

或者

SQL>EXEC DBMS_TRANSCTION.ROLLBACK('A');

注意:当时用ROLLBACK命令取消全部的事务时,会同时取消所有的事务变化、结束事务、删除所有保存点并且释放锁。



5、事务的ACID属性

数据库的事务具有ACID属性。ACID是指原子性(actomicity)、一致性(consistency)、隔离性(isolation)、持久性(durabilily)

这一特性描述了事务处理的规则。


原子性

这一特性表示事务处理要么全部进行,要么全部撤销。

一个事务的任何更新要在系统上完全完成,如果由于某种原因出错,导致事务不能完成它的全部事务,系统将返回到事务开始前的状态。


一致性

这一特性表示事务处理要将数据库从一种状态转变为另一种状态。

事务一致保证系统的任何事务最后都处于有效状态。

事务成功完成,系统中所有变化将正确应用,系统处于有效状态。

事务出错,系统中所有变化将自动回滚,系统返回原始状态。

由于事务开始时系统处于一致状态,所以事务出错后,自动回滚后仍然处于一致状态。


隔离性

这一特性表示在事务处理提交之前,事务处理的效果不能由系统中其他事务处理看到。

在隔离状态下执行事务,如果有两个事务,在同一时间内·运行,执行相同的功能,事务的隔离性将确保每一事务在系统中的唯一性。


持久性

这一特性表示一旦提交事务处理,它就永久生效。意味着一旦事务执行成功,在系统中·锁产生的所有变化将是永久的。



评价

Oracle数据库中没有scott用户

使用SYS用户登录conn sys/密码 as sysdba(默认密码123456)然后找到oracle安装目录下scott.sql的这个文件然后执行命令:@+...

Oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

Oracle存储过程

一个简单的带输入输出参数的存储过程(求两数之和)createorreplaceprocedureproc_sum(p1int,p2int,presultoutint) as be...

Oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

Oracle编程基础

简单介绍一下oracle中if,else,case when,循环,异常处理等用法if,elsedeclareptypeint:=2; begin ifptype=1then dbms_out...

Oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...

Oracle程序包

当项目越来越大的时候,数据库中的函数,存储过程等越来越多。为了方便管理,Oracle建议使用程序包的管理机制。实现业务模...

Oracle中MERGE INTO,for,start with,decode用法

1. MERGEINTO:MERGEINTOT_TD_BU_MODIFY_NOTICE_LSA USING( selectMODIFY_NOTICE_ID,REJECT_REASONfromT_TD_BU_MODIFY_NOT...

Oracle+命令

oracle常用命令SQLPLUS进入oracle撤销命令revoke 权限 form 用户名show user查询当前登录账户锁定账户命令Alter user 用户...

Oracle 11g数据库的安装+空间管理

如果你在圣诞节没有收到礼物,请不要伤心也不要难过,因为接下来还有元旦,春节,还有情人节,还有元宵节......慢慢的你就...

Oracle--常用命令、条件语句、循环语句、SQL函数

Oracle常用命令1、登录数据库默认账户 默认密码 拥有权限sys 123456 as sysdba 拥有数据库的最高权限system ...

Oracle数据库的基本操作

Oracle数据库Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域...

Oracle数据库的认识和基本使用

推荐一个Oracle数据库的一个学习网站:http://www.oraclejsq.com/article/010100110.html一、对Oracle数据库的认识1、数据...

Oracle操作

Oracle数据库操作1、创建数据库create database databasename2、删除数据库drop database dbname3、备份数据库完全备份exp ...

Oracle 安装和常用的命令

Oracle 安装如下:https://jingyan.baidu.com/article/f79b7cb32095f79144023eae.html默认账户Sys 123456 as sysdba 数据...

Oracle数据库的同义词与视图

同义词概念:同义词顾名思义,是数据库方案对象的一个别名。这里的数据库方案对象指表、视图、序列、存储过程、包等。创建...
一电照耀十四洲,电来!
排名
53
文章
11
粉丝
5
评论
9
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
要保持希望在每天清晨太阳升起。