第 6章 数据库保护
? 数据库中的数据由 DBMS统一管理控制,为适
应数据共享的环境,DBMS必须提供数据的安
全性、完整性、并发控制和数据备份恢复等数
据保护能力,以保证数据库中的数据安全可靠
和正确有效。
? 本章从五个方面介绍 DBMS在数据保护方面的措
施,并结合 SQL SERVER进行说明。
第 6章 数据库保护主要内容
? 6.1 数据安全性
? 6.2 数据完整性
? 6.3 并发控制
? 6.4 数据库恢复
? 6.5 数据库复制和镜像
? 6.6 小结
? 6.7 练习
6.1 数据安全性
? 数据库系统的安全性是数据库保护的首要问题。
? 安全性是相对的。
? 加强安全性是应用开发一个重要的方面。
? 安全性与保密性不可分。
? 本节主要讨论安全性的一般概念和方法,介绍
SQL Server数据库系统的安全性措施。
6.1 数据安全性
? 主要内容包括:
? 6.1.1 数据安全性概念
? 6.1.2 数据库安全保密方式
? 6.1.3 计算机系统安全措施设置模型
? 6.1.4 数据库安全措施
? 6.1.5 SQL SERVER中的安全性措施
6.1.1 数据库安全性概念
? 数据库的安全性是 指保护数据库以防止不合法
的使用所造成的数据泄露, 更改或破坏 。 系统
安全保护措施是否有效是数据库系统的主要性
能指标之一 。
? 安全性问题和保密问题密切相关 。 前者主要涉
及数据的存取控制, 修改和传播的技术手段;
后者在很大程度上是法律, 政策, 伦理, 道德
等问题 。 一些国家已成立了专门机构对数据的
安全保密制订了法律道德准则和政策法规 。
6.1.2 数据库安全保密方式
? 数据库安全保密方式有:系统处理的和物理的
两个方面 。
? 所谓物理的是指, 对于强力逼迫透露口令, 在
通讯线路上窃听, 以至盗窃物理存储设备等行
为而采取的将数据编为密码, 加强警卫以识别
用户身份和保护存储设备等措施 。
? 所谓系统处理的是指利用计算机系统方面的技
术手段 。 本节主要讲述系统处理方面的数据库
安全措施 。
6.1.3 计算机安全措施设置模型
? 在一般计算机系统中,安全措施是一级一级层
层设置的。有如下的模型:
6.1.4 数据库安全措施
? 数据库系统的安全措施是建立在计算机系统
基础之上的,通常有五个方面。
? 1,用户标识和鉴定
? 2,存取控制
? 3,定义视图
? 4,审计
? 5,数据加密
6.1.4.1 措施一:用户标识和鉴定
? 用户标识和鉴定 常用的方法有:
( 1)用一个用户名或用户标识号标明用户身份。
( 2)口令 (Password)
( 3)系统提供一个随机数,用户根据预先约定
好的某一过程或者函数进行计算,系统根据
用户计算结果是否正确进一步鉴定用户身份。
? 用户标识和鉴定可重复多次
6.1.4.2 安全措施二:存取控制
? 对于获得上机权的用户还要根据预先定义好的
用户权限进行存取控制,保证用户只能存取他
有权存取的数据。所谓用户权限是指不同的用
户对于不同的数据对象允许执行的操作权限,
它由两部分组成:数据对象和操作类型。
数据对象 操作类型
模式、外模式、内模式 建立、修改、检索
表或者记录、字段 查找、插入、修改、删除
6.1.4.3 安全措施三:视图
? 视图主要用于保证程序的逻辑独立性,也还
可将机密数据隐藏起来,能提供一定程度的
安全保护,但不精细。
? 不同的 DBMS都提供了建立视图的机制。
? 开发数据系统时应尽可能地为不同的用户建
立相应的视图来访问数据。
? 如建立一个, 信息管理系学生视图,
6.1.4.4 安全措施四:审计
? 审计是一种 预防手段,监测可能的不合法访问。
? 审讯追踪技术使用专用文件或数据库自动记录
用户对数据库的所有操作,利用这些信息就能
找出非法存取数据的人。
? 审讯追踪很费时间和空间,一般 DBMS只作为一
种可选的特性,可灵活地打开或关闭审计功能。
? 审计功能一般用于安全性要求较高的部门。
6.1.4.5 安全措施五:数据加密
? 对高度机密性数据, 通过采用数据加密技术, 以密码形
式存储和传输, 这样即使数据被窃取, 看到是无法辨识
的二进制代码 。
? 用户正常检索数据时, 首先要提供密码钥匙, 经系统译
码后, 才能得到可识别的数据 。
? 目前很多数据产品都提供了数据加密例行程序, 可根据
用户要求自动对数据进行加密处理, 另外有一些数据库
产品虽本身未提供加密程序, 但允许用户用其他厂商的
加密程序来加密数据 。
? 解密程序本身一定要具有一定的安全性保护措施。
? 加密与解密很费时,会占用大量系统资源,因此,一般
作为数据库存系统的可选功能,允许用户自由选择。
6.1.5 SQL SERVER中的安全性措施
? SQL SERVER 具有较健全的安全性机制, 设置
了四层安全防线, 两种安全认证模式 。
? 1.四层安全体系结构 ( 操作系统安全防线, 运
行安全防线, 数据库的安全防线, 数据库对象
的安全防线 )
? 2.两种安全认证模式 ( 集成安全模式, 混合 )
? 3.用户与角色管理
? 4.权限管理
6.2 完整性
? 数据库的完整性 是指数据的正确性和相容性 。
DBMS必须提供一种功能来保证数据库中数据
的完整性, 称为完整性检查, 即系统用一定的
机制来检查数据库中的数据是否满足规定的条
件 。
? 完整性 检查很烦琐, 要很细致 。
? 完整性 检查很涉及到很多方面 。
6.2 完整性
? 6.2.1 完整性的概念
? 6.2.2 完整性约束条件
? 6.2.3 完整性控制
? 6.2.4 SQL SERVER中的完整性措施
6.2.1 完整性的概念
? 1,数据的完整性和安全性 。 前者是为了防止数
据库中存在不符合语义的数据, 防止错误信息
的输入和输出, 而后者是保护数据库防止恶意
的破坏和非法的存取, 防止非法用户的不合法
操作, 当然, 完整性和安全性是密切相关的,
特别是从系统实现的方法来看, 某一种机制常
既可用于安全性保护亦可用于完整性保证 。
? 2,完整性包括,完整性约束条件和完整性控制 。
6.2.2 完整性约束条件
? 1.完整性约束条件是完整性 控制的 核心 。
? 2.完整性约束条件 的 对象粒度有列级, 元
组级和关系级 。
? 3.状态可以是静态和动态 。 静态对象的约
束反映数据状态合理性的约束, 动态对象
的约束反映数据状态变迁的约束 。
6.2.2 完整性约束条件分类
粒度
状态
列级 元组级 关系级
静态 列定义
类型, 长度
格式
值域
空值
元组级应满足
的条件 。
实体完整性约束
参照完整性约束
函数依赖约束
统计约束
动态 改变列定义或列
值 。
元组新旧值之
间应懑足的约
束条件 。
关系新旧状态间
应满足的约束 。
6.2.3 完整性控制
? 1.DBMS完整性控制应具备三方面的功能:定义功能,
检查功能, 保证功能 。 定义功能即能提供定义完整
性约束条件机制 。
? 2.一般完整性规则的表示形式,( D,O,A,C,P)
? D代表约束条件的数据对象 。
? O代表触发完整性检查是立即检查还是延迟检查 。
? A代表数据对象必须满足的断言或语义约束, 是规则
主体 。
? C代表选择对 A作用的数据对象值的谓词 。
? P代表违反完整性规则时触发执行的操作过程 。
6.2.4 关于参照完整性的实现机制
? 1,外码是不否可接受空值;
? 2,删除被参照关系元组时考虑 三种处理方法 ;
? 第一种处理方法是级联删除 。
? 第二种处理方法是受限删除 。
? 第三种处理方法是置空值删除 。
? 3,修改被参照关系中的主码时也要 考虑 三种处
理方法, 即 级联 修改, 受限 修改,空值 修改。
6.2.4 SQL SERVER的完整性措施
? 1.实体完整性,主码唯一且不为空 。
? 2.参照完整性:外码要么为空要么为被参照关
系中主码的一个值 。
? 3.用户自定义完整性 ( 约束, 缺省, 规则和触
发器 4种方法实施完整性功能 ) 。
? 4.触发器,触发器是一类靠事务驱动的特殊过
程, 一旦某个用户定义, 任何用户对该数据的
增删改操作均由服务器自动激发相应的触发器,
在核心层进行集中的完整性控制 。 触发器可实
现非常复杂的完整性控制 。
6.2.4 SQL SERVER触发器例
? 例 1,使用带有提醒消息的触发器。当有人试图在 titles 表中添
加或更改数据时,向客户端显示一条消息。消息 50009 是
sysmessages 中的用户定义消息。
? USE pubs
? IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'reminder' AND type = 'TR')
? DROP TRIGGER reminder
? GO
? CREATE TRIGGER reminder
? ON titles
? FOR INSERT,UPDATE
? AS RAISERROR (50009,16,10)
? GO
6.3并发控制
? 一个数据库可以供多个用户同时使用, 共享数
据 。 多个用户程序并发地存取同一数据, 若对
并发操作不加控制就会存储和读取不正确的数
据, 会破坏数据库的完整性 ( 一致性 ), 必须
对数据库进行发控制, 才能确保信息不出错 。
? 并发性能的好坏是衡量数据库性能的重要指标 。
? 本节主要内容包括:并发控制的基本概念, 封
锁, 串行操作和并行操作 。
6.3并发控制
? 6.3.1 事务
? 6.3.2 并发操作与数据不一致性
? 6.3.3 封锁机制
? 6.3.4 串行操作和并行操作
6.3.1 事务
? 1.事务 ( Transaction) 是并发控制的单位,
是一个操作序列 。 这些操作要么都做, 要么都
不做, 是一个不可分割的工作单位 。
? 2.性质:原子性, 一致性, 隔离性, 持续性 。
? 3.事务控制的三条语句
? BEGIN TRANSACTION 表示事务开始
? COMMIT 表示事务执行
? ROLLBACK 表示事务回滚
6.3.2 并发操作与数据不一致性
? 对并发操作不进行合适的控制, 可能会导致
数据库数据的不一致性 。 数据一致性级别有
? 1.丢失修改
? 2.不可重复读
? 3.读脏数据
? 原因:在于破坏的事务的隔离性, 需要进行
正确的调度, 使事务的不受干扰 。
6.3.2 数据一致性级别
? 首先考虑飞机订票系统中的一个活动序列
1.甲售票点读出某航班的机票余额 A,设 A= 16。
2.乙售票点读出同一航班的机票余额 A,也为 16。
3.甲售票点卖出一张机票, 修改余额 A←A -1,所
以 A为 15,把 A写回数据库 。
4.乙售票点也卖出一张机票, 修改余额 A←A -
1,所以 A为 15,把 A写回数据库 。
? 结果, 卖出两张机票而余额只减少
6.3.2 数据不一致性表
T1 T2 T1 T2 T1 T2
① 读
A=16
① 读
A=50读
B=100
求和
=150
① 读 C=100
C=C*2
写回 C
② 读 A=16 ② 读 B=100
B=B*2
写回 B
② 读
C=200
③ A=A-1
写回 A=15

