




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章业务管理4、交易管理本章介绍了如何定义事务,以及如何通过事务管理业务。本章包含以下内容:u事务处理简介u事务处理管理概览u自治业务概览业务简介交易是包含一或多个SQL叙述句的逻辑单位。一件事是原子单位。事务处理中的所有SQL语句只能全部提交(应用于数据库)或全部回退(从数据库取消)。交易以第一个执行的SQL叙述句开始。如果事务已提交或由于回退而终止,则在终止事务处理时,可以显式使用COMMIT或ROLLBACK语句,也可以执行DDL语句(隐含事务处理终止)。要说明事务的概念,可以想象银行数据库。银行客户从储蓄帐户向当前帐户取款时,交易由以下三个单独操作组成:u储蓄帐户损坏u需求帐户增值在u事务日志中记录事务Oracle必须适合两种情况:如果所有三条SQL语句都以正确的顺序运行,并维护帐户号码,则事务结果可以应用于数据库。但是,如果事务处理因帐户资金不足、帐户或硬件错误而有一条或多条语句未完成,则必须回退整个事务处理,以确保帐户馀额正确。图4-1显示了银行事务处理实例语句执行和事务处理控制成功执行的SQL语句与提交的事务处理不同。成功执行意味着单个语句如下:u解释u创建有效的SQL结构u以原子为单位正常工作。例如,将修改更新为多行的所有行但是,您可以回退事务处理,直到提交包含语句的事务处理,并且可以取消对所有事务处理的修改。一个语句可以成功执行,不能事务(因为事务不是语句,只有开始和结束,只有提交和回退,没有成功和失败的声明)。提交是指用户可见性或隐式请求事务的更改持久性。显式请求是在用户发出COMMIT语句时。隐式请求是指应用程序正常关闭或DDL操作完成。事务处理将保留其包含的SQL语句所做的修改,并在事务处理后对其他用户可见。提交事务处理后,执行的SQL可以查看提交的修改。SET TRANSACTION.您可以使用NAME叙述句在开始交易之前设定交易名称。这使监视长时间运行的事务更加容易,即使是出现问题的分布式事务也是如此。叙述句层次倒回如果SQL语句执行时出错,则将回退此语句产生的所有影响。回滚的结果与从未执行过语句相同。此操作是语句级回退。执行SQL语句时出现的错误导致语句级别回滚。在主键中插入重复数据时,会出现此错误示例。具有死锁(对相同数据的争用)的SQL语句也会导致语句级回退。如果因为尚未执行而在剖析SQL叙述句时发生错误,就不会发生叙述句层次倒回。一个SQL语句的失败只能丢失所需的执行操作本身。当前事务之前的任务不会丢失。如果叙述句是DDL叙述句,即使DDL叙述句有错误,仍会隐含送出尚未取消的工作。可恢复空间分配Oracle提供了在空间分配失败事件中挂起、重新启动和执行大型数据库操作的方法。这使管理员可以执行正确的操作,而不是将错误返回给用户。如果修复了错误的环境,暂停的作业将自动重新启动。只有在客户机针对会话使用ALTER SESSION语句显示启动重新启动功能后,语句才能在重新启动模式下运行。在以下情况下,重新启动的空间分配将暂停:u空间不足达到u最大数据段u超过空间限制对于无法重新启动的空间分配,此情况将导致错误,并且语句将回滚。语句暂停导致事务暂停。因此,在语句暂停和重新启动期间,事务处理的所有资源都将保留。如果出现错误的环境(例如用户干预或其他查询释放了排序空间),暂停的语句将自动恢复执行状态。交易管理概要在Oracle中,第一次执行的SQL语句开始事务处理。执行中的SQL叙述句是产生执行处理呼叫的SQL叙述句,包含DML和DDL叙述句。交易开始时,Oracle会指派可用的undo表格空间给此交易,以储存新交易的重做项目。交易在下列其中一种情况下结束:u用户提交了不带SAVEPOINT子句的COMMIT或ROLLBACK语句u使用者执行DDL叙述句,例如CREATE、DROP、RENAME或ALTER。如果目前的交易包含DML叙述句,Oracle会先确认交易,然后将DDL叙述句作为新的个别叙述句交易执行并确认。(注意:此DDL叙述句错误也是一样,因为Oracle会在执行DDL之前确认交易。)。u一个用户断开与Oracle的连接。当前事务已提交。u用户进程未正常中断。当前事务回滚。一个事务结束后,下一个执行的SQL语句将自动启动后续事务。注意:必须在应用程序中断之前显式提交或回滚事务。确认交易确认交易表示交易中执行的SQL叙述句所产生的修改持续性。在提交一个事务已修改的数据之前,会发生以下操作:U Oracle已生成撤消信息。Undo信息包含事务处理中SQL语句修改的数据的原始值U Oracle在SGA的重做日志高速缓存中创建了重做日志条目。重做日志包含对数据块的修改以及对回退段的修改信息。这些修改会在提交事务之前写入磁盘。u修改已保存到SGA的数据库高速缓存中。这些修改会在提交事务之前写入磁盘。注:已提交的事务处理存储在SGA的数据库高速缓存中的已修改数据不需要后台数据库写入进程(DBWn)立即写入数据文件。这个写在数据库判断写效率最高时写。在提交事务或提交事务后,可能会在一段时间后写入。提交事务后,将发生以下情况:1、确认相关联undo表格空间的内部交易表格记录交易,并指定交易的唯一系统修改编号(SCN),然后储存在表格中。2、日志写入进程(LGWR)将SGA的重做日志高速缓存中的重做日志条目写入重新配置日志文件。还将事务处理的SCN写入重做日志文件。这个原子事件表示事务的完成。3、Oracle解除锁定拥有的行和表4、Oracle标识事务处理完成。注:默认情况下,LGWR将重做信息同步写入联机重做日志文件,事务处理默认情况下等待重做信息写入磁盘,然后将提交返回给客户。但是,低事务处理提交级别的应用程序开发人员可以指定事务处理可以异步写入,而不必等待重做日志写入磁盘。回滚事务处理回退意味着取消在未提交的事务处理中执行SQL所做的数据修改。Oracle使用undo表空间(或回退段)存储原始值。重做日志包含修改的记录。Oracle可以回滚整个未提交的事务。您还可以回退到未提交的事务处理中标识为保存点的尾部。所有类型的回滚都使用相同的过程。u叙述句层次倒回(叙述句执行错误或死结)回退到u保存点(savepoint)u根据用户要求回滚u进程意外中断导致的事务回滚回滚u实例意外停止的暂挂事务u恢复期间回滚未完成的事务回退整个事务处理而不指向任何保存点,将发生以下情况:1、Oracle使用关联的undo表空间撤消所有SQL语句所做的更改2、Oracle解锁所有数据结束办公。交易储存点您可以在交易环境中识别称为储存点的中间旗标。保存点将一个长事务处理分成多个小部分。保存点使您可以在长事务处理中的任意点标识操作。然后,您可以选择回滚事务的当前检查点之前或检查点之后的操作。例如,在执行一系列长而复杂的更新时,可以使用检查点,这样如果出错,就不必重新运行所有语句。在应用程序开发中保存点也很有用。如果进程包含多个函数,则可以在每个函数启动之前设置保存点。这样,如果函数失败,可以将数据返回到函数执行之前的状态,使用不同的参数运行函数,或者执行恢复操作。回退检查点后,Oracle解除回退语句获取的数据锁定。允许执行等待锁定资源的其他事务处理。您还可以运行其他要更新锁定行的事务。交易倒回储存点时:1,Oracle仅回退检查点之后的语句2,Oracle维护所有保存点,但在指定保存点之后对所有检查点所做的更改将丢失。3,Oracle解除此检查点之后所需的所有表或行的锁定,但保留保存点之前所需的所有数据锁定。事务保持活动状态,可以继续运行。会话等待事务时回滚到检查点不会解除行锁定。如果事务未锁定,请在UPDATE和DELETE语句之前运行FOR UPDATEno wait,以防止事务停止。(在指向已回退的保存点之前获取的锁定。在保存点之后执行的语句将完全回退,因此在保存点之后获取的任何锁定都将释放。),以获取详细信息指定交易名称您可以使用简单、容易记住的文本字符串命名事务。名字暗示了事务做什么。事务处理命名代替分布式事务处理的提交注释具有以下优点:u轻松监视长时间运行的事务并解决有问题的分布式事务您可以在应用程序中显示事务名称以及u事务ID。例如,监视系统活动时,数据库管理员可以在企业管理器中显示事务名称。u事务处理名写入事务处理审计重做记录,并且与Oracle9i或更高版本兼容U LogMiner可以使用事务处理名称从重做日志中检索特定事务处理审计记录您可以在u资料说明视观表中使用交易名称来寻找特定交易,例如V$TRANSACTION如何命名事务开始事务之前settransaction.使用name语句命名事务处理。指定事务名称时,请将事务名称和ID关联起来。事务名称不需要保证唯一性。同一用户可以同时具有同名的不同事务。任何名称都可以区分不同的事务。确认交易在以前的版本中,可以使用提交注释关联事务。但是,注释仅在提交事务时与索引相关联。后续发行版将继续支持提交意见。但是,Oracle强烈建议使用事务处理名称。提交说明在命名事务中被忽略。两阶段提交机制在分布式数据库中,Oracle必须在整个网络中协调事务控制并保持数据完整性。即使在网络或系统故障的情况下,也要执行此操作。分布式事务处理是语句中的事务处理,它包含在分布式数据库的两个或多个节点上运行的一个或多个更新数据。步骤2提交可确保参与分布式事务处理的所有数据库服务器的事务处理完全失败或完全成功。两阶段提交机制还可以保护完整性约束隐含的DML操作、远程过程调用和触发器。Oracle的两阶段提交机制对使用分布式事务处理的用户完全透明。实际上,用户甚至不需要知道事务是分布式的。COMMIT语句标识事务的结束,并自动启动两阶段提交机制来提交事务。在数据库应用程序中,不需要对嵌入式分布式事务进行其他编码或复杂的语法定义。后台恢复过程(RECO)会自动解决由于任何原因而引用系统或网络故障导致提交失败的分布式事务。更正错误并重新配置通信后,每个本地Oracle数据库中的RECO进程会自动提交和回退问题进程,以保持相关节点的一致性。Oracle允许每个本地管理员手动提交或回退由于错误而导致问题的分布式事务处理。使用此选项,本地数据库管理员可以释放由长故障引起的所有锁定。如果需要将数据库恢复到以前的时间点,Oracle恢复工具还允许其他站点的数据库管理员将数据库恢复到同一时间点。此操作可确保整个数据库的一致性。自治业务概览自治事务是在一个事务中调用的独立事务。您可以离开呼叫交易的环境,执行SQL作业、送出或取消作业,然后返回呼叫交易的环境继续交易。一旦开始执行,一个自治事务就完全独立于调用它的主要事务。您看不到主事务处理中未提交的变更,锁定和资源不与注解事务处理共享。自治的变化自提交以来,在其他事项上也可以看到。自治事务可以调用其他自治事务。只要有足够的资源,就可以调用任意级别的自主事务。自治事务与其调用事务之间可能存在死锁。Oracle可以检测此死锁并返回错误。应用程序开发人员负责防止死锁的发生。自治事务在实施独立操作(忽略提交或回滚事务的操作,如事务日志和重新计算)时很有用。自治PL/SQL块您可以在PL/SQL区块中呼叫自治交易,并使用AUTONOMOUS_TRANSACTION标记。标记可以直接编译。可以将以下类型的PL/SQL块指定为自治事务处理:u存储过程或函数u本地过程和函数u包u型方法u自治事务处理块的父级self PL/SQL块运行时,调用方的事务处理环境将挂起。此操作确保此块执行的SQL操作没有从属关系,并且不会影响调用方事务环境的状态。当一个自治块执行另一个自治事务
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会所酒水用具管理制度
- 产品周转防护管理制度
- Fone预算管理制度
- 课题预期研究成果范文
- 人员车辆日常管理制度
- 上海企业封闭管理制度
- 仪器内部检验管理制度
- 自驾房车露营地管理制度
- 乙醇安全装卸管理制度
- 临时水电惩处管理制度
- 人工智能中的因果驱动智慧树知到期末考试答案2024年
- 2024年合肥市公安局警务辅助人员招聘笔试参考题库附带答案详解
- 2024网站渗透测试报告
- 2024年中国建筑西南勘察设计研究院有限公司招聘笔试参考题库含答案解析
- DG-TJ08-2433A-2023 外墙保温一体化系统应用技术标准(预制混凝土反打保温外墙)
- 教师法制教育培训课件
- 众包物流模式下的资源整合与分配
- 铁路货运流程课件
- 四川省成都市成华区2023-2024学年七年级上学期期末数学试题(含答案)
- 慢性硬膜下血肿护理要点大揭秘
- 管工基础知识培训课件
评论
0/150
提交评论