网络数据库的完整性,是指保证网络数据库网络数据的正确性和一致性。它反映了现实中实体的本来面貌。网络数据库系统要提供保护网络数据完整性的功能。系统用一定的机制检查网络数据库中的网络数据是否满足完整性约束条件。
(一)完整性约束
1.完整性约束条件
完整性约束条件是作为模式的一部分,对表的列定义的一些规则的说明性方法。具有定义网络数据完整性约束条件功能和检查网络数据完整性约束条件方法的网络数据库系统可实现对网络数据库完整性的约束。
完整性约束有数值类型与值域的完整性约束、关键字的约束、网络数据联系(结构)的约束等。这些约束都是在稳定状态下必须满足的条件,叫静态约束。相应地,还有动态约束,指网络数据库中的网络数据从一种状态变为另一种状态时,新旧数值之间的约束,如更新人的年龄时新值不能小于旧值等。
2.完整性约束的优点
利用完整性约束实施网络数据完整性规则具有以下优点。
(1)定义或更改表时,不需要程序设计便可以很容易地编写程序并可消除程序性错误,其功能由Oracle控制。
(2)对表所定义的完整性约束被存储在网络数据字典中,所以由任何应用进入的网络数据都必须遵守与表相关联的完整性约束。
(3)具有最大的开发能力。当由完整性约束所实施的事务规则改变时,管理员只需改变完整性约束的定义,所有应用自动地遵守所修改的约束。
(4)完整性约束存储在网络数据字典中,网络数据库应用可利用这些信息,在SOL语句执行之前或Oracle检查之前,就可立即反馈信息。
(5)完整性约束说明的语义被清楚地定义,对于每一指定的说明规则可实现性能优化。
(6)完整性约束可临时地使其不可用,使之在装入大量网络数据时避免约束检索的开销。当网络数据库装入完成时,完整性约束可容易地使其可用,任何破坏完整性约束的新记录都可在另外的表中列出。
(二)网络数据库触发器
1.触发器的定义
网络数据库触发器是使用非说明方法实施的网络数据单元操作过程。利用网络数据库触发器可定义和实施任何类型的完整性规则。
Oracle允许定义过程,当对相关的表进行insert、update或delete语句操作时,这些过程被隐式地执行,这些过程就称为网络数据库触发器。触发器类似于存储过程,可包含SQL语句和PL/SQL语句,并可调用其他的存储过程。过程与触发器的差别在于其调用方法:过程由用户或应用显示地执行;而触发器是为一个激发语句(insert、update、delete)发出而由Oracle隐式地触发。一个网络数据库应用可隐式地触发存储在网络数据库中的多个触发器。
2.触发器的组成
一个触发器由三部分组成:触发事件或语句、触发限制和触发器动作。触发事件或语句,是指引起触发器激活的SQL语句,可为对一个指定表的insert、update或delete语句。触发限制,是指定一个布尔表达式,当触发器激活时该布尔表达式必须为真。触发器作为过程,是PL/SQL块,当触发语句发出、触发限制计算为真时该过程被执行。
3.触发器的功能
在许多情况下,触发器补充了Oracle的标准功能,以提供高度专用的网络数据库管理系统。一般触发器用于实现以下目的:
(1)自动地生成导出列值;
(2)实施复杂的安全审核;
(3)在分布式网络数据库中实施跨节点的完整性应用;
(4)实施复杂的事务规则;
(5)提供透明的事件记录;
(6)提供高级的审计;
(7)收集表存取的统计信息。
(三)网络数据库的并发控制
网络数据库是一种共享资源库,可为多个应用程序所共享。在许多情况下,由于应用程序涉及的网络数据量可能很大,常常会涉及输入/输出的交换。为了有效地利用网络数据库资源,可能多个程序或一个程序的多个进程并行地运行,这就是网络数据库的并发操作。
在多用户网络数据库环境中,多个用户程序可并行地存取网络数据。并发控制,是指在多用户的环境下,对网络数据库的并行操作进行规范的机制,其目的是避免网络数据的丢失修改、无效网络数据的读出与不可重复读网络数据等,从而保证网络数据的正确性与一致性。并发控制在多用户的模式下是十分重要的,但这一点经常为一些网络数据库应用人员所忽视,而且因为并发控制的层次和类型非常丰富和复杂,有时使人难以抉择,不清楚如何衡量并发控制的原则和途径。
1.一致性和实时性
一致性的网络数据库是指并发网络数据处理响应过程已完成的网络数据库。例如,一个会计网络数据库,在它的借方记录与相应的贷方记录相匹配的情况下,它就是网络数据一致的。
一个实时的网络数据库就是指所有的事务全部执行完毕才响应。如果一个正在运行网络数据库管理的系统出现了故障而不能继续进行网络数据处理,原来事务的处理结果还存储在缓存中而没有写入磁盘文件,当系统重新启动时,系统网络数据就是非实时性的。网络数据库日志用来在故障发生后恢复网络数据库时保证网络数据库的一致性和实时性。
2.网络数据的不一致现象
事务并发控制不当,可能会产生丢失修改、读无效网络数据、不可重复读等网络数据不一致现象。
(1)丢失修改(www.xing528.com)
丢失网络数据,是指一个事务的修改覆盖了另一个事务的修改,使前一个修改丢失。比如,两个事务T和T’读入同一网络数据,T提交的结果破坏了T’提交的网络数据,使T’对网络数据库的修改丢失,造成网络数据库中的网络数据错误。
(2)读无效网络数据
无效网络数据的读出是指不正确网络数据的读出。比如,事务T将某一值修改,然后事务T’读该值,此后T出于某种原因撤销对该值的修改,这样就造成T’读取的网络数据是无效的。
(3)不可重复读
在一个事务范围内,两个相同的查询却返回了不同网络数据,这是由查询时系统中其他事务修改的提交而引起的。比如,事务T读取了某一网络数据,事务T’读取并修改了该网络数据,T为了对读取值进行检验而再次读取该网络数据,便得到不同的结果。
但在应用中为了提高并发度,可以容忍一些不一致现象。例如,大多数业务经适当调整后可以容忍不可重复读。当今流行的关系网络数据库系统(如Oracle、SQL Server等)是通过事务隔离与封锁机制来定义并发控制所要达到的目标的,根据其提供的协议,可以得到几乎任何类型的合理的并发控制方式。
并发控制网络数据库中的网络数据资源必须具有共享属性。为了充分利用网络数据库资源,应允许多个用户并行操作网络数据库。网络数据库必须能对这种并行操作进行控制,以保证网络数据在不同的用户使用时的一致性。
3.并发控制的实现
并发控制的实现途径有多种,如果DBMS支持,当然最好是运用其自身的并发控制能力。如果系统不能提供这样的功能,可以借助开发工具的支持,还可以考虑调整网络数据库应用程序,有的时候可以通过调整工作模式来避开这种会影响效率的并发操作。
并发控制能力是指多用户在同一时间对相同网络数据同时访问的能力。一般的关系型网络数据库都具有并发控制能力,但是这种并发功能也会对网络数据的一致性带来危险。试想,若有两个用户都试图访问某个银行用户的记录,并同时要求修改该用户的存款余额时,情况将会怎样呢?
(四)网络数据库的恢复
当使用一个网络数据库时,总希望网络数据库的内容是可靠的、正确的,但计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障等)会影响网络数据库系统的操作,影响网络数据库中网络数据的正确性,甚至破坏网络数据库,使网络数据库中网络数据全部或部分丢失。因此,当发生上述故障后,人们希望能尽快恢复到原网络数据库状态或重新建立一个完整的网络数据库,该处理称为网络数据库恢复。网络数据库恢复子系统是网络数据库管理系统的一个重要组成部分。具体的恢复处理因发生的故障类型所影响的情况和结果而变化。
1.操作系统备份
不管为Oracle网络数据库设计什么样的恢复模式,网络数据库的网络数据文件、日志文件和控制文件的操作系统备份都是绝对需要的,它是保护介质故障的策略。操作系统备份分为完全备份和部分备份。
(1)完全备份
完全备份是对构成Oracle网络数据库的全部网络数据库文件、在线日志文件和控制文件的一个操作系统备份。一个完全备份在网络数据库正常关闭后进行,不能在实例故障后进行。此时,所有构成网络数据库的全部文件是关闭的,并与当前状态相一致。在网络数据库打开时不能进行完全备份。由完全备份得到的网络数据库文件在任何类型的介质恢复模式中都是有用的。
(2)部分备份
部分备份是除完全备份以外的任何操作系统的备份,可在网络数据库打开或关闭状态下进行。如单个表空间中全部网络数据文件的备份、单个网络数据文件的备份和控制文件的备份。部分备份仅对在归档日志方式下运行网络数据库有用,网络数据文件可由部分备份恢复,在恢复过程中与网络数据库其他部分一致。
通过正规备份,并且快速地将备份介质运送到安全的地方,网络数据库就能够在大多数的灾难中得到恢复。恢复文件的使用是从一个基点的网络数据库映像开始,到一些综合的备份和日志。由于不可预知的物理灾难,一个完全的网络数据库恢复(重应用日志)可以使网络数据库映像恢复到尽可能接近灾难发生的时间点的状态。对于逻辑灾难,如人为破坏或者应用故障等,网络数据库映像应该恢复到错误发生前的那一点。
在一个网络数据库的完全恢复过程中,基点后所有日志中的事务被重新应用,所以结果就是一个网络数据库映像反映所有在灾难前已接受的事务,而没有被接受的事务则不被反映。网络数据库可以恢复到错误发生前的最后一个时刻。
2.介质故障的恢复
介质故障是当一个文件、文件的一部分或一块磁盘不能读或不能写时出现的故障。介质故障的恢复有以下两种形式,由网络数据库运行的归档方式决定。
(1)如果网络数据库是可运行的,它的在线日志仅可重用但不能归档,此时介质恢复可使用最新的完全备份的简单恢复。
(2)如果网络数据库可运行且其在线日志是可归档的,该介质故障的恢复是一个实际恢复过程,需重构受损的网络数据库,恢复到介质故障前的一个指定事务状态。
不管采用哪种方式,介质故障的恢复总是将整个网络数据库恢复到故障前的一个事务状态。如果网络数据库是在归档日志方式下运行,可采用完全介质恢复和不完全介质恢复两种方式进行。
①完全介质恢复
完全介质恢复可恢复全部丢失的修改。仅当所有必要的日志可用时才可能这样做。可使用不同类型的完全介质恢复,这要取决于损坏的文件和网络数据库的可用性。
第一,关闭网络数据库的恢复。当网络数据库可被装配但是关闭时,如完全不能正常使用,此时可进行全部的或单个损坏网络数据文件的完全介质恢复。
第二,打开网络数据库的离线表空间的恢复。当网络数据库是打开状态时,完全介质恢复可以处理。未损坏的网络数据库表空间在线时可以使用,而当受损空间离线时,其所有网络数据文件可作为完全介质恢复的单位。
第三,打开网络数据库的离线表空间的单个网络数据文件的恢复。当网络数据库是打开状态时,完全介质恢复可以对其处理。未损坏的网络数据库表空间处于在线状态时,也可以使用完全介质恢复,而受损的表现空间处于离线状态时,该表空间指定的单个受损网络数据文件可被恢复。
第四,使用备份控制文件的恢复。当控制文件的所有复制由于磁盘故障而受损时,可使用备份控制文件进行完全介质恢复而不丢失网络数据。
②不完全介质恢复
不完全介质恢复是在完全介质恢复不可能或不要求时进行的介质恢复。可使用不同类型的不完全介质恢复,重构受损的网络数据库,使其恢复到介质故障前或用户出错前事务的一致性状态。根据具体受损网络数据的不同,可采用不同的不完全介质恢复。
第一,基于撤销的不完全介质恢复。在某种情况下,不完全介质恢复必须被控制,网络数据库管理员可撤销在指定点的操作。可在一个或多个日志组(在线的或归档的)已为介质故障所破坏,不能用于恢复过程时使用基于撤销的恢复。介质恢复必须控制,在使用最近的、未受损的日志组于网络数据文件后中止恢复操作。
第二,基于时间和修改的恢复。如果网络数据库管理员希望恢复到过去的某个指定点,不完全介质恢复是理想的。当用户意外删除一个表,并注意到错误提交的估计时间,网络数据库管理员可立即关闭网络数据库,利用基于时间的恢复,恢复到用户错误之前时刻。当出现系统故障而使一个在线日志文件的部分被破坏时,所有活动的日志文件突然不能使用,实例被中止,此时需要利用基于修改的介质恢复。在这两种恢复情况下,不完全介质恢复的终点可由时间点或系统修改号(SCN)来指定。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。