南京邮电大学-数据库系统-实验二参考答案.doc
《南京邮电大学-数据库系统-实验二参考答案.doc》由会员分享,可在线阅读,更多相关《南京邮电大学-数据库系统-实验二参考答案.doc(5页珍藏版)》请在冰豆网上搜索。
实验报告
(20/20学年第学期)
课程名称
数 据 库 系 统
实验名称
DBMS的数据库保护
实验时间
年
月
日
指导单位
计算机学院软件工程系
指导教师
张少娴
学生姓名
班级学号
学院(系)
计算机学院
专业
信息安全
实验报告
实验名称
DBMS的数据库保护
指导教师
张少娴
实验类型
上机
实验学时
2*2
实验时间
一、实验目的和要求
(1)巩固事务的概念
(2)正确理解并发及锁机制
(3)熟悉DBMS的安全机制
二、实验环境(实验设备)
硬件:
微机
软件:
ORACLE8i或9i
三、实验原理及内容
1.创建用户U1和U2
实现过程:
以DBA的身份进入SQL*Plussystem/oracle
createuseru1identifiedbyb04041006;
grantconnect,resourcetou1;
createuseru2identifiedbyb04041006;
grantconnect,resourcetou2;
2.对系统中scott用户的员工(emp)表,用授权机制完成以下存取控制
(1)所有用户具有对员工编号empno,姓名enmae和所在部门depno的查询权限
实现过程:
以scott的身份进入SQL*Plus建立视图
connectscott/tiger
实验报告
createviewemp_view(empno,ename,deptno)
asselectempno,ename,deptno
fromemp;
授予权限
grantselectonemp_viewtopublic;
(2)使用户U1拥有对表emp的删除权限和对奖金comm的修改权限,并具备转授这些权限的权力
实现过程:
grantdelete,update(comm)onemptou1withgrantoption;
(3)用户U1授予用户U2对员工表的删除权限
实现过程:
以u1的身份进入SQL*Plus
connectU1/b04041006
grantdeleteonscott.emptou2;
(4)回收用户U1和用户U2对员工表的删除权限
实现过程:
以scott的身份进入SQL*Plus
connectscott/tiger
revokedeleteonempfromu1;
3.为自己的用户授予对scott用户的员工表emp的所有操作权
实现过程:
以scott的身份进入SQL*Plusscott/tiger
grantallprivilegesonemptoU1withgrantoption;
4.观察多事务并发时的数据保护
(1)分别以scott和自己的用户名登录到SQLPLUS,并分别输入命令setautooff
SQL>connectscott/tiger;
SQL>setautooff;
在另一个SQLPLUS窗口
SQL>connectU1/b04041006;
SQL>setautooff;
设7782号员工也是10号部门员工,工资初始值为2450;
(2)scott将emp表中10号部门所有员工的工资(sal)增加200元,此即事务1
SQL>updateemp
setsal=sal+200wheredeptno=10;
此时,查询到的7782号员工的SAL为多少?
(3)在以自己的用户登录的SQLPLUS窗口将emp表中的工号以77开头的员工工资增加300元,此即事务2
SQL>updatescott.emp
setsal=sal+300whereempnolike'77%';
(4)观察发生了什么现象,分析为什么,找出解决的办法
(写出现象,包括具体更新的记录数);
解除事务2挂起的方法是,在scott窗口中键入命令commit或是rollback,结束事务1
(5)scott输入commit命令,观察两个SQL*PLUS界面的信息变化,并用select语句查看emp表中的sal属性值的变化
在scott界面输入commit命令后
记录实验现象,同上)
SQL〉selectsalfromempwheredeptno=10andempnolike‘77%';
U1界面:
SQL〉selectsalfromscott.empwheredeptno=10andempnolike‘77%';
;
SQL〉commit;
两个窗口显示的查询结果是
(请按实际的实验结果记录变化)
(6)重复1-4步,再观察scott输入rollback命令时,两个SQL*PLUS界面的信息及变化,并用select语句察看emp表中的sal属性的值的变化
SCOTT用户事务
UPDATE后,查询的SAL?
自己用户事务发出更新命令,现象?
COMMIT
现象?
查询的SAL?
查询的SAL?
COMMIT
查询的SAL?
查询的SAL?
开始新事务
开始新事务
UPDATE后,查询的SAL?
发出更新命令,现象?
ROLLBACK
现象?
查询的SAL?
查询的SAL?
COMMIT
查询的SAL?
查询的SAL?
实验报告
5