ROLLBACK
C恢复为 100A=A-1
写回 A=15
③ 读
A=50读
B=200
求和
=250
(验算不
对 )
a.丢失修改 (见上例 ) b.不能重复读取 c.读, 脏, 数据
6.3.3 封锁
? 事务对数据库操作之前, 先对数据加锁获得这
个数据对象的一定控制, 其他事务不能更新此
数据直到该事务解锁为止 。
? 封锁的基本类型包括:
? 1.共享性封锁 (share lock,称 S锁, RLOCK)
? 2,排 他 性 封 锁 (exclusion lock, 称 X 锁,
WLOCK)
6.3.3 X锁和 S锁的控制方式
? 封锁类型决定控制方式。 T1已获得对数据对
象的加锁; T2的封锁请求能否被满足。 Y表
示可满足,N表示不能满足。
6.3.3 用封锁机制解决并发事务问题
6.3.3 用封锁机制解决并发事务问题
T1 T2 T1 T2 T1 T2
① WLOCK
A
读 A=16
① RLOCK A
RLOCK B
读 A,B
求 A+B=150
① WLOCK B
读 C=100
C=C*2
写回 C=200
② 请求 WLOCK A
等待
等待
等待
② WLOCK B
等待
等待
等待
② RLOCK C
等待
等待
等待
等待
③ A=A-1
写回 A=15
commit
Unlock A
③ 读 A,B
求和 =150
Unlock A
Unlock B
③ ROLLBACK
Unlock C
C恢复为 100
④ WLOCK A
读 A=15
④ WLOCK B
读 B=100
④ RLOCK C
读 C=200
⑤ A=A-1
写回 A=14
commit
Unlock
⑤ B=B*2
写回 B=200

