您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第8章 Oracle_数据库事务
Java程序员Oracle就业课程Lesson8数据库事务主讲:杨昊Q:952063095理解数据库事务概念掌握数据库处理事务的方法目标事务的必要性银行转帐例如,银行转帐问题:假定资金从帐户A转到帐户B,至少需要两步:帐户A的资金减少然后帐户B的资金相应增加帐户A帐户B事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行事务是一个不可分割的工作逻辑单元数据库事务事务必须具备以下属性:原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行一致性(Consistency):当事务完成时,数据必须处于一致状态隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性事务的四个属性--ACID当执行事务操作的时候(DML语句)时,Oracle会在被作用表上面加表锁.以防止其他用户改变表结构,同时会在被作用行上加行锁,以防止其他事务在应用行上执行DML操作.如会话Aupdate会话Balter事务1.事务和锁在Oracle数据库中,为了确保数据库数据的读一致性,不允许其他用户读取脏数据(未提交事务).如Aupdate但没提交Bselect事务1.事务和锁使用commit语句可以提交事务.当执行了commit语句之后,会确认事务变化,结束事务,删除保存点,释放锁.当使用commit语句结束事务之后,其他会话可以看到事务变化后的新数据.当出现一下情况会自动提交事务:1.当执行DDL语句,如create,alter,droptable..2.当执行DCL语句,grant,revoke3.当退出sqlplus事务2.提交事务保存点:保存点是事务回退点,他用于取消部分事务,当结束事务的时候,会自动删除该事务所定义的所有保存点.当执行rollback命令的时候,通过指定保存点可以取消部分事务.设置保存点:savepoint保存点名称;取消部分事务:rollbackto保存点;这样保存点之前的操作提交,之后的操作取消.取消全部事务:rollback;当使用rollback取消事务的时候,会取消所有事务变化,结束事务,删除所有保存点并释放锁.当出现系统灾难或应用程序地址例外的时候,会自动回退其事务变化.事务3.回退事务只读事务:是指允许执行查询操作,而不允许执行任何DML操作的事务,当使用只读事务的时候,可以确保用户取得特定时间点的数据.假定企业需要在每天16时统计最近一天的消费信息,而不统计当天16时之后的销售信息,那么可以使用只读事务.在设置了只读事务之后,尽管其他会话可能会提交新的事务,但只读事务将不会取得新的数据变化.从而确保特定时间点的数据信息.事务4.只读事务使用只读事务:settransactionreadonly;Settransactionisolationlevelreadcommitted注意:当设置只读事务的时候,该语句必须是事务开始的第1条语句.不能在READONLY事务处理中执行插入/删除/更新操作事务4.只读事务只读事务可以使得用户取得特定时间点的数据信息,但当设置了只读事务的时候,会话将不能执行delete/insert/update等dml操作,为了使得用户可以取得特定时间点的数据,并且允许执行dml操作,可以使用顺序事务.事务5.顺序事务以第一个DMLSQL语句执行开始以下面的事件为止—COMMIT或者ROLLBACK语句被执行—一个DDL或者DCL语句执行(自动提交)—用户退出SQL*Plus—系统崩溃数据库事务确保数据一致在做永久改变之前可以预览数据改变组逻辑上的相关操作COMMIT和ROLLBACK语句的优点使用COMMIT和ROLLBACK语句,你可以:提交数据进行改变提交改变数据库中数据的改变被永久化不会丢失,即使系统崩溃。事务结构,旧事务状态被清除,新事务开始。旧事务中的锁定的行被释放,这些行现在可以被其它用户进行操作。在COMMIT之后的数据状态数据的改变被撤回数据先前的状态被还原受影响行上面的锁被释放在Rollback之后数据的状态使用ROLLBACK命令放弃所有未决的改变DELETEFROMcopy_emp;22rowsdeleted.ROLLBACK;Rollbackcomplete.在下列环境下自动提交会发生—DDL语句被执行—DCL语句被执行—从SQL*Plus中的正常退出,没有显式执行COMMIT或者ROLLBACK语句在SQL*Plus非正常结束或者系统失败,自动回滚发生。隐式事务处理事务独立方式读提交readcommitted事务中读取其它对话已提交的数据。连续读serializable事务中读取的数据保持一致性。读提交小结语句描述INSERT增加新的一行到表中UPDATE修改在表中存在的行DELETE从表中删除已经存在的行COMMIT将所有未决的改变变成永久性改变ROLLBACK放弃所有未决的数据改变现在本课结束了,你应该已经掌握了如何使用DML语句和控制事务:
本文标题:第8章 Oracle_数据库事务
链接地址:https://www.777doc.com/doc-14363 .html