T09 事务处理.ppt_第1页
T09 事务处理.ppt_第2页
T09 事务处理.ppt_第3页
T09 事务处理.ppt_第4页
T09 事务处理.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、事务处理、Page 2、审核、残奥度量光标过程函数触发包、Page 3、本发明的目的、异常处理事务处理的概念提交事务处理回滚事务处理隐式提交事务处理类型事务处理不处理执行PL/SQL程序时发生的异常的语法: Exception when异常1 or异常2 then语句组when异常n-1 or异常n then语句组when others then语句组。 Page 5,异常处理-系统定义的异常,Page 6,自定义异常处理,createorreplaceprocedureinsert _ EMP (empnoinvarchar 2,ename in varchar2 /*用户自定义异常*/be

2、gin if 触发异常*/end if; 插入即时价值(empno、ename、sal ); exceptionwhensal _ out _ of _ rangethendbms _ output.put _ line (员工的工资在范围之外)。 结束; 插入插入(1006、aa、300 ); 结束; 另外,页7,事务概念和事务是数据库管理系统提供的基本功能之一,并且因为事务可以被认为是不可分割的作业单元,所以完成用户的特定作业的一系列操作。 事务由一条或多条逻辑相关的SQL语句组成,这些语句共同执行任务。 Oracle将事务语句作为一个单元进行处理。 使用这些SQL语句对数据库中的数据进行

3、的所有更改可以是“提交”(永久保存对数据库的事务处理的所有更改),也可以是“回退”(还原事务处理的所有更改操作)。 Page 8、事物的性质、事务必须具有以下4个基本性质原子性(atomicity )以维持其完整性。 这意味着对一个事务中所有数据库的操作是不可分割的操作序列。 事务完全执行或者不做任何事务的执行结果保证了数据库的完整性。 也就是说,事务的执行不会损害数据的可隔离性。 执行并发事务可确保与这些事务有相同的结果。 也就是说,如果一个事务处理完成了所有操作,对该数据库的所有更新都将永久反映在数据库中,使得一个事务处理的执行不关心其他事务处理的执行,而是在单用户环境中执行。 即使以后系

4、统发生故障,也必须留下此事务的执行痕迹。Page 9、事务的开始和结束,所有SQL语句的执行都意味着事务的开始,事务结束后,下一个SQL语句将自动开始新事务。 事务开始不需要任何特殊声明,但必须明确声明事务结束。 Page 10,如何终止事务,提交事务-COMMIT成功终止当前事务,并永久化对当前事务中所有数据库的更改。 在当前事务完成之前,其他事务不能查看对此事务的对数资料档案库所做的更改。 COMMIT语句在事务结束时释放事务中的所有行锁和表锁,并清除事务中设置的保留点。 过程自动提交; 将数据库设置为自动提交,回滚事务-ROLLBACK结束当前事务,取消当前事务对数据库的所有工作,使事务

5、对数据库的更改无效。 Page 11、savepoint :回滚通常返回到事务的开始状态。 或者,您可以预先为事务设置保留点,然后将事务回退到指定的保留点,但保留点之前的任务是有效的。保存点a; -注: a是保留点的名称滚动后退到a; 将事务回滚到保留点a时的数据库状态、保留点、Page 12、事务语句的功能组合起来,执行没有“TO”回滚语句的ROLLBACK语句, 撤消对事务中实现事务终止功能的所有数据库所做的更改清除事务中设置的所有保留点执行包含TO保留点子句的ROLLBACK语句以解锁事务。 ROLLBACK语句仅回滚保留点之后的事务的一部分,取消在该保留点之后设置的保留点释放保留点之后

6、应用的表锁和行锁、Page 13和某些SQL命令的提交其中包括连接、离散、quit、退出、创建表和alter表。 drop view,grant,revoke,隐式提交特殊SQL命令,sqldeletefromempwhereempno=7778; 一旦开始事务,SQLcreate table tab(id number(5) ); 提交事务并创建了一个新的事务表。 -事务结束sqldeletefromempwhereempno=7876-新事务、Page 14、事务类型、读取/写入事务是事务的缺省类型。 读/写事务可以执行对数数据的读/写操作。 (读/读/读设置事务读写; set trans

7、action语句必须是第一个语句。 此语句仅影响此事务,而不影响其他事务或用户。 只读事务必须显示以进行声明。 从语句开始到此事务结束,所有查询结果都是事务中在此事务开始之前提交的数据。 只读设置传输; 第15页,SQL集事务只读; -启动只读事务处理集。 SQL选择*从ab; - -查询ab表ab 1112 sqlinsertintoabvalues (3,13 )- -尝试执行写入操作。 ORA-0145失败:无法在只读事务处理中执行插入/删除。 提交; SQL选择*从ab; -在只读事务中重新读取ab表ab-结果保持不变11 12 SQL commit -提交当前事务SQL select

8、 * fromab-显示表ab的变化A B 11 12 4 14的lock 阿尔特尔会话; 阿尔特系统; 默认情况下,DDL语句终止当前只读事务。Page 17、数据库的同时控制、多个用户同时访问数据库称为对数库同时访问。 多个事务访问数据库,特别是对同一数据进行操作的情况下,如果不进行控制,就会发生一些问题,同时操作的两种两个用户同时读取一个数据,相互不影响。 2个写入用户或1个读写、Page 18、数据库的同时操作的主要问题2个写入用户的写入损失的问题读取用户和写入用户的读取一致性的问题读取用户和写入用户读取脏数据的问题同时Oracle会自动锁定一般的写入作业。 执行INSERT、UPDA

9、TE和DELETE语句时,只锁定与写入语句相关的记录,称为行锁定。 对一个事务所施加的锁定在该事务结束时全部解除。 数据库并发控制,Page 19,查询时锁定,首先查询满足条件的记录行,然后锁定。 selectforupdateselect * fromempwhereempno 7800用于更新。 如果在查询语句中指定了FOR UPDATE,则为: 部分不能包含在内。 GROUP BY子句。 集合运算符; 聚合操作(组函数)、手动锁定、Page 20、数据锁定示例、Page 21、Lock table表名in exclusive mode nowait Inmode :指定锁定模式exclu

10、sive :解除锁定share :允许多个事务锁定在同一个表中的共享锁。 这些事务只能同时读取同一个表,而不能同时写入。 无论使用哪种锁,只要一个事务使用LOCK TABLE锁定一个表,其他事务就不能插入、修改或删除该表。 nowait :当表或表的一部分被其他用户阻止时,系统立即返回控制并显示消息。 如果没有此选项,lock语句将等待锁定解除。表锁、Page 22、死锁、Page 23、两事务的第一行语句的执行没有问题,事务a锁定李芝记录时,b事务已经锁定,同样的b也执行第二个写入语句两个事务相互等待的Oracle会自动检测并解除死锁,如果检测到死锁,则会向导致死锁的事务之一发出错误消息,回退事务的最后一个语句,从而导致事务处理死锁从等待死锁状态的另一事务的状态,解决死锁、Page 24、死锁、Page 25、读写冲突,解决读取一致性问题:“读取一致性”是指反复读

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论