oracle事务ppt课件_第1页
oracle事务ppt课件_第2页
oracle事务ppt课件_第3页
oracle事务ppt课件_第4页
oracle事务ppt课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、事务目的经过本章学习,您将可以:运用 DML 语句向表中插入数据更新表中数据从表中删除数据将表中数据和并控制事务事务概念包含一组数据库命令,构成单一逻辑任务单元的操作集合访问并能够更新各种数据项的一个程序执行单元,是不可分割的任务逻辑单元执行并发操作的最小控制单位事务的特性原子性AAtomicity一致性CConsistency隔离性IIsolation)耐久性DDurability原子性、一致性原子性:就是事务应作为一个任务单元,事务处置完成,一切的任务要么都在数据库中保管下来,要么完全回滚,全部不保管一致性:事务完成或者撤销后,都应该处于一致的形状隔离性、永久性隔离性多个事务同时进展,它们

2、之间应该互不干扰.应该防止一个事务处置其他事务也要修正的数据时,不合理的存取和不完好的读取数据永久性事务提交以后,所做的任务就被永久的保管下来事务并发处置睬产生的问题 丧失更新当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丧失更新问题、每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丧失。丧失更新:假设产品的当前库存60,现有两个事务:T1购入400个,T2卖出40顺序事务步骤存储的值1T1读在库数量602T2读在库数量603T1在库数量=60+4004T2在库数量=60-405T1写在库数量460(将被丢失)6T2写在库数量20正常执行过

3、程:假设产品的当前库存60,现有两个事务:T1购入400个,T2卖出40顺序事务步骤存储的值1T1读在库数量602T1在库数量=60+4003T1写在库数量4604T2读在库数量4605T2在库数量=460-406T2写在库数量420脏读 当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。 第二个事务正在读取的数据还没有确认并且能够由更新此行的事务所更改。T2运用T1未提交数据:假设产品的当前库存60,现有两个事务:T1购入400个,在没有提交前吊销了该操作,T2卖出40顺序事务步骤存储的值1T1读在库数量602T1在库数量=60+4003T1写在库数量4604T2读在库数量4

4、60(读未提交数据)5T2在库数量=460-406T1rollback606T2写在库数量420正常执行过程:假设产品的当前库存60,现有两个事务:T1购入400个,在没有提交前吊销了该操作,T2卖出40顺序事务步骤存储的值1T1读在库数量602T1在库数量=60+4003T1写在库数量4604T1RollBack605T2读在库数量606T2在库数量=60-407T2写在库数量20脏读会话AUpdate emp set sal=2000 where ename=SCOTT;会话BSelect sal from emp where ename=scott;数据库事务数据库事务由以下的部分组成:

5、一个或多个DML 语句一个 DDL 语句一个 DCL 语句数据库事务以第一个 DML 语句的执行作为开场以下面的其中之一作为终了:COMMIT 或 ROLLBACK 语句DDL 或 DCL 语句自动提交用户会话正常终了系统异常终了show autocommitset autocommit on;Commit事务提交命令。在Oracle中,在内存中将为每个客户机建立任务区,客户机对数据库进展操作处置的事务都在任务区内完成,只需在输入commit命令后,任务区内的修正内容才写入到数据库上,称为物理写入.这样可以保证在恣意的客户机没有物理提交修正以前,别的客户机读取的后台数据库中的数据是完好的、一致

6、的.COMMIT和ROLLBACK语句的优点运用COMMIT 和 ROLLBACK语句,我们可以: 确保数据完好性。数据改动被提交之前预览。将逻辑上相关的操作分组。当执行了Commit语句之后,会确认事务变化、终了事务、删除保管点、释放锁。当运用commit语句后,其他会话将可以看到事务变化后的新数据ORACLE事务控制-回退段ORACLE为了顺应事务控制设置了回退段这一数据库对象.系统利用回退段来确保诸如读一致性、数据库恢复等管理功能。ORACLE在缺省情况下,读数据不加锁,经过回退段(Rollback Segment)保证用户不读脏数据和可反复读.表空间中的数据按段来组织,数据段、索引段、

7、暂存段和回退段,回退段是一块磁盘存储区域,回退段可以由用户创建,但只能由系统进程运用。ORACLE事务控制-回退段事务的执行过程采用日志和回退段双重记录事务活动:进入回退段,写入回退信息从数据段读入缓冲区,SQL处置记载日志文件提交,写更改结果到磁盘 回退,写回退信息到磁盘 事务第一条更新语句事务终了NYUpdate t set col=0 where col=123;commit;数据库首先把该语句的整个操作包括数据0与123写入日志缓冲区然后把123和一些信息写入回滚段,最后把0修正到数据缓冲区。当发出提交命令时,假设日志缓冲区内容没有写入日志文件那么必需写入日志文件,回滚段把该事务标志为

8、曾经提交,数据缓冲区中的这个事务也标志为已提交假设回退这个事务,那么数据库将回滚段中123读出写回数据缓冲区,这个回退变化也被写入日志文件。自动提交事务当执行DDL语句时会自动提交事务,当执行DCL语句grant revoke当退出SQL*Plus时将某一事务设为只读事务Set transaction read only只读事务,不生成回滚信息,在整个事务中就不能有修正操作留意是针对当前事务,不是另一个事务Set transaction read only | read write经过rollback取消设定。只读事务只读事务只允许执行查询操作,而不允许执行任何DML操作事务。当运用只读事务可

9、以确保获得特定的时间点的数据。例如:假定企业需求在每天16点统计最近24小时的销售信息,而不统计当天16点之后的销售信息,那么用户可以运用只读事务。在设置了只读事务之后,虽然其他事务能够会提交新事务,但只读事务不会获得新的数据变化。例如:会话A:Set transaction read only;会话B:Update emp set sal=3000 where ename=SMITH;会话A:Select sal from emp where ename=SMITH;Set transaction isolation level serializable;顺序事务,在只读事务的根底特性上还可

