网站大量收购独家精品文档,联系QQ:2885784924

ORACLE-事务和锁.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE-事务和锁

授课教师:姚瑶 职务:讲师 ;第12章 事务和锁;12.1 事务; 事务是一组数据库操作的逻辑工作单元,每个事务都是一个原子单位。在一个事务中可以包含一条或多条DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言)语句,这些语句组成一个逻辑整体。在事务中包含的数据库操作是不可分割的整体,要么在一起被执行,要么回滚到执行事务之前的状态。对事务的操作有两个:提交(COMMIT)和回滚(ROLLBACK)。提交事务时,对数据库所做的修改便永久写入数据库。回滚事务时,对数据库所做的修改全部撤销,数据库恢复到操作前的状态。事务可用于操作数据库的任何场合,包括应用程序、存储过程和触发器等。; 在数据库的应用中,经常需要使用到事务的概念。例如:银行账户之间的汇款转账操作。该操作在数据库中由以下三步完成: ● 源账户减少存储金额,例如减少10000; ● 目标账户增加存储金额,增加10000; ● 在事务日志中记录该事务。 整个交易过程,我们看做一个事务,如果操作失败,那么该事务就会回滚,所有该事务中的操作将撤销,目标账户和源账户上的资金都不会出现变化;如果操作成功,那么将对数据库永久修改,即使以后服务器断电,也不会对该修改结果影响。;12.1.2 事务的特性;12.1.3 事务的类型;控制事务的方式有两种,隐式控制和显示控制。 1. 隐式控制 该类型的事务没有明确的开始和结束标志。它由数据库自动开启,当一个程序正常结束或使用DDL语言时会自动提交。如果从SQL *PLUS非正常退出或发生系统崩溃,那么系统将自动回滚事务。如果设置AUTOCOMMIT为打开状态(默认关闭),则每次执行DML操作都会自动提交。语法格式如下: SET AUTOCOMMIT ON/OFF ● 设置开关为ON,表示自动提交数据更新语句; ● 设置开关为OFF,表示关闭自动提交数据更新语句的功能。;【例12-1】演示如何使用事务保持数据库数据的一致性。 第一步:登录SQL *Plus窗口,称之为窗口1,执行下面的语句。 SQLINSERT INTO Students VALUES(20120810101,测试数据,男,to_date (1990-04-24,YYYY-MM-DD), 汉族,081,08101); 当上述操作提示成功后,查询Students表中的数据,验证数据是否修改成功,结果如图12-1所示。; 从图中可以查找到新输入的一条数据。注意,此时,还没有提交事务。 第二步:以同样的用户再次登录一个新的SQL *Plus,为了加以区分,称新打开的SQL *Plus窗口为窗口2。同样查询Students表中的新插入的姓名为“测试数据”那条记录。查询结果如图12-2所示。; 第四步:当事务提交完成后,在SQL *Plus窗口2中再次查询Students表中更新的数据,结果如图12-3所示。;12.1.4 事务的保存点;【例12-2】演示如何使用在事务中使用保存点。 第一步:向Dept表中插入一条如下所示的语句,此时隐式事务已经打开。 SQLINSERT INTO Dept VALUES(087,保存点测试数据1, 测试); SQLINSERT INTO Dept VALUES(088,外语系 ,张华); 第二步:执行创建保存点的代码,名为First。 SQLSAVEPOINT First; 保存点已创建。 第三步:当保存点创建完成后,继续想表Students中插入另一条数据,代码如下: SQL INSERT INTO Dept VALUES(089,保存点测试数据2, 测试);;第四步:以上三步按顺序创建完成后,查看Dept表数据,如图12-4所示。;第五步:回滚到保存点,执行如下代码,并验证数据。执行过程如图12-5所示。 SQLROLLBACK TO First; 回滚已完成。;12.2 锁; Oracle在两个不同级别上提供读取一致性:语句级读取一致性和事务级读取一致性。 ● 语句级读取一致性:Oracle总是实施语句级读取一致性,保证单个查询所返回的数据与该查询开始时刻保持一致。 ● 事务级读取一致性:事务级读取一致性是指在同一个事务中的所有数据对时间点是一致的。; 排它锁,也称之为写锁。这种模式的锁防止资源的共享,用做数据的修改。假如有事务T给数据A加上该锁,那么其他的事务将不能对A加任何的锁,所以此时只允许T对该数据进行读取和修改,直到事务完成将该类型的锁释放为止。 共享锁也可以称为读锁。该模式锁下的数据只能被读取,不能被修改。如果有事务T给数据A加上共享锁后,那么其他事务不能对其加排他锁,只能加共享锁。加了该锁的数据可以被并发地读取。;DML锁(Da

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档