a,不丢失修改 b,能重复读取 c.不再读, 脏, 数据
6.3.3 活锁与死锁
? 1,活锁:某一事务的请求可能永远得不到,该
事务一直处于等待状态。活锁的解决方法:先
来先服务策略。
? 2,死锁:两个事务处于相互等待状态,永远不
能结束。死锁的解决方法:( 1)将所有数据一
次性加锁 —— 降低了并发度;( 2)预先规定一
个封锁顺序;( 3)诊断法。
6.3.3 封锁粒度
? 1.对象可以是逻辑单元(如属性值、属性值
集合、元组、关系、索引项、整个索引项、
整个数据库),也可是物理单元(如数据页、
索引页、块)。
? 2.封锁粒度越大,封锁的对象越小,并发性
越小,系统开销也越小;相反,封锁粒度越
小,封锁的对象越多,并发性越高,系统开
销也越大。
? 3.粒度的选择,行 锁 。
6.3.4 串行操作和并行操作
? 1.对多个事务处理的两种方法:串行操作和并行操作
串行操作指一个个地处理一组事务, 任意串行操作都
可以保证数据的一致性 。 并行操作指利用分时的方法
同时处理多个事务 。
? 2.调度:把并发操作的若干事务的全部事务按某一顺
序排定的运行次序
? 3.当且仅当某组事务的一定交叉调度产生的结果和这
些事务的某一串行调度的结果相同, 则称这个交叉调
度是可串行化的 。
? 4.只有可串行化的并行操作是正确的, 而不可串行化
的将破坏数据的一致性 ( 可串行化是并行事务正确性
的准则 ) 。
6.3.4 两段锁协议
? 作用:保证可串行性。
? 内容:所有事务应遵守下列规则:在对任何数据进行
读、写操作之前,事务首先要获得该数据的封锁,而
且在释放一个封锁以后,事务不再获得任何其他封锁。
?, 两段, 锁的含义:事务分为两个阶段,第一个阶段
获得封锁,也称扩展阶段;第二阶段是释放封锁,也
称收缩阶段。
? 定理:若所有事务均遵守两段锁协议,则这些事务的
所有并行调度都是可串行化的。
6.3.4 两段锁协议例
? 例,T1的封锁序列;
? Rlock A… Rlock B… Wlock C… Unlock B… Unlock
A… Unlock C;(√)
? T2的封锁序列;
? Rlock A… Unlock A… Rlock B… Wlock C… Unlock
C… Unlock B;(× )
? 两段锁协议是可串行化调度的充分条件而不是必要条
件 。
6.3.4 三级封锁协议
? 三级封锁协议是保证数据一致性的封锁协议 。
? 1.一级封锁协议:事务 T在修改数据 R之前必须先对其
加 X锁, 直到事务结束才释放 。 可防数据丢失 。
? 2.二级封锁协议:一级封锁协议加上事务 T在读取数据
R之前必须先对其加 S锁, 读完后即释放 S锁 。 可防数据
丢失和读脏数据 。
? 3.三级封锁协议:一级封锁协议加上事务 T在读取数据
R之前必须先对其加 S锁, 直到事务结束才释放 S锁 。 可
防数据丢失, 读脏数据及不可重复读 。
6.2.4 SQL SERVER的并发措施
? 1,事务分三种,显式事务、隐性事务或自动提交事务 。
? 2,数据库必须至少包含一个数据文件和一个事务日志
文件。数据和事务日志信息从不混合在同一文件中,
并且每个文件只能由一个数据库使用。
? 3,SQL Server锁可在数据库内的不同粒度级别上应用,
允许一个事务锁定不同类型的资源,可为行、页、键、
键范围、索引、表或数据库加锁。
? 4,SQL Server有多种锁模式,共享锁、更新锁、排它
锁、意向锁、架构锁和大容量更新锁。
6.2.4 SQL SERVER的锁模式
锁模式 描述
共享锁 (S锁 ) 用于不更改或不更新数据的操作 ( 只读操作 ), 如
SELECT 语句 。
更新锁 (U锁 ) 用于可更新的资源中 。 防止当多个会话在读取, 锁定以
及随后可能进行的资源更新时发生常见形式的死锁 。
排它锁 (X锁 ) 用于数据修改操作, 例如 INSERT, UPDATE 或
DELETE。 确保不会同时对同一资源进行多重更新 。
意向锁 用于建立锁的层次结构 。 意向锁的类型为:意向共享 (IS)、
意向排它 (IX) 以及与意向排它共享 (SIX)。
架构锁 在执行依赖于表架构的操作时使用 。 架构锁的类型为:
架构修改 (Sch-M) 和架构稳定性 (Sch-S)。
大容量更新锁 (BU) 向表中大容量复制数据并指定了 TABLOCK 提示时使用 。
6.4数据库恢复
? 数据库的备份和恢复是保护数据库的一项重要
措施, DBMS必须提供功能支持 。
? 备份是在日常数据库维护时经常要做的工作,
它是将当前磁盘上的数据库数据复制到另一个
存储介质上 。
? 恢复是当数据库被破坏时利用备份将数据库还
原到正确的状态 。
? 备份要求制定备份策略 。
6.4数据库恢复
? 6.4.1数据库恢复概念
? 6.4.2故障的种类
? 6.4.3 恢复的原理:转储和恢复
? 6.4.4 数据库转储的分类
? 6.4.5 日志文件
? 6.4.6 检查点
? 6.4.7 恢复的策略
? 6.4.8 SQL Server的备份恢复
6.4.1数据库恢复概念
? 尽管系统中采取了各种保护措施来防止数据库的安全性
和完整性被破坏,保证并行事务的正确执行,但是计算
机系统中硬件的故障、软件的错误、操作员的失误以及
故意的破坏仍是不可避免的,这些故障轻则造成运行事
务非正常地中断,影响数据库中数据的正确性,重则破
坏数据库,使数据库中全部或部分数据丢失,因此数据
库管理系统必须具有把数据库从错误状态恢复到某一已
知的正确状态(亦称为完整状态或一致状态)的功能,
这就是数据库的恢复。
? 恢复子系统是数据库管理系统的一个重要组成部分,而
且还相当庞大,常常占整个系统代码的百分之十以上
(如 IMS,DB2)。故障恢复是否考虑周到和行之有效,
是数据库系统性能的一个重要指标。
6.4.2 故障的种类
? 数据库系统中可能发生各种各样的故障, 大致
可以分以下几类:
? 1.事务内部故障 。 事务内部故障有的是可以通
过事务程序本身发现的, 有的是非预期的, 不
能由事 务程序处理的 。
? 2.系统范围内故障 。
? 3.介质故障 。
? 4.计算机病毒 。
6.4.3 恢复的基本原理:冗余
? 恢复的基本原理十分简单,可以用一个词来概
括,即冗余(备份),这就是说,数据库中任
何一部分的数据 可以根据存储在系统别处的冗
余数据来重建。尽管恢复的基本原理很简单但
实现技术的细节却相当复杂。
? 转储即 DBA定期地将整个数据库复制到磁带或
另一个磁盘上保存起来的过程。转储是十分耗
费时间和资源的,不能频繁进行,DBA应该根
据数据库使用情况确定一个适当的转储周期。
6.4.4 数据库转储的分类
? 1,转储分为静态转储和动态转储 。 静态转储是指转储期
间不允许 ( 或不存在 ) 对数据库进行任何存取, 修改活
动 。 动态转储是指转储期间允许对数据库进行存取或修
改, 即转储和用户事务可以并发执行 。 静态转储简单,
但转储必须等待用户事务结束才能进行, 同样, 新的事
务必须等待转储结束才能执行, 这会降低数据库的可用
性 。 动态转储可克服静态转储的缺点, 但是, 转储结束
时后援副本上的数据并不能保证正确有效 。
? 2,转储又分为 海量转储和增量转储 。 海量转储是指每次
转储全部数据库 。 增量转储则指每次只转储上次转储后
更新过的数据 。
6.4.5 日志文件
? 日志文件是用来记录对数据库每一次更新活动
的文件。在动态转储方式中必须建立日志文件。
后援副本和日志文件综合起来才能有效地恢复
数据库。在静态转储方式中,也可以建立日志
文件,当数据库毁坏后可重新装入后援副本把
数据库恢复到转储结束时刻的正确状态,然后
利用日志文件,把已完成的事务进行重做处理,
对故障发生时尚未完成的 事务进行撤消处理。
这样不必重新运行那些已完成的事务程序就可
把数据库恢复到故障前某一时刻的正确状态。
6.4.5.1 登记日志文件规则
? 事务在运行过程中,系统会把事务开始、事务结束(包括
COMMIT和 ROLLBACK)以及对数据库的插入、删除、
修改等操作作为一个记录( log记录)存放到日志文件中。
每个记录包括:执行操作的事务标识,操作类型,更新前
数据的旧值,或更新后的新值。
? 登记次序规则:严格按并行事务操作执行的时间次序和先
写日志文件。 为什么要“先写日志文件”呢?
? 因为,写一个修改到数据库中和写一个表示这个修改的
log记录到日志文件中是两个不同的操作,有可能在这两
个操作之间发生故障,如果先写了数据库修改,而在运
行记录中没有登记下这个修改,则以后就无法恢复这个修
改,因此为了安全应该先写日志文件。
6.4.5.2 事务恢复步骤
? 1.利用日志文件恢复事务分二步 。
? 第一步, 从头扫描日志文件, 找出哪些事务在故障发生时
已经结束 ( 这些事务有 BEGIN TRANSACTION和 COMMIT记
录 ), 哪 些 事 务 尚 未 结 束 ( 这 些 事 务 只 有 BEGIN
TRANSACTION记录, 无 COMMIT记录 ) 。
? 第二步, 对尚未结束的事务进行撤消 ( 也称 UNDO) 处理,
对已经结束的事务进行重做 ( REDO) 处理 。
? 2.UNDO处理的方法:反向扫描日志文件, 对每个 UNDO事务
的更新操作执行反操作 。 即对已经插入的新记录执行删除
操作, 对已删除的记录重新插入, 对修改的数据恢复旧值
( 用旧值代替新值 ) 。
? 3.REDO处理方法:正向扫描日志文件, 重新执行登记操作 。
6.4.8 SQL Server的备份恢复 1
? 1,SQL Server有三种备份恢复形式,
? ( 1) 完全备份 ( 即海量备份 )
? ( 2) 事务日志备份:备份发生在数据库上的事务 。
? ( 3) 增量备份:只备份最近一次完全备份后变化的数据 。
? 2.SQL Server备份恢复的操作方式分两种:
? ( 1) 静态备份和恢复方式 。 该方式只执行备份和恢复操
作, 不接受任何应用程序的访问请求 。
? ( 2) 动态备份和恢复方式 。 该方式在执行备份和恢复操
作的同时也接受应用程序的访问请求 。
6.4.8 SQL Server的备份恢复 2
? 3.可选择三种 恢复模型,
(1)简单恢复:允许将数据库恢复到最新的备份 。
(2)完全恢复:允许将数据库恢复到故障点状态 。
(3)大容量日志记录恢复:允许大容量日志记录操作 。
? 4,提供了 三种数据备份恢复策略,(1)完全备份策略 ( 2)
在完全备份基础上使用事务日志备份的策略 ( 3) 同时使
用三种备份的策略
? 5,SQL Server的 数据备份方法,可通过三种方式完成:
SQL语句, 系统存储过程和企业管理器 ( 企业管理器 ) 。
6.5 数据库复制和镜像
? 数据库复制和镜像功能是当前分布式数据
库管理系统提供的一种新的功能,可有效
提高数据库的安全性和并发性。
? 数据库复制与备份不同。
? 在分布式数据库应用中,要求能实现不同
场地的数据库复制,使数据保持同步。
? 本节介绍复制和镜像的基本原理。
6.5 数据库复制和镜像
? 6.5.1 数据库复制
? 6.5.2 数据库镜像
? 6.5.3 SQL Server的数据库复制和镜像
6.5.1 数据库复制
? 数据库复制包括三种形式:
? 1,对等复制
? 2,主从复制
? 3,级联复制
6.5.2 数据库镜像
? 1.原理:为避免介质故障影响数据库的可用性,DBMS将
整个主数据库或其中关键的数据复制到另一个磁盘(称
为镜象数据库),当主数据库更新时,DBMS会自动把更
新后的数据复制过去,使镜象数据库和主数据库保持一
致。一旦出现介质故障,由镜象磁盘继续提供数据库可
用性,同时利用镜象磁盘进行数据库恢复,不需要关闭
系统和重装数据库副本。
? 2.优点:提高系统的连续运行性,在没有出现故障时,
数据库镜象还可用于并发操作。
? 3.缺点:频繁复制会降低系统,因此,实际应用中往往
只选择对关键数据镜象(如可以只对日志文件镜象)。
6.5.3 SQL Server复制和镜像
? SQL Server 2000 复制是一组解决方案,可以在企业范
围内复制、分发和可能修改数据。
? 1.三概念:数据库复制使用了发布者( publisher)、分
发者( distributer)和订阅者( subscriber)。
? 2.包含三种服务器:发布服务器、分发服务器和订阅服
务器。
? 3.SQL SERVER的复制有三种类型:基于事务日志的、基
于快照( snapshot)的和基于合并( merge)的。
? 4.镜像是连续备份, 磁盘双工是镜像的一种形式 。 SQL
Server 6.x使用 DISK MIRROR,DISK REMIRROR 和
DISK UNMIRROR 执行 磁盘镜像,但 2000不再支持。
6.6 小结
? 数据库安全性, 完整性, 并发性, 备份恢复以及复制是
数据库保护的重要措施 。
? 数据库安全性确保数据不被非法破坏 。 主要措施有:用
户名与口令, 权限管理, 审计, 加密, 视图等 。
? 数据库完整性确保数据的正确有效 。 包括:实体完整性,
参照完整性, 自定义完整性等 。
? 数据库并发性确保数据在多个用户同时使用时仍是正确
的, 主要采用封锁方法 。
? 数据库备份恢复使数据受到损害能得到有效恢复 。
? 数据库复制可使数据库在多台不同计算机间进行复制 。
? SQL SERVER 2000在安全性, 完整性, 并发性, 备份
恢复以及复制方面提供了强大的支持 。
6.7 练习
? 6.1 理解并解释下列术语:封锁、活锁、死锁、排它锁、
共享锁、事务、可串行化的调度、两段锁协议。
? 6.2 试述实现数据库安全性控制的常用方法和技术。
? 6.3 DBMS的完整性控制机制应具有哪些功能?
? 6.4 RDBMS在实现参照完整性时需要考虑哪些方面?
? 6.5 并发操作可能会产生哪几类数据不一致?
? 6.6 如何用事务和封锁机制保证数据的一致性?
? 6.6 数据库复制和镜象有何作用?
? 6.7 上机实习,深入了解 SQL SERVER 2000在数据库安
全性、完整性、并发性、备份恢复以及复制方面的措施。