10、以对数据进展DML操作控制事务保管点 B保管点 ADELETEINSERTUPDATEINSERTCOMMITTime 事务ROLLBACK to SAVEPOINT BROLLBACK to SAVEPOINT AROLLBACKUPDATE.SAVEPOINT update_done;Savepoint created.INSERT.ROLLBACK TO update_done;Rollback complete.回滚到保管点运用 SAVEPOINT SAVEPOINTname语句在当前事务中创建保管点。运用 ROLLBACK TO SAVEPOINTname 语句回滚到创建的保管点。用

11、于取消部分事务自动提交在以下情况中执行:DDL 语句。DCL 语句。不运用 COMMIT 或 ROLLBACK 语句提交或回滚,正常终了会话。会话异常终了或系统异常会导致自动回滚。事务进程提交或回滚前的数据形状改动前的数据形状是可以恢复的其他用户不能看到当前用户所做的改动,直到当前用户终了事务。DML语句所涉及到的行被锁定, 其他用户不能操作。提交后的数据形状数据的改动曾经被保管到数据库中。改动前的数据曾经丧失。一切用户可以看到结果。锁被释放, 其他用户可以操作涉及到的数据。一切保管点被释放。COMMIT;Commit complete.改动数据提交改动DELETE FROM employee

12、sWHERE employee_id = 99999;1 row deleted.INSERT INTO departments VALUES (290, Corporate Tax, NULL, 1700);1 row inserted.提交数据数据回滚后的形状运用 ROLLBACK 语句可使数据变化失效:数据改动被取消。修正前的数据形状可以被恢复。锁被释放。DELETE FROM copy_emp;22 rows deleted.ROLLBACK;Rollback complete.语句级回滚单独 DML 语句执行失败时,只需该语句被回滚。Oracle 效力器自动创建一个隐式的保管点。其他

13、数据改动仍被保管。用户应执行 COMMIT 或 ROLLBACK 语句终了事务。锁Oracle 数据库中,锁是 :并行事务中防止资源竞争。防止用户动作。自动运用最低级别的限制。在事务终了终了前存在。两种类型: 显示和隐式。锁两种方式:独占锁: 屏蔽其他用户。共享锁: 允许其他用户操作。高级别的数据并发性:DML: 表共享,行独占Queries: 不需求加锁DDL: 维护对象定义提交或回滚后锁被释放。排它锁:假设事务T对数据D加X锁,那么其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;普通要求在修正数据前要向该数据加排它锁,所以排它锁又称为写锁。共享锁:假设事务T对数据D加S锁,那

14、么其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;普通要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。加锁方法自动加锁INSERT UPDATE DELETE人工加锁SELECT FOR UPDATE OFLOCK TABLE IN 锁类型MODE根本的锁类型有两种:排它锁Exclusive locks记为X锁共享锁Share locks记为S锁Oracle DML锁共有两个层次,即行级锁和表级锁。 Oracle的TX锁行级锁、事务锁TM锁表级锁Oracle的DML锁数据锁其行级锁虽然只需一种即X锁,但其TM锁表级锁类型共有5种,共享锁S锁、排它锁X锁、行级共享锁RS 锁

15、、行级排它锁RX锁、共享行级排它锁SRX锁,留意:Oracle在行级只提供 X锁,所以与RS锁经过SELECT FOR UPDATE语句获得对应的行级锁也是X锁但是该行数据实践上还没有被修正。当Oracle执行SELECTFOR UPDATE、INSERT、UPDATE、DELETE等DML语句时,系统自动在所要操作的表上恳求表级RS锁SELECTFOR UPDATE或RX锁INSERT、UPDATE、DELETE,当表级锁获得后,系统再自动恳求TX锁,并将实践锁定的数据行的锁标志位置位指向该TX锁;也可以经过LOCK TABLE语句来指定获得某种类型的TM锁。下表总结了Oracle中各SQL

16、语句产生TM锁的情况:Oracle中各SQL语句产生TM锁的情况:自动加锁Oracle自动加锁有4种类型数据锁行级锁数据锁是防止多个事务对同一个表或表中同一行操作时产生的冲突当事务执行以下DML语句,INSERT UPDATE DELETE SELECT FOR UPDATE OF.表级锁当事务获得行锁后,此事务也自动获得表级共享锁,以防止其他事务进展DDL语句同样可以运用LOCK TABLE人工定义表级共享锁Lock table table_name in row exclusive mode行加锁加重效力器的负担Lock table table_name in exclusive mode

17、锁定命令可以一次锁定多个表Lock table tab1,tab2 in exclusive mode锁类型:Row share、row exclusive、share updateShare、share row exclusive、exclusive封锁机制的监控v$lock视图列出当前系统持有的或正在恳求的一切锁的情况,其主要字段阐明如下:v$locked_object视图列出当前系统中哪些对象正被锁定查看锁等待的进程查看当前的用户会话和对应的锁信息Select s.sid,s.serial#,s.username,s.status,l.id1,l.lmode,l.request from

18、 v$session s,v$lock l where s.sid=l.sid and s.username is not null动态性能试图v$session查看呵斥锁等待的锁信息Select l.id1,l.lmode,l.request from v$session s,v$lock l where s.lockwait=l.kaddr删除无效的会话进程Alter system kill session sid,serial#;死锁会话1:SQL SELECT * FROM TEST FOR UPDATE;会话2:SQL SELECT * FROM TEMP FOR UPDATE;再回到会话1:SQL SELECT * FROM TEMP FOR UPDATE;. 处于等待形状再回到会话

温馨提示

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

评论

0/150

提交评论