




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验13 事务与并发控制姓名:学号:专业:班级:同组人:实验日期:【实验目的与要求】n 提交事务、回滚事务n 发出保存点n 事务锁机制的理解【实验内容与步骤】13.1. 事务处理初步无论何时发出命令,都不会对数据库作直接更改。对于DML语句来讲必须明确地发出提交语句来保存更改;对于DDL,系统会自动提交。实验13-1:事务提交的实现。请按照下列给出的步骤完成实验,理解事务处理过程。(1) 打开一个以上的 SQL plus 的实例,即启动 SQL plus 多个会话,并连接到上次使用的相同用户模式(即以相同用户名和口令登录)。如:开启两个同时处于活动状态的 SQL plus 会话,如图 13-1 所示。会话 1会话 2图 13-1开启多个会话(2) 如图 13-1 中所示,在“dept”表中插入一条新记录。图 13-2插入与查询数据(2) 在第一个会话窗口中发出一个选择语句,检验记录的插入。请给出查询结果:(4)另一个会话窗口对同一 dept 表发出同一查询语句。请给出查询结果:co思考:比较两个查询语句运行结果,思考为什么会有这样的结果。(5)在第一个会话窗口提交修改。(6)完成提交后再在两个窗口各自对dept执行查询操作,比较查询结果,看是否相同?相同。实验13-2:执行下面的步骤理解提交的概念。(1)单击第一个 SQL 实例,如图 所示,插入一项新记录。(2)单击第二个会话,在此插入同一项记录。观察并比较运行结果,特别关注第二个会话的运行结果。 不能运行(3)在第一个会话中提交数据(Commit),观察第二个会话中的反应状态。请给出运行结果:结论:由于记录是插入到第一个会话中的,又试图把相同的记录插入第二个会话中,并且由于 deptno 是主键,因此第二个会话不允许用户插入记录;而且在第一个会话发出提交语句或回滚语句(以后讨论)之前,挂起第二个会话。实验13-3:遵循下面给出的步骤,我们将理解如何保存记录整个过程背后的逻辑。(1)单击任务栏上 SQL 的第一个会话。将雇员的薪水更新为 Rs.4000。请给出运行结果:(2)单击任务栏上的第二个 SQL 会话,试着更新相同记录的值。请给出运行结果:不能运行,没有响应。结论:第二个会话处于挂起状态,因为无论何时更新一个记录,在用户提交或回滚它之前,该记录是锁定的。因此,如果不发出提交或回滚语句,第二个会话一直是锁定的,直到解锁。注意:DDL 语句是自动提交的,所以没有必要使用任何提交语句来保存 DDL 语句所作的更改。13.2. 撤消更改我们已用提交语句保存更改,下面看看如何使用回滚语句来达到我们的目的。回滚语句用于撤消未提交的更改。实验13-4:执行下面给出的步骤,用回滚语句进行操作。(1)如图中所示,在“dept”表中插入一条新记录。(2)发出一个选择语句查看如图 4 中所示的新记录,可以看到新记录。(3)发出一个如图 4 中所示的回滚语句。(4)给出一个选择语句查看记录。请给出运行结果:思考:比较两次查询语句执行的结果,理解回滚操作。注意:提交更改之后,就不能执行回滚语句。13.3. 插入保存点保存点只是在事务中插入的书签。这些书签用于标注事务,并配合回滚语句工作。由于回滚撤消整个任务,与保存点一起使用的回滚可用来撤消事务的某个部分。实验13-5:通过下面的操作步骤了解如何使用保存点:(1)删除 deptno 70 和 80 的记录,发出一个如图 5 中所示的保存点。(2)把 deptno为 40 的位置(Loc)更新为“SAN DIEGO”。(3)给出一个如下所示的命令来只撤消更新的记录。(4)查询dept表中数据,给出查询结果,注意观查表中是否还有deptno=70 和 80的记得和deptno=40的记录是否被更新。请给出运行结果:13.4. 事务处理综合练习(1)实验准备:根据现有表emp生成测试用表(2)按下表所示步骤完成实验,根据运行结果完成表格最后一栏,理解事务处理。打开三个SQL Plus窗口完成实验要点:在第一个SQL Plus窗口中设置 SET TRANSACTION READ ONLY时间会话1会话2会话3给出各会话结果T1set transaction read only;T 2select count(*) from emp_t;select count(*) from emp_t;会话1:14会话2:14T3delete from emp_t where rownum create table a 2 as 3 select 1 x from dual;表已创建。SQL create table b 2 as 3 select 1 x from dual;表已创建。SQL update a set x=x+1;已更新 1 行。(2)在会话2中,执行如下的操作:SQL update b set x=x+1;已更新 1 行。现在在会话2中执行语句:SQL update a set x=x+1;因为第一个会话已经将这个行锁定,所以将会立即阻塞(SQL提示符不能返回)。然而,这并不是死锁,这只是阻塞。现在还没有死锁,因为第一个会话还有机会进行提交或者回滚,这是第二个会话将继续执行。只是处于等待状态。(3)在会话1中,更新B表,这将导致死锁。SQL update b set x=x+1;会话1处于执行状态,但是没有SQL提示符的返回,也没有处理结果(4)在会话2中,可以看到Oracle检测到了死锁。SQL update a set x=x+1;update a set x=x+1 *ERROR 位于第 1 行:ORA-00060: 等待资源时检测到死锁(5)到Oracle的追踪文件中,会发现如下记录信息:D:oracleadminkeymenudump keymen_ora_1712.trcDump file d:oracleadminkeymenudumpkeymen_ora_1712.trcSun Jan 14 12:47:33 2007ORACLE V9.2.0.1.0 - Production vsnsta=0vsnsql=12 vsnxtr=3Windows 2000 Version 5.0 Service Pack 4, CPU type 586Oracle9i Enterprise Edition Release 9.2.0.1.0 - ProductionWith the Partitioning, OLAP and Oracle Data Mining optionsJServer Release 9.2.0.1.0 - ProductionWindows 2000 Version 5.0 Service Pack 4, CPU type 586Instance name: keymenRedo thread mounted by this instance: 1Oracle process number: 15Windows thread id: 1712, image: ORACLE.EXE* 2007-01-14 12:47:33.000* SESSION ID:(12.17) 2007-01-14 12:47:33.000DEADLOCK DETECTEDCurrent SQL statement for this session:update a set x=x+1The following deadlock is not an ORACLE error. It is adeadl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手房买卖协议书
- 企业员工培训:提升工作效率的秘诀
- 人工智能与深度学习在智能家居的融合发展
- 国际视野下的职业发展:大学生海外职业规划研究
- 邮储银行南充市南部县2025秋招笔试数量关系题专练及答案
- 邮储银行扬州市广陵区2025秋招笔试金融学专练及答案
- 专业知识能力培训心得课件
- 邮储银行怀化市溆浦县2025秋招英文面试20问及高分答案
- 人民币防伪知识专题培训课件
- 2025标准的企业租赁合同样本
- 中国邮政储蓄银行2026校园招聘考试参考试题及答案解析
- 网络信息安全培训案例分享课件
- 社区获得肺炎护理
- 高压氧舱培训课件
- 锁骨骨折诊疗指南
- 矩阵论简明教程全课件
- 学校学生欺凌治理委员会成员及工作职责、实施方案范文
- 2025年有限空间作业安全知识考试题库附答案
- 2025年绿化工技师试题及答案
- 日常膝关节护理
- 爱国主义教育融入数学教学中的案例
评论
0/150
提交评论