您好,欢迎访问三七文档
版权所有©2007,Oracle。保留所有权利。数据库事务处理2版权所有©2007,Oracle。保留所有权利。数据库事务处理学习内容在本课中,您将学习:•定义术语COMMIT、ROLLBACK和SAVEPOINT(与数据库事务处理相关时)•列出COMMIT、ROLLBACK和SAVEPOINT语句的三个优点•说明为什么能够控制事务处理流程对业务来说很重要3版权所有©2007,Oracle。保留所有权利。数据库事务处理学习目的如果银行没有用于记录存款和取款的系统流程,那会怎么样呢?在您需要取款前,如何了解某笔存款是否已经存入您的帐户?可以想象这将引起多大的混乱。幸运的是,银行控制事务处理流程可以确保数据的一致性。在本课中,您将学习如何管理更改数据的流程以及如何提交或取消对数据库的更改。4版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范事务处理事务处理是所有数据库系统的基本概念。事务处理允许用户对数据进行更改,然后决定是保存还是放弃所做的更改。数据库事务处理将多个步骤绑定到一个逻辑工作单元。事务处理由以下语句之一组成:-对数据进行一次一致更改的DML语句。DML语句包括INSERT、UPDATE、DELETE和MERGE-一个DDL语句,例如CREATE、ALTER、DROP、RENAME或TRUNCATE-一个DCL语句,例如GRANT或REVOKE5版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范事务处理模拟银行数据库包含各种客户帐户的余额,以及其它分行的总存款余额。假设某个客户想要从其帐户中取款并进行转帐,将所取资金存入其它分行的另一个客户的帐户中。完成这项业务涉及多个不同的步骤,不是一个简单操作就可实现的。两家分行需要确保所有步骤在一个事务处理中进行或者不执行任何步骤,并且在系统崩溃情况下事务处理不会处于部分完成状态。将取款和存款步骤归入一个事务处理可提供这样的保证。事务处理会完全执行或完全不执行。6版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范事务处理使用以下语句可以控制事务处理:COMMIT:表示一个时间点,在该时间点用户已对希望在逻辑上归入一组的内容进行了更改,并且由于没有产生任何错误,用户准备保存所做更改。发出COMMIT语句后,当前事务处理结束,所有待定更改变为永久性更改。ROLLBACK:使用户放弃对数据库所做的更改。发出ROLLBACK语句后,将放弃所有待定更改。SAVEPOINT:在事务处理中创建标记,该标记将事务处理分成较小的部分。ROLLBACKTOSAVEPOINT:允许用户将当前事务处理回退到指定的保存点。如果产生错误,用户可以发出ROLLBACKTOSAVEPOINT语句,以便仅放弃那些在建立保存点后所做的更改。7版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范事务处理(续)在以下示例中,用户发出了一个UPDATE语句,紧接着又创建了SAVEPOINTone。在INSERT语句和UPDATE语句之后,用户发现最后一个UPDATE语句中未包含WHERE子句。为了解决该错误,用户发出了ROLLBACKTOSAVEPOINTone。现在,数据恢复到它在SAVEPOINTone的状态。UPDATEd_cdsSETcd_编号=96WHERE专辑='GraduationSongbook';SAVEPOINTone;INSERTINTOd_cds(cd_编号,专辑,出品商,年份)VALUES(100,'GoForIt','TheMusicMan',2004));UPDATEd_cdsSETcd_编号=101;ROLLBACKTOSAVEPOINTone;COMMIT;8版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范事务处理何时开始或结束?事务处理从第一个DML(INSERT、UPDATE、DELETE或MERGE)语句开始。出现以下任一情况时事务处理结束:-发出了COMMIT或ROLLBACK语句-发出了DDL(CREATE、ALTER、DROP、RENAME或TRUNCATE)语句-发出了DCL(GRANT或REVOKE)语句-用户退出了iSQL*Plus或SQL*Plus-计算机出现故障或系统崩溃一个事务处理结束后,下一个可执行SQL语句会自动开始下一个事务处理。由于会自动提交DDL语句或DCL语句,因此它们隐式结束事务处理。在提交事务处理之前,在事务处理期间所做的每项数据更改都是临时的。9版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范数据一致性想象一下,您花了几个小时更改雇员数据,没想到其他人正在输入与您所做的更改相冲突的信息。要防止此类中断或冲突并允许多个用户同时访问同一数据库,数据库系统需要应用自动实现的“读一致性”。读一致性可确保所有用户看到的数据视图始终是一致的。读取者看不到正在被更改的数据。保证写入者对数据库的更改是在一致的方式下完成的。一个写入者所做的更改不会中断另一个写入者正在进行的更改,也不会与之相冲突。10版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范读一致性是自动实现的。数据库的部分副本保存在还原段中。当用户A对数据库执行插入、更新或删除操作时,Oracle服务器会在数据发生更改前创建其副本,并将其写入还原(回退)段中。用户B看到的仍是更改开始之前的数据库,他(她)看到的是还原段中数据的“快照”。将更改提交到数据库之前,只有正在修改数据的用户能够看到发生了更改的数据库;其他所有人看到的都是还原段中的快照。这样可以保证数据读取者看到的是一致的数据,而不是当前正在进行更改的数据。11版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范提交DML语句后,任何执行SELECT语句的用户都可以看到对数据库所做的更改。如果回退事务处理,则将撤消这些更改:-将还原段中原始的旧版本数据写回到表中。-所有用户看到的都是事务处理开始之前的数据库。12版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范COMMIT、ROLLBACK和SAVEPOINT虽然使用对OracleApplicationDeveloper的访问权限不能提交演示COMMIT、ROLLBACK和SAVEPOINT的查询,但是了解这些概念仍然很重要。COMMIT和ROLLBACK确保数据一致性,同时可以在更改变为永久性更改前预览数据更改,也可以将相关操作逻辑上归为一组。13版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范COMMIT、ROLLBACK和SAVEPOINT(续)右侧图表中所示的事务处理中,发出了DELETE语句,然后建立了SAVEPOINTA。保存点的作用类似于标记,它允许用户将对数据所做的任何后续更改回退到数据在该点的状态。控制事务处理时间COMMIT事务处理SAVEPOINTASAVEPOINTBDELETEINSERTUPDATEINSERTROLLBACKToSAVEPOINTBROLLBACKToSAVEPOINTAROLLBACK14版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范COMMIT、ROLLBACK和SAVEPOINT(续)在本示例中,在SAVEPOINTA之后,用户发出了一些INSERT和UPDATE语句,然后在SAVEPOINTB建立了另一个回退标记。如果出于某种原因,用户不希望执行这些INSERT和(或)UPDATE语句,用户可以发出ROLLBACKTOSAVEPOINTA语句。这将回退到数据在SAVEPOINTA标记的状态。控制事务处理时间COMMIT事务处理SAVEPOINTASAVEPOINTBDELETEINSERTUPDATEINSERTROLLBACKToSAVEPOINTBROLLBACKToSAVEPOINTAROLLBACK15版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范COMMIT、ROLLBACK和SAVEPOINT(续)添加其他保存点将为回退点创建其他标记。如果用户发出了ROLLBACK,而没有使用ROLLBACKTOSAVEPOINT语句,则整个事务处理结束并且放弃所有待定的数据更改。控制事务处理时间COMMIT事务处理SAVEPOINTASAVEPOINTBDELETEINSERTUPDATEINSERTROLLBACKToSAVEPOINTBROLLBACKToSAVEPOINTAROLLBACK16版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范隐式事务处理在下列情况下将自动提交数据更改:-发出了DDL语句-发出了DCL语句-正常退出了iSQL*Plus或SQL*Plus,而没有显式发出COMMIT或ROLLBACK语句iSQL*Plus异常终止或系统出现故障时也会发生自动回退。这可以防止数据中的错误造成对基表的不必要更改。从而保护了数据的完整性。17版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范锁定阻止多个用户同时更改数据非常重要。Oracle使用锁定阻止访问同一资源的事务处理间的破坏性影响,该资源可以是用户对象(例如表或行),也可以是对于用户不可见的系统对象(例如共享数据结构和数据字典行)。18版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范Oracle数据库如何锁定数据Oracle锁定不需要用户操作,是自动执行的。SQL语句会根据需要执行隐式锁定,具体取决于请求的操作。所有SQL语句(SELECT除外)都会执行隐式锁定。用户也可以手动锁定(称为显式锁定)数据。发出COMMIT或ROLLBACK语句后,将释放受影响行上的锁定。19版权所有©2007,Oracle。保留所有权利。数据库事务处理讲述/示范术语本课中使用的关键术语包括:事务处理提交保存点回退读一致性锁定20版权所有©2007,Oracle。保留所有权利。数据库事务处理小结在本课中,您应该已经学会:•定义术语COMMIT、ROLLBACK和SAVEPOINT(与数据库事务处理相关时)•列出COMMIT、ROLLBACK和SAVEPOINT语句的三个优点•说明为什么能够控制事务处理流程对业务来说很重要21版权所有©2007,Oracle。保留所有权利。数据库事务处理小结练习指南课程大纲中有课程练习指南的链接。
本文标题:数据库事务处理
链接地址:https://www.777doc.com/doc-4988017 .html