欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    零点起飞学Oracle之数据库控制.pptx

    • 资源ID:80137659       资源大小:114.62KB        全文页数:23页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    零点起飞学Oracle之数据库控制.pptx

    17.1数据一致性和事务事务在数据库中主要用于保证数据的一致性,防止出现错误数据。事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据均会提交;如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除,从而保证数据一致性。第1页/共23页17.1数据一致性和事务事务是数据库的核心概念之一。事务控制很有必要的。下面以两个银行账号之间转账的例子来理解事务的重要。例如,账号A(假定账号A有足够金额)转出10000元至账号B。对此转账业务可分解为:账号A减去10000元。账号B增加10000元。当然,要求这两项操作或者同时成功(转账成功),或者同时失败(转账失败)。如果只有其中一项操作成功,则不可接受。例如帐号A减去10000元成功,但帐号B增加10000元失败,则帐号A将损失10000元。因此,如果发生一个事务只有部分操作成功时,应该能够回滚事务,就好像什么操作都没有发生一样。类似的场景还有很多,但作为存储基础数据的数据库,必须避免任何犯错的可能,即必须保持数据一致性。第2页/共23页17.2 Oracle中的事务处理在Oracle中,事务生命周期包括,事务开始、事务执行和事务结束。当事务开始时,数据库处于初始状态;然后执行SQL操作语句,如果执行成功,则执行语句提交事务,这时更新数据库并终止事务;如果SQL操作语句执行失败,则取消事务进行的任何操作,数据库恢复到初始状态。本节将讲述Oracle中的事务处理:利用Commit命令提交事务、利用Rollback命令结束事务、事务属性和隔离级别。第3页/共23页17.2.1 利用commit提交事务commit提交事务语句可以结束当前事务,并永久地保存事务中对于数据库的所有改变。而在未提交事务以前,这些改变都是暂时的。一般情况下,其他事务中不能看到本事务中对数据库所做的修改。【示例19-1】利用commit命令界定事务。第4页/共23页17.2.2 利用rollback回滚事务rollback命令可以结束当前事务,并永久地保存事务所做的全部工作,即事务中对于数据库的任何改变都将无效。回滚一般是回到事务开始时的状态,但是可以在事务中设置保存点,然后回滚到事务指定的保存点。在示例17-1中,无论进行了多少次运行,使用rollback命令将忽略所有操作。【示例17-2】利用rollback命令界定事务。第5页/共23页17.2.3 Oracle事务的属性和隔离级别Oracle中,可以设定事务的属性和隔离级别,以保证事务运行在某种特定环境。因为数据库状态总是在不断进行变化的,特定的环境有利于事务在一个稳定的状态下工作。这些属性和隔离级别包括:read only属性、read write属性、serializable隔离级别、read commited隔离级别。第6页/共23页17.2.3 Oracle事务的属性和隔离级别1read only属性默认情况下,在一个事务中可以对数据库进行增、删、改、查等各种数据库操作。但是,有时候事务只是为了数据查询和统计而设计,并不希望修改数据库中的数据。此时,可以将事务设置为read only,即只读事务。设置Oracle事务的属性,应该使用set transaction命令。将事务设置为只读事务的语法如下所示。set transaction read only【示例17-3】利用read only设置只读事务。第7页/共23页17.2.3 Oracle事务的属性和隔离级别2read write属性read write属性可以将事务设置为可读、可写状态。这种状态也是事务的默认状态。在这种状态下,事务可以查询、更新数据库内容。第8页/共23页17.2.3 Oracle事务的属性和隔离级别3serializable隔离级别隔离级别是指当前事务对数据库状态变化的屏蔽程度。具有serializable隔离级别的事务是串行化事务。串行化事务与只读事务具有完全相同的隔离级别,外界其他事务对数据库的修改没有认知度。将事务的隔离级别设置为serializable的语法如下所示。set transaction isolation level serializable【示例17-4】串行化事务屏蔽其他事务对数据库的状态修改。第9页/共23页17.3 事务处理原则事务是构成单一逻辑单元的操作集合,具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durablity)。第10页/共23页17.3.1 事务的原子性Atomicity原子性是是指整个事务所有操作是一个逻辑整体。如同原子一样,不可分割,要么全部执行,要么都不执行。原子性是指事务全有或全无的性质,即事务的所有操作在数据库中要么全部正确反映出来,要么全部不反映。第11页/共23页17.3.2事务的一致性Consistency任何事务的输出都是可预测的,所有的操作要么失败要么成功。所有操作都遵循一致性规则,并确保数据库内的数据完整性。事务结束后(无论是提交还是回滚),数据库中数据的状态必须保持一致性。第12页/共23页17.3.3 事务的隔离性Isolation隔离性是表示多个事务可能同时执行。在运行过程中,这些事务之间必须保持相互独立,不能相互影响。任何在事务之前、之中或者之后执行的操作,相关数据都处于一致的状态,而不是处于部分完成的状态。各个事务对数据库的影响是独立的,那么,一个事务对于其他事务的数据修改,有可能产生以下几种情况。1脏读取(Dirty Read)2不可重读3影像读取第13页/共23页17.3.4 事务的持久性Durablity持久性是指,一旦提交了事务处理,那么事务处理的结果必须进行持久化,如写入磁盘。当重新启动数据库,数据状态必须是事务结束时的状态。第14页/共23页17.4并发与锁定数据库是一个共享资源,许多用户可能同时访问数据库,这时就需要使用事务的隔离性。多个事务并发执行的正确性由数据库管理系统的并发控制机制提供支持,通过对并发事务的合理调度来保证事务的一致性。本节将讲解Oracle中的并发控制机制及实现。第15页/共23页17.4.1 并发与锁定举例同时访问一种资源的用户被视为并发访问资源。如果需要更新表中记录,需要首先获得该记录上的排它锁,从而防止两个进程同时修改同一条记录。例如,两个会话不能同时更新表employeenew中的同一记录。【示例17-1】两个会话不能同时更新表employeenew中的相同记录第16页/共23页17.4.2 死锁死锁是在多用户或多进程情况下,为使用同一个资源而产生的无法解决的争用状态。死锁发生时,两个或更多的事务同时处于等待状态,每个事务都在等待其他事务释放锁,使其可继续执行。本小节将通过一个示例来查看Oracle中对于死锁的处理方式。【示例17-2】Oracle中死锁的处理方式。第17页/共23页17.5悲观锁与乐观锁当用户更新一个特定的字段时,该记录的所有字段都会“刷新”,避免这种情况可以用两种锁定策略:悲观锁定或乐观锁定。悲观锁是指当前进程在每次更新数据时,总是假设有其他进程正在锁定同一资源;而乐观锁定则假定不存在锁定请求资源的其他进程。二者的出发点不同,因此,其处理方式也完全不同。第18页/共23页17.5.1 悲观锁定悲观锁定只用于有状态或有连接环境。在试图更新之前,从数据库查询这一行就锁定这一行。悲观锁定总是假设存在着其他进程的竞争,因此,在更新数据之前,需要首先锁定资源。在Oracle中,锁定表中记录可以利用for update选项。【示例17-3】利用for update选项锁定目标资源。第19页/共23页17.5.2 乐观锁定乐观锁是在把所有锁定都延迟到即将执行更新之前才做。换句话说,我们会修改信息而不需要锁。用户认为数据不会被其他用户修改,因此,会等到最后一刻才去看想法对不对。例如,当用户A获得某条记录,并在前台页面中修改了部分列的值,然后将数据修改更新到数据库。在这个过程中,用户B有可能修改了同一记录。如果用户A的修改无条件地覆盖了用户B的修改,将造成用户B的遗失更新。此时,合理的处理方案应是,数据库向用户A提示更新失败,并告知该记录已被其他用户进行了修改。从数据库的角度来看,最直接的解决方法为,将表的所有列均作为过滤条件。第20页/共23页17.5.2 乐观锁定【示例17-4】利用乐观锁定更新数据。【示例17-5】除了利用所有列作为过滤条件之外,还可以利用version列来实现相同的功能。第21页/共23页17.6本章小结本章简要讲解SQL中数据一致性以及事务的概念、处理原则、Oracle中锁定的概念。本章重点是对数据一致性有清晰的认识,并了解Oracle中的事务处理原则,并发与锁的分析。第22页/共23页感谢您的观看!第23页/共23页

    注意事项

    本文(零点起飞学Oracle之数据库控制.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开