第六部分 数据库保护技术
(一)、考核内容
(1) 事务机制与数据库安全性
(2) 数据库完整性、数据库恢复、并发控制
(二)、考核要求
(1)理解数据库事务的概念及特性;掌握事务的提交与回退方法。
(2)了解数据库面临的安全威胁;掌数据库安全控制机制与方法。
(3)理解数据库的完整性约束条件。
(4)了解数据库恢复技术。
(5)了解数据库并发控制技术。
(一)选择
1.( )是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
A.程序 B.命令 C.事务 D.文件
2.事务的原子性是指( )。
A.事务中包括的所有操作要么都做,要么都不做
B.事务一旦提交,对数据库的改变是永久的
C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D.事务必须是使数据库从一个一致性状态变到另一个一致性状态
3.事务的一致性是指( )。
A.事务中包括的所有操作要么都做,要么都不做
B.事务一旦提交,对数据为的改变是永久的
C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D.事务必须是使数据库从一个一致性状态变到另一个一致性状态
4.事务的隔离性是指( )。
A.事务中包括的所有操作要么都做,要么都不做
B.事务一旦提交,对数据库的改变是永久的
C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D.事务必须是使数据库从一个一致性状态变到另一个一致性状态
5、事务的永久性(Durabilty)是指( )。
A.事务中包括的所有操作要么都做,要么都不做
B.事务一旦提交,对数据库的改变是永久的
C.一个事力内部的操作及使用的数据对并发的其他事务是隔离的
D.事务必须是使数据库从一个一致性状态变到另一个一致性状态
6.若数据库中只包含成功事务提交的结果,则此数据库就称为处于( )状态。
A.安全 B.一致 C.不安全 D.不一致
7.若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为( )。
A.事务故障 B.系统故障 C.介质故障 D.运行故障
8.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为( )。
A.事务故障 B.系统故障 C.介质故障 D.运行故障
9.( )用来记录对数据库中数据进行的每一次更新操作。
A.后援副本 B.日志文件 C.数据库 D.缓冲区
10.用于数据库恢复的重要文件是( )。
A.数据库文件 B.索引文件 C.日志文件 D.备注文件
11、数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括( )。
A.数据字典、应用程序、审计档案、数据库后备副本
B.数据字典、应用程序、日志文件、审计档案
C.日志文件、数据库后备副本
D.数据字典、应用程序、数据库后备副本
12.下面哪个不是数据库系统必须提供的数据控制功能( )。
A.安全性 B.可移植性 C.完整性 D.并发控制
13.保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。这是指数据的( )。
A.安全性 B.完整性 C.并发控制 D.恢复
14.数据库的( )是指数据的正确性和相容性。
A.安全性 B.完整性 C.并发控制 D.恢复
15.在数据系统中,对存取权限的定义称为( )。
A.命令 B.授权 C.定义 D.审计
16.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的 ( )。
A.可靠性 B.一致性 C.完整性 D.安全性
17.事务是数据库进行的基本工作单位。如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保持了数据库处于( )状态。
A.安全性 B.一致性 C.健壮性 D.可靠性
18.多用户的数据库系统的目标之一是使它的每个用户好像面对着一个单用户的数据库一样使用它,为此数据库系统必须进行( )。
A.安全性控制 B.完整性控制 C.并发控制 D.可靠性控
19.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是( )。
A.该操作不存在问题 B.该操作丢失修改
C.该操作不能重复读 D.该操作读“脏”数据
T1 |
T2 |
①读A=10 ② ③A=A-5写回 ④ |
读A=10
A=A-8写回 |
20.设有两个事务T1、T2,其并发操作如下所示,下列评价正确的是 。
A.该操作不存在问题 B.该操作丢失修改
C.该操作不能重复读 D.该操作读“脏”数据
T1 |
T2 |
①读A=100 A=A*2写回 ② ③ROLLBACK 恢复A=100 |
读A=10
|
21.设有两个事务T1和T2,它们的并发操作如下所示。
T1 |
T2 |
①读X=48 ② ③X=X+10写回X ④ |
读X=48
X=X-2写回X |
对于这个并发操作,下面评价正确的是( )。
A.该操作丢失了修改 B.该操作不存在问题
C.该操作读“脏”数据 D.该操作不能重复读
22.解决并发操作带来的数据不一致性总是普遍采用( )。
A.封锁 B.恢复 C.存取控制 D.协商
23.若事务T对数据R已经加X锁,则其他事务对数据R ( )。
A.可以加S锁不能加X锁 B.不能加S锁可以加X锁
C.可以加S锁也可以加X锁 D.不能加任何锁
24.不允许任何其他事务对这个锁定目标再加任何类型的锁是 。
A.共享锁 B.排它锁 C.共享锁或排它锁 D.以上都不是
25.数据库中的封锁机制是 的主要方法。
A.完整性 B.安全性 C.并发控制 D.恢复
26.关于“死锁”,下列说法中正确的是 。
A.死锁是操作系统中的问题,数据库操作中不存在
B.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库
C.当两个用户竞争相同资源时不会发生死锁
D.只有出现并发操作时,才有可能出现死锁
27.对并发操作若不加以控制,可能会带来 问题。
A.不安全 B.死锁 C.死机 D.不一致
28.数据库系统的并发控制的主要方法是采用 机制。
A.拒绝 B.改为串行 C.锁 D.不加任何控制
29.若数据库中只包含成功事务提交的结果,则此数据库就称为处于 状态。
A.安全 B、.一致 C.不安全 D.不一致
30.若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为 。
A.事务故障 B.系统故障 C.介质故障 D.运行故障
31.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为 。
A.事务故障 B.系统故障 C.介质故障 D.运行故障
32.后援副本的用途是 。
A.安全性保障 B.一致性控制 C.故障后的恢复 D.数据的转储
33.日志文件是用于记录 。
A.程序运行过程 B.数据操作
C.对数据的所有更新操作 D.程序执行的结果
34.并发操作会带来哪些数据不一致性 。
A.丢失修改、读过时数据(不可重复读)、脏读、死锁
B.读过时数据(不可重复读)、脏读、死锁
C.丢失修改、脏读、死锁
D.丢失修改、读过时数据(不可重复读)、脏读
35.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括 。
A.数据字典、应用程序、审计档案、数据库后备副本
B.数据字典、应用程序、日志文件、审计档案
C.日志文件、数据库后备副本
D.数据字典、应用程序、数据库后备副本
36.在数据库的安全性控制中,为了保证用户只能存取他有权存取的数据。在授权的定义中,数据对象的 ,授权子系统就越灵活。
A.范围越小 B.范围越大 C.约束越细致 D.范围越适中
37.数据库恢复通常可采取如下方法:
(1).定期将数据库做成 ① 。
(2).在进行事务处理过程中将数据库更新的全部内容写入 ② 。
(3).在数据库系统运行正确的情况下,系统按一定时间间隙设立 ③ ,新的建立后意味着旧的 ③ 去掉,即在内存缓冲区中的内容还没有写入到磁盘中去的有关状态 ③ 记录都写入到磁盘文件中去,这种文件称为 ③ 。
(4).发生故障时,用当时数据内容和 ④ 的更新前的映像,将文件恢复到最近的 ⑤ 状态。
(5).用(4)不能恢复数据时,可用最新的 ① 和 ④ 的更新映像将文件恢复到最新的 ⑤ 状态。
A.副本文件 B.日志文件 C.检查点文件
D.死锁文件 E.两套文件 F.主文件
G.库文件
(二)概念、术语:
术语:
事务的原子性
事务的隔离性
事务的永久性
完整性约束
触发器
引用完整性约束
实体完整性约束
排他锁
共享锁
简述:
(1)简述事务中的提交和回滚.
(2)数据库的并发操作会带来哪些问题?如何解决?
(3)简述基本的封锁类型及它们的含义。
(4)简述数据库在运行过程中可能产生的故障主要有哪几类?
(5)简述怎样进行系统故障的恢复?
(6)简述怎样进行介质故障的恢复?
(7)简述数据库的并发控制。
第六部分 数据库保护技术
(一)选择
1. C 2. A 3. D 4. C 5. B
6. B 7. B. 8. C 9. B 10. C
11. C 12 . B 13. A 14. B 15. B
16. D 17. B 18. C 19.B 20.D
21.A 22.A 23.D 24.B 25.C
26.D 27.D 28.C 29.B 30.B
31.C 32.C 33.C 34.D 35.C
36.A 37. ①A ②B ③C ④B ⑤C
(二)概念、术语:
术语
事务的原子性:一个事务或者成功地结束,或者什么都不做,即对数据库不产生任何影响。
事务的隔离性:是指一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的两个或多个事务可以同时运行而互不影响。
事务的永久性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,随后的其它操作或故障都不会对其结果有任何影响。
完整性约束:是保护数据库中数据正确性和相容性所做的各种检查或数据应满足的约束条件。
触发器:是一个能因某一个事件触发而由系统自动执行的SQL语句序列。
引用完整性约束:也称为参照完整性约束,是指一个关系的外键值必须与另一个关系的主键值相匹配。
实体完整性约束:也称主键完整性约束,是指每个关系的主键值必须非空且唯一。
排他锁:当某个事务T为修改某个数据项A且不允许其他事务修改该数据项,或不允许其它事务对该数据项加S锁时,该事务可以对A加排他锁。
共享锁:当某个事务T希望阻止其他事务修改正为它读取的某个数据项A时,该事务可以对A加共享锁。
简述
(1)简述事务中的提交和回滚.
参考答案:事务中的提交(COMMIT)是提交事务的所有操作。具体说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。事务中的回滚(ROLLBACK)是数据库滚回到事务开始时的状态。具体地说就是,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤消,使数据库回滚到事务开始时的状态。
(2)数据库的并发操作会带来哪些问题?如何解决?
参考答案:数据库并发操作会带来的数据不一致性问题包括丢失修改、读过时数据和读“脏”数据。对于并发操作带来的问题,可以用并发控制的方法调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。一级锁协议可防止丢失修改;二级锁协议不仅可以防止丢失修改,而且可以防止读“脏”数据。三级锁协议除了防止丢失修改和不读“脏”数据外,还可防止读过时数据。
(3)简述基本的封锁类型及它们的含义。
参考答案:基本的封锁的类型有排它锁(“X”锁)和共享锁(“S”锁)两种。
若事务T对数据A加上X锁,则只允许事务T读取和修改数据A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
若事务T对数据A加上S锁,则其他事务可以再对A加S锁,而不能加X锁,直到T释放A上的锁。
(4)简述数据库在运行过程中可能产生的故障主要有哪几类?
参考答案:数据库在运行过程中可能产生的故障有如下几类:
(1).事务故障
事务在运行过程中由于种种原因,如输入数据的错误,运算溢出,违反了某些完整性限制,某些应用程序的错误,以及并行事务发生死锁等,使事务未能运行到正常终止点之前就被撤消了,这种情况称为“事务故障”。
(2).系统故障
系统故障是指系统在运行过程中,由于某种原因,如OS和DBMS代码错误,操作员操作失误,特定类型的硬件错误(如CPU故障),突然停电等造成系统停止运行,致使事务在执行过程中以非控方式终止。这时,内存中的信息丢失,而存储在外存储上的数据未受影响,这种情况称为“系统故障”。
(3).介质故障
系统在运行过程中,由于某种硬件故障,如磁盘损坏,磁头碰撞,或由于OS的某种潜在的错误,瞬时强磁场干扰,使存储在外存上的数据部分损失或全部损失,称之为“介质故障”。
(5)简述怎样进行系统故障的恢复?
参考答案:当系统故障发生时,造成数据库处于不一致状态的原因有两个,一个是一些未完成事务对数据库的部分更新已写入数据库中,另一个是一些已提交事务对数据库的更新还留在内存缓冲区,没来得及写回数据库。因此,基本的恢复分为以下两步:
(1).根据日志文件建立重做队列和撤消队列
从头扫描日志文件,找出故障前已提交的事务记录,将其事务标识放入重做队列;还要找出故障前尚未完成的事务,将该事务放入撤消队列。
(2).对重做队列中的事务进行重做处理,对撤消队列中的事务进行撤消处理
对于重做处理(REDO),正向扫描日志文件,再根据重做队列,将已完成的事务的所有操作重新执行;对于撤消处理(UNDO),反向扫描日志文件,再根据撤消队列,将未完成的事务的更新操作执行逆操作。
(6)简述怎样进行介质故障的恢复?
参考答案:在发生介质故障时,磁盘上的物理数据库被破坏,这时的恢复操作分为以下几步:
(1).重装转储后援副本,使数据库恢复到转储时的一致状态;
(2).从故障开始,反向阅读日志文件,找出已提交事务标记作重做队列;
(3).从起始点开始正向阅读日志文件,根据重做队列的记录,重做所有已完成的事务,将数据库恢复至故障前某一时刻的一致状态。
(7)简述数据库的并发控制。
参考答案:数据库是一个共享资源,它允许多个用户程序并行地存取数据库中的数据,但是,如果系统对并行执行的操作不加以控制就会存取和存储不正确的数据,破坏数据库的完整性。
并发控制的主要方法是采用封锁机制。封锁是事务T在对某个数据对象操作之前,先向系统发出请求对其加锁。基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁)。所谓X锁是事务T对数据A加上X锁时,只允许事务T读取和修改数据A,其他任何事务都不量能再对A加任何类型的锁,直到T释放A上的锁。所谓S锁,是事务T对数据A加上S锁时,其他事物只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁。