《Oracle培训教材26629.docx》由会员分享,可在线阅读,更多相关《Oracle培训教材26629.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ORACLE培训教程2 _数据库安全、完整性、并发控制和恢复Oracle培训教材数据库的安全性、完整性、并发控制和恢复为了保证数据库库数据的安全全可靠性和正正确有效,DDBMS必须须提供统一的的数据保护功功能。数据保保护也为数据据控制,主要要包括数据库库的安全性、完完整性、并发发控制和恢复复。一、 数据库的安全性性数据库的安全性性是指保护数数据库以防止止不合法的使使用所造成的的数据泄露、更更改或破坏。计计算机系统都都有这个问题题,在数据库库系统中大量量数据集中存存放,为许多多用户共享,使使安全问题更更为突出。在一般的计算机机系统中,安安全措施是一一级一级设置置的。在DB存储这一一级可采用密密码
2、技术,当当物理存储设设备失窃后,它它起到保密作作用。在数据据库系统这一一级中提供两两种控制:用用户标识和鉴鉴定,数据存存取控制。在ORACLEE多用户数据据库系统中,安安全机制作下下列工作:l 防止非授权的数数据库存取;l 防止非授权的对对模式对象的的存取;l 控制磁盘使用;l 控制系统资源使使用;l 审计用户动作。数据库安全可分分为二类:系系统安全性和和数据安全性性。系统安全性是指指在系统级控控制数据库的的存取和使用用的机制,包包含:l 有效的用户名/口令的组合合;l 一个用户是否授授权可连接数数据库;l 用户对象可用的的磁盘空间的的数量;l 用户的资源限制制;l 数据库审计是否否是有效的;
3、l 用户可执行哪些些系统操作。数据安全性是指指在对象级控控制数据库的的存取和使用用的机制,包包含:l 哪些用户可存取取一指定的模模式对象及在在对象上允许许作哪些操作作类型。在ORACLEE服务器上提提供了一种任任意存取控制制,是一种基基于特权限制制信息存取的的方法。用户户要存取一对对象必须有相相应的特权授授给该用户。已已授权的用户户可任意地可可将它授权给给其它用户,由由于这个原因因,这种安全全性类型叫做做任意型。ORACLE利利用下列机制制管理数据库库安全性:l 数据库用户和模模式;l 特权;l 角色;l 存储设置和空间间份额;l 资源限制;l 审计。1 数据库的存取控控制ORACLE保保护信
4、息的方方法采用任意意存取控制来来控制全部用用户对命名对对象的存取。用用户对对象的的存取受特权权控制。一种种特权是存取取一命名对象象的许可,为为一种规定格格式。ORACLE使使用多种不同同的机制管理理数据库安全全性,其中有有两种机制:模式和用户户。模式为模模式对象的集集合,模式对对象如表、视视图、过程和和包等。第一一数据库有一一组模式。每一ORACLLE数据库有有一组合法的的用户,可存存取一数据库库,可运行一一数据库应用用和使用该用用户各连接到到定义该用户户的数据库。当当建立一数据据库用户时,对对该用户建立立一个相应的的模式,模式式名与用户名名相同。一旦旦用户连接一一数据库,该该用户就可存存取相
5、应模式式中的全部对对象,一个用用户仅与同名名的模式相联联系,所以用用户和模式是是类似的。用户的存取权利利受用户安全全域的设置所所控制,在建建立一个数据据库的新用户户或更改一已已有用户时,安安全管理员对对用户安全域域有下列决策策:l 是由数据库系统统还是由操作作系统维护用用户授权信息息。l 设置用户的缺省省表空间和临临时表空间。l 列出用户可存的的表空间和在在表空间中可可使用空间份份额。l 设置用户资源限限制的环境文文件,该限制制规定了用户户可用的系统统资源的总量量。l 规定用户具有的的特权和角色色,可存取相相应的对象。每一个用户有一一个安全域,它它是一组特性性,可决定下下列内容:l 用户可用的
6、特权权和角色;l 用户可用的表空空间的份额;l 用户的系统资源源限制。1) 用户鉴别:为了防止非授权权的数据库用用户的使用,OORACLEE提供二种确确认方法操作系统确认和和相应的ORRACLE数数据库确认。如果操作系统允允许,ORAACLE可使使用操作系统统所维护的信信息来鉴定用用户。由操作作系统鉴定用用户的优点是是:l 用户可更方便地地连接到ORRACLE,不不需要指定用用户名和口令令。l 对用户授权的控控制集中在操操作系统,OORACLEE不需要存储储和管理用户户口令。然而而用户名在数数据库中仍然然要维护。l 在数据库中的用用户名项和操操作系统审计计跟踪相对应应。ORACLE数数据库方式
7、的的用户确认:ORACLLE利用存储储在数据库中中的信息可鉴鉴定试图接到到数据库的一一用户,这种种鉴别方法仅仅当操作系统统不能用于数数据库用户鉴鉴别时才使用用。当用户使使用一ORAACLE数据据库时执行用用户鉴别。每每个用户在建建立时有一个个口令,用户户口令在建立立对数据库连连接时使用,以以防止对数据据库非授权的的使用。用户户的口令以密密码的格式存存储在数据库库数据字典中中,用户可随随时修改其口口令。2) 用户的表空间设设置和定额关于表空间的使使用有几种设设置选择:l 用户的缺省表空空间;l 用户的临时表空空间;l 数据库表空间的的空间使用定定额。3) 用户资源限制和和环境文件用户可用的各种种
8、系统资源总总量的限制是是用户安全域域的部分。利利用显式地设设置资源限制制;安全管理理员可防止用用户无控制地地消耗宝贵的的系统资源。资资源限制是由由环境文件管管理。一个环环境文件是命命名的一组赋赋给用户的资资源限制。另另外ORACCLE为安全全管理员在数数据库级提供供使能或使不不能实施环境境文件资源限限制的选择。ORACLE可可限制几种类类型的系统资资源的使用,每每种资源可在在会话级、调调用级或两者者上控制。在在会话级:每每一次用户连连接到一数据据库,建立一一会话。每一一个会话在执执行SQL语语句的计算机机上耗费CPPU时间和内内存量进行限限制。对ORRACLE的的几种资源限限制可在会话话级上设
9、置。如如果会话级资资源限制被超超过,当前语语句被中止(回回滚),并返返回指明会话话限制已达到到的信息。此此时,当前事事务中所有之之前执行的语语句不受影响响,此时仅可可作COMMMIT、ROOLLBACCK或删除对对数据库的连连接等操作,进进行其它操作作都将出错。在调用级:在SSQL语句执执行时,处理理该语句有好好几步,为了了防止过多地地调用系统,OORACLEE在调用级可可设置几种资资源限制。如如果调用级的的资源限制被被超过,语句句处理被停止止,该 语句句被回滚,并并返回一错误误。然而当前前事务的已执执行所用语句句不受影响,用用户会话继续续连接。有下列资源限制制:l 为了防止无控制制地使用CP
10、PU时间,OORACLEE可限制每次次ORACLLE调用的CCPU时间和和在一次会话话期间ORAACLE调用用所使用的CCPU的时间间,以0.001秒为单位位。l 为了防止过多的的I/O,OORACLEE可限制每次次调用和每次次会话的逻辑辑数据块读的的数目。l ORACLE在在会话级还提提供其它几种种资源限制。每个用户的并行行会话数的限限制;会话空闲时间的的限制,如果果一次会话的的ORACLLE调用之间间时间达到该该空闲时间,当当前事务被回回滚,会话被被中止,会话话资源返回给给系统;每次会话可消逝逝时间的限制制,如果一次次会话期间超超过可消逝时时间的限制,当当前事务被回回滚,会话被被删除,该会
11、会话的资源被被释放;每次会话的专用用SGA空间间量的限制。用户环境文件:用户环境文件是是指定资源限限制的命名集集,可赋给OORACLEE数据库的有有效的用户。利利用用户环境境文件可容易易地管理资源源限制。要使使用用户环境境文件,首先先应将数据库库中的用户分分类,决定在在数据库中全全部用户类型型需要多少种种用户环境文文件。在建立立环境文件之之前,要决定定每一种资源源限制的值。例例如一类用户户通常不执行行大量逻辑数数据块读,那那就可将LOOGICALL-READDS-PERR-SESSSION和LLOGICAAL-REAADS-PEER-CALLL设置相应应的值。在许许多情况中决决定一用户的的环境
12、文件的的合适资源限限制的最好的的方法是收集集每种资源使使用的历史信信息。2 特权和角色1) 特权:特权是执执行一种特殊殊类型的SQQL语句或存存取另一用户户的对象的权权力。有两类类特权:系统统特权和对象象特权。系统特权:是执执行一处特殊殊动作或者在在对象类型上上执行一种特特殊动作的权权利。ORAACLE有660多种不同同系统特权,每一种系统统允许用户执执行一种特殊殊的数据库操操作或一类数数据库操作.系统特权可授权权给用户或角角色,一般,系统特权全全管理人员和和应用开发人人员,终端用用户不需要这这些相关功能能.授权给一一用户的系统统特权并具有有该 系统特特权授权给其其他用户或角角色.反之,可从那
13、些被被授权的用户户或角色回收收系统特权.对象特权:在指指定的表、视视图、序列、过过程、函数或或包上执行特特殊动作的权权利。对于不不同类型的对对象,有不同同类型的对象象特权。对于于有些模式对对象,如聚集集、索引、触触发器、数据据库链没有相相关的对象特特权,它们由由系统特权控控制。对于包含在某用用户名的模式式中的对象,该该用户对这些些对象自动地地具有全部对对象特权,即即模式的持有有者对模式中中的对象具有有全部对象特特权。这些对对象的持有者者可将这些对对象上的任何何对象特权可可授权给其他他用户。如果果被授者包含含有GRANNT OPTTION 授授权,那么该该被授者也可可将其权利再再授权给其他他用户
14、。2) 角色:为相关特特权的命名组组,可授权给给用户和角色色。ORACCEL利用角角色更容易地地进行特权管管理。有下列列优点:l 减少特权管理,不不要显式地将将同一特权组组授权给几个个用户,只需需将这特权组组授给角色,然然后将角色授授权给每一用用户。l 动态特权管理,如如果一组特权权需要改变,只只需修改角色色的特权,所所有授给该角角色的全部用用户的安全域域将自动地反反映对角色所所作的修改。l 特权的选择可用用性,授权给给用户的角色色可选择地使使其使能(可可用)或使不不能(不可用用)。l 应用可知性,当当一用户经一一用户名执行行应用时,该该数据库应用用可查询字典典,将自动地地选择使角色色使能或不
15、能能。l 专门的应用安全全性,角色使使用可由口令令保护,应用用可提供正确确的口令使用用权角色使能能,达到专用用的应用安全全性。因用户户不知其口令令,不能使角角色使能。一般,建立角色色服务于两个个目的:为数数据库应用管管理特权和为为用户组管理理特权。相应应的角色称为为应用角色和和用户角色。应用角色是授予予的运行一数数据库应用所所需的全部特特权。一个应应用角色可授授给其它角色色或指定用户户。一个应用用可有几种不不同角色,具具有不同特权权组的每一个个角色在使用用应用时可进进行不同的数数据存取。用户角色是为具具有公开特权权需求的一组组数据库用户户而建立的。用用户特权管理理是受应用角角色或特权授授权给用
16、户角角色所控制,然然后将用户角角色授权给相相应的用户。数据库角色包含含下列功能:l 一个角色可授予予系统特权或或对象特权。l 一个角色可授权权给其它角色色,但不能循循环授权。l 任何角色可授权权给任何数据据库用户。l 授权给一用户的的每一角色可可以是使能的的或者使不能能的。一个用用户的安全域域仅包含当前前对该用户使使能的全部角角色的特权。l 一个间接授权角角色(授权给给另一角色的的角色)对一一用户可显式式地使其能或或使不能。在一个数据库中中,每一个角角色名必须唯唯一。角色名名与用户不同同,角色不包包含在任何模模式中,所以以建立一角色色的用户被删删除时不影响响该角色。ORACLE为为了提供与以以
17、前版本的兼兼容性,预定定义下列角色色:CONNNENT、RRESOURRCE、DBBA、EXPP-FULLL-DATAABASE和和IMP-FFULL-DDATABAASE。3 审计审计是对选定的的用户动作的的监控和记录录,通常用于于:l 审查可疑的活动动。例如:数数据被非授权权用户所删除除,此时安全全管理员可决决定对该 数数据库的所有有连接进行审审计,以及对对数据库的所所有表的成功功地或不成功功地删除进行行审计。l 监视和收集关于于指定数据库库活动的数据据。例如:DDBA可收集集哪些被修改改、执行了多多少次逻辑的的I/O等统统计数据。ORACLE支支持三种审计计类型:l 语句审计,对某某种类
18、型的SSQL语句审审计,不指定定结构或对象象。l 特权审计,对执执行相应动作作的系统特权权的使用审计计。l 对象审计,对一一特殊模式对对象上的指定定语句的审计计。ORACLE所所允许的审计计选择限于下下列方面:l 审计语句的成功功执行、不成成功执行,或或者其两者。l 对每一用户会话话审计语句执执行一次或者者对语句每次次执行审计一一次。l 对全部用户或指指定用户的活活动的审计。当数据库的审计计是使能的,在在语句执行阶阶段产生审计计记录。审计计记录包含有有审计的操作作、用户执行行的操作、操操作的日期和和时间等信息息。审计记录录可存在数据据字典表(称称为审计记录录)或操作系系统审计记录录中。数据库库
19、审计记录是是在SYS模模式的AUDD$表中。二、 数据完整性 它是指数数据的正确性性和相容性。数数据的完整性性是为了防止止数据库存在在不符合主义义的数据,防防止错误信息息输入和输出出,即数据要要遵守由DBBA或应用开开发者所决定定的一组预定定义的规则。OORACLEE应用于关系系数据库的表表的数据完整整性有下列类类型:l 在插入或修改表表的行时允许许不允许包含含有空值的列列,称为空与与非空规则。l 唯一列值规则,允允许插入或修修改的表行在在该列上的值值唯一。l 引用完整性规则则,同关系模模型定义l 用户对定义的规规则,为复杂杂性完整性检检查。ORACLE允允许定义和实实施上述每一一种类型的数数
20、据完整性规规则,这些规规则可用完整整性约束和数数据库触发器器定义。完整性约束,是是对表的列定定义一规则的的说明性方法法。数据库触发器,是是使用非说明明方法实施完完整性规则,利利用数据库触触发器(存储储的数据库过过程)可定义义和实施任何何类型的完整整性规则。1 完整性约束ORACLE利利用完整性约约束机制防止止无效的数据据进入数据库库的基表,如如果任何DMML执行结果果破坏完整性性约束,该语语句被回滚并并返回一上个个错误。ORRACLE实实现的完整性性约束完全遵遵守ANSII X3。1135-19989和ISSO90755-19899标准。利用完整性约束束实施数据完完整性规则有有下列优点:l 定
21、义或更改表时时,不需要程程序设计,便便很容易地编编写程序并可可消除程序性性错误,其功功能是由ORRACLE控控制。所以说说明性完整性性约束优于应应用代码和数数据库触发器器。l 对表所定义的完完整性约束是是存储在数据据字典中,所所以由任何应应用进入的数数据都必须遵遵守与表相关关联的完整性性约束。l 具有最大的开发发能力。当由由完整性约束束所实施的事事务规则改变变时,管理员员只需改变完完整性约束的的定义,所有有应用自动地地遵守所修改改的约束。l 由于完整性约束束存储在数据据字典中,数数据库应用可可利用这些信信息,在SQQL语句执行行之前或由OORACLEE检查之前,就就可立即反馈馈信息。l 由于完
22、整性约束束说明的语义义是清楚地定定义,对于每每一指定说明明规则可实现现性能优化。l 由于完整性约束束可临时地使使不能,以致致在装入大量量数据时可避避免约束检索索的开销。当当数据库装入入完成时,完完整性约束可可容易地使其其能,任何破破坏完整性约约束的任何新新行在例外表表中列出。ORACLE的的DBA和应应用开始者对对列的值输入入可使用的完完整性约束有有下列类型:l NOT NULLL约束:如果在表的的一列的值不不允许为空,则则需在该列指指定NOT NULL约约束。l UNIQUE码码约束:在表表指定的列或或组列上不允允许两行是具具有重复值时时,则需要该该列或组列上上指定UNIIQUE码完完整性约
23、束。在在UNIQUUE码约束定定义中的列或或组列称为唯唯一码。所有唯唯一完整性约约束是用索引引方法实施。l PRIMARYY KEY约约束:在数据据库中每一个个表可有一个个PRIMAARY KEEY约束。包包含在PRIIMARY KEY完整整性约束的列列或组列称为为主码,每个个表可有一个个主码。ORRACLE使使用索引实施施PRIMAARY KEEY约束。l FOREIGNN KEY约约束(可称引引用约束):在关系数据据库中表可通通过公共列相相关联,该 规则控制必必须维护的列列之间的关系系。包含在引引用完整性约约束定义的列列或组列称为为外来码。由由外来码所引引用的表中的的唯一码或方码,称称为引
24、用码。包包含有外来码码的表称为子子表或从属表表。由子表的的外来码所引引用的表称为为双亲表或引引用表。如果果对表的每一一行,其外来来码的值必须须与主码中一一值相匹配,则则需指定引用用完整性约束束。l CHECK约束束:表的每行行对一指定的的条件必须是是TRUE或或未知,则需需在一列或列列组上指定CCHECK完完整性约束。如如果在发出一一个DML语语句时,CHHECK约束束的条件计算算得FALSSE时,该语语句被回滚。2 数据库触发器ORACLE允允许定义过程程,当对相关关的表作INNSERT、UUPDATEE或DELEETE语句时时,这些过程程被隐式地执执行。这些过过程称为数据据库触发器。触触发
25、器类似于于存储的过程程,可包含SSQL语句和和PL/SQQL语句,可可调用其它的的存储过程。过过程与触发器器差别在于调调用方法:过过程由用户或或应用显式执执行;而触发发器是为一激激发语句 (IINSERTT、UPDAATE、DEELETE)发发出进由ORRACLE隐隐式地触发。一一个数据库应应用可隐式地地触发存储在在数据库中多多个触发器。在许多情况中触触发器补充OORACLEE的标准功能能,提供高度度专用的数据据库管理系统统。一般触发发器用于:l 自动地生成导出出列值。l 防止无效事务。l 实施复杂的安全全审核。l 在分布式数据库库中实施跨结结点的引用完完整性。l 实施复杂的事务务规则。l 提
26、供透明的事件件记录。l 提供高级的审计计。l 维护同步的表副副本。l 收集表存取的统统计信息。注意:在ORAACLE环境境中利用ORRACLE工工具SQL*FORMSS也可定义、存存储和执行触触发器,它作作为由SQLL*FORMMS所开发有有应用的一部部分,它与在在表上定义的的数据库触发发器有差别。数数据库触发器器在表上定义义,存储在相相关的数据库库中,在对该该表发出IMMSERT、UUPDATEE、DELEETE语句时时将引起数据据库触发器的的执行,不管管是哪些用户户或应用发出出这些语句。而而SQL*FFORMS的的触发器是SSQL*FOORMS应用用的组成,仅仅当在指定SSQL*FOORM
27、S应用用中执行指定定触发器点时时才激发该触触发器。一个触发器由三三部分组成:触发事件或或语句、触发发限制和触发发器动作。触触发事件或语语句是指引起起激发触发器器的SQL语语句,可为对对一指定表的的INSERRT、UNPPDATE或或DELETTE语句。触触发限制是指指定一个布尔尔表达式,当当触发器激以以时该布尔表表达式是必须须为真。触发发器作为过程程,是PL/SQL块,当当触发语句发发出、触发限限制计算为真真时该过程被被执行。3 并发控制数据库是一个共共享资源,可可为多个应用用程序所共享享。这些程序序可串行运行行,但在许多多情况下,由由于应用程序序涉及的数据据量可能很大大,常常会涉涉及输入/输
28、输出的交换。为为了有效地利利用数据库资资源,可能多多个程序或一一个程序的多多个进程并行行地运行,这这就是数据库库的并行操作作。在多用户户数据库环境境中,多个用用户程序可并并行地存取数数据库,如果果不对并发操操作进行控制制,会存取不不正确的数据据,或破坏数数据库数据的的一致性。例:在飞机票售售票中,有两两个订票员(TT1,T2)对对某航线(AA)的机动性性票作事务处处理,操作过过程如图所示示:数据库中的A111100T1 READ AAA:=A-1 WRITE AT2 READ AAA:=A-1 WRITE AT1工作区中的的A110000T2工作区中的的A11000首先T1读A,接接着T2也读
29、读A。然后TT1将其工作作区中的A减减1,T2也也采取同样动动作,它们都都得0值,最最后分别将00值写回数据据库。在这过过程中没有任任何非法操作作,但实际上上多出一张机机票。这种情情况称为数据据库的不一致致性,这种不不一致性是由由于并行操作作而产生的。所所谓不一致,实实际上是由于于处理程序工工作区中的数数据与数据库库中的数据不不一致所造成成的。如果处处理程序不对对数据库中的的数据进行修修改,则决不不会造成任何何不一致。另另一方面,如如果没有并行行操作发生,则则这种临时的的不一致也不不会造成什么么问题。数据据不一致总是是是由两个因因素造成:一一是对数据的的修改,二是是并行操作的的发生。因此此为了
30、保持数数据库的一致致性,必须对对并行操作进进行控制。最最常用的措施施是对数据进进行封锁。1) 数据库不一致的的类型l 不一致性在一事务期间,其其它提交的或或未提交事务务的修改是显显然的,以致致由查询所返返回的数据集集不与任何点点相一致。l 不可重复读在一个事务范围围内,两个相相同查询将返返回不同数据据,由于查询询注意到其它它提交事务的的修改而引起起。l 读脏数据如果事务T1将将一值(A)修修改,然后事事务T2读该该值,在这之之后T1由于于某种原因撤撤销对该值的的修改,这样样造成T2读读取的值是脏脏的。l 丢失更改在一事务中一修修改重写另一一事务的修改改,如上述飞飞机票售票例例子。l 破坏性的D
31、DLL操作在一用户修改一一表的数据时时,另一用户户同时更改或或删除该表。1) 封锁在多用户数据库库中一般采用用某些数据封封锁来解决并并发操作中的的数据一致性性和完整性问问题。封锁是是防止存取同同一资源的用用户之间破坏坏性的干扰的的机制,该干干扰是指不正正确地修改数数据或不正确确地更改数据据结构。在多用户数据库库中使用两种种封锁:排它它(专用)封封锁和共享封封锁。排它封封锁禁止相关关资源的共享享,如果一事事务以排它方方式封锁一资资源,仅仅该该事务可更改改该资源,直直至释放排它它封锁。共享享封锁允许相相关资源可以以共享,几个个用户可同时时读同一数据据,几个事务务可在同一资资源上获取共共享封锁。共共
32、享封锁比排排它封锁具有有更高的数据据并行性。在多用户系统中中使用封锁后后会出现死锁锁,引起一些些事务不能继继续工作。当当两个或多个个用户彼此等等待所封锁数数据时可发生生死锁。2) ORACLE多多种一致性模模型。ORACLE利利用事务和封封锁机制提供供数据并发存存取和数据完完整性。在一一事务内由语语句获取的全全部封锁在事事务期间被保保持,防止其其它并行事务务的破坏性干干扰。一个事事务的SQLL语句所作的的修改在它提提交之后所启启动的事务中中才是可见的的。在一事务务中由语句所所获取的全部部封锁在该事事务提交或回回滚时被释放放。ORACLE在在两个不同级级上提供读一一致性:语句句级读一致性性和事务
33、级一一致性。ORRCLE总是是实施语句级级读一致性,保保证单个查询询所返回的数数据与该查询询开始时刻相相一致。所以以一个查询从从不会看到在在查询执行过过程中提交的的其它事务所所作的任何修修改。为了实实现语句级读读一致性,在在查询进入执执行阶段时,在在注视SCNN的时候为止止所提交的数数据是有效的的,而在语句句执行开始之之后其它事务务提交的任何何修改,查询询将是看不到到的。ORACLE允允许选择实施施事务级读一一致性,它保保证在同一事事务内所有查查询的数据 44) 封锁锁机制ORACLE自自动地使用不不同封锁类型型来控制数据据的并行存取取,防止用户户之间的破坏坏性干扰。OORACLEE为一事务自
34、自动地封锁一一资源以防止止其它事务对对同一资源的的排它封锁。在在某种事件出出现或事务不不再需要该资资源时自动地地释放。ORACLE将将封锁分为下下列类:l 数据封锁:数据据封锁保护表表数据,在多多个用户并行行存取数据时时保证数据的的完整性。数数据封锁防止止相冲突的DDML和DDDL操作的破破坏性干扰。DDML操作可可在两个级获获取数据封锁锁:指定行封封锁和整个表表封锁,在防防止冲突的DDDL操作时时也需表封锁锁。当行要被被修改时,事事务在该行获获取排它数据据封锁。表封封锁可以有下下列方式:行行共享、行排排它、共享封封锁、共享行行排它和排它它封锁。l DDL封锁(字字典封锁)DDL封锁保护护模式
35、对象(如如表)的定义义,DDL操操作将影响对对象,一个DDDL语句隐隐式地提交一一个事务。当当任何DDLL事务需要时时由ORACCLE自动获获取字典封锁锁,用户不能能显式地请求求DDL封锁锁。在DDLL操作期间,被被修改或引用用的模式对象象被封锁。l 内部封锁:保护护内部数据库库和内存结构构,这些结构构对用户是不不可见的。 5) 手工工的数据封锁锁下列情况允许使使用选择代替替ORACLLE缺省的封封锁机制:l 应用需要事务级级读一致或可可重复读。l 应用需要一事务务对一资源可可排它存取,为为了继续它的的语句,具有有对资源排它它存取的事务务不必等待其其它事务完成成。ORACLE自自动封锁可在在二
36、级被替代代:事务级各各系统级。l 事务级:包含下下列SQL语语句的事务替替代ORACCLE缺省封封锁:LOCCK TABBLE命令、SSELECTTFOR UUPDATEE命令、具有有READ ONLY选选项的SETT TRANNSACTIIN命令。由由这些语句所所获得的封锁锁在事务提交交或回滚后所所释放。l 系统级:通过调调整初始化参参数SERIIALIZAABLE和RREO-LOOCKINGG,实例可用用非缺省封锁锁启动。该两两参数据的缺缺省值为:SERIALIIZABLEE=FALSSEORW-LOCCKING=ALWAYYS4 数据库后备和恢恢复当我们使用一个个数据库时,总总希望数据库
37、库的内容是可可靠的、正确确的,但由于于计算机系统统的故障(硬硬件故障、软软件故障、网网络故障、进进程故障和系系统故障)影影响数据库系系统的操作,影影响数据库中中数据的正确确性,甚至破破坏数据库,使使数据库中全全部或部分数数据丢失。因因此当发生上上述故障后,希希望能重新建建立一个完整整的数据库,该该处理称为数数据库恢复。恢恢复子系统是是数据库管理理系统的一个个重要组成部部分。恢复处处理随所发生生的故障类型型所影响的结结构而变化。1) 恢复数据库所使使用的结构ORACLE数数据库使用几几种结构对可可能故障来保保护数据:数数据库后备、日日志、回滚段段和控制文件件。数据库后备是由由构成ORAACLE数
38、据据库的物理文文件的操作系系统后备所组组成。当介质质故障时进行行数据库恢复复,利用后备备文件恢复毁毁坏的数据文文件或控制文文件。日志,每一个OORACLEE数据库实例例都提供,记记录数据库中中所作的全部部修改。一个个实例的日志志至少由两个个日志文件组组成,当实例例故障或介质质故障时进行行数据库部分分恢复,利用用数据库日志志中的改变应应用于数据文文件,修改数数据库数据到到故障出现的的时刻。数据据库日志由两两部分组成:在线日志和和归档日志。每一个运行的OORACLEE数据库实例例相应地有一一个在线日志志,它与ORRACLE后后台进程LGGWR一起工工作,立即记记录该实例所所作的全部修修改。在线日日
39、志由两个或或多个预期分分配的文件组组成,以循环环方式使用。归档日志是可选选择的,一个个ORACLLE数据库实实例一旦在线线日志填满后后,可形成在在线日志的归归档文件。归归档的在线日日志文件被唯唯一标识并合合成归档日志志。回滚段用于存储储正在进行的的事务(为未未提交的事务务)所修改值值的老值,该该信息在数据据库恢复过程程中用于撤消消任何非提交交的修改。控制文件,一般般用于存储数数据库的物理理结构的状态态。控制文件件中某些状态态信息在实例例恢复和介质质恢复期间用用于引导ORRACLE。2) 在线日志一个ORACLLE数据库的的每一实例有有一个相关联联的在线日志志。一个在线线日志由多个个在线日志文文
40、件组成。在在线日志文件件填入日志项项,日志项记记录的数据用用于重构对数数据库所作的的全部修改。后后台进程LGGWR以循环环方式写入在在线日志文件件。当当前的的在线日志文文件写满后,LLGWR写入入到下一可用用在线日志文文件当最后一一个可用的在在线日志文件件的检查点已已完成时即可可使用。如果果归档不实施施,一个已填填满的在线日日志文件一当当包含该在线线日志文件的的检查点完成成,该文件已已被归档后即即可使用。在在任何时候,仅仅有一个在线线日志文件被被写入存储日日志项,它被被称为活动的的或当前在线线日志文件,其其它的在线日日志文件为不不活动的在线线日志文件。ORCLE结束束写入一在线线日志文件并并开
41、始写入到到另一个在线线日志文件的的点称为日志志开关。日志志开关在当前前在线日志文文件完全填满满,必须继续续写入到下一一个在线日志志文件时总出出现,也可由由DBA强制制日志开关。每每一日志开关关出现时,每每一在线日志志文件赋给一一个新的日志志序列号。如如果在线日志志文件被归档档,在归档日日志文件中包包含有它的日日志序列号。ORACLE后后台进程DBBWR(数据据库写)将SSGA中所有有被修改的数数据库缓冲区区(包含提交交和未提交的的)写入到数数据文件,这这样的事件称称为出现一个个检查点。因因下列原因实实现检查点:l 检查点确保将内内存中经常改改变的数据段段块每隔一定定时间写入到到数据文件。由由于
42、DBWRR使用最近最最少使用算法法,经常修改改的数据段块块从不会作为为最近最少使使用块,如果果检查点不出出现,它从不不会写入磁盘盘。l 由于直至检查点点时所有的数数据库修改已已记录到数据据文件,先于于检查点的日日志项在实例例恢复时不再再需要应用于于数据文件,所所以检查点可可加快实例恢恢复。虽然检查点有一一些开销,但但ORACLLE既不停止止活动又不影影响当前事务务。由于DBBWR不断地地将数据库缓缓冲区写入到到磁盘,所以以一个检查点点一次不必写写许多数据块块。一个检查查点保证自前前一个检查点点以来的全部部修改数据块块写入到磁盘盘。检查点不不管填满的在在线日志文件件是否正在归归档,它总是是出现。
43、如果果实施归档,在在LGWR重重用在线日志志文件之前,检检查点必须完完成并且所填填满的在线日日志文件必须须被归档。检查点可对数据据库的全部数数据文件出现现(称为数据据库检查点),也也可对指定的的数据文件出出现。下面说说明一下什么么时候出现检检查点及出现现什么情况:l 在每一个日志开开关处自动地地出现一数据据库检查点。如如果前一个数数据库检查点点正在处理,由由日志开关实实施的检查点点优于当前检检查点。l 初始化参数据LLOG-CHHECKPOOINT-IINTERVVAL设置所所实施的数据据库检查点,当当预定的日志志块数被填满满后(自最后后一个数据库库检查点以来来),实施一一数据库检查查点。另一
44、个个参数LOGG-CHECCKPOINNT-TIMMEOUT可可设置自上一一个数据库检检查点开始之之后指定秒数数后实施一数数据库检查点点。这种选择择对使用非常常大的日志文文件时有用,它它在日志开头头之间增加检检查点。由初初始化参数所所启动的数据据库检查点只只有在前一个个检查点完成成后才能启动动。l 当一在线表空间间开始后备时时,仅对构成成该空间的数数据文件实施施一检查点,该该检查点压倒倒仍在进行中中的任何检查查点。l 当DBA使一表表空间离线时时,仅对构成成该表空间的的在线文件实实施一检查点点。l 当DBA以正常常或立即方式式关闭一实例例时,ORAACLE在实实例关闭之前前实施一数据据库检查点
45、,该该检查点压倒倒任何运行检检查点。l DBA可要求实实施一数据库库检查点,该该检查点压倒倒任何运行检检查点。检查点机制:当当检查点出现现时,检查点点后台进程记记住写入在线线文件的下一一日志行的位位置,并通知知数据库写后后台进程将SSGA中修改改的数据库缓缓冲区写入到到磁盘上的数数据文件。然然后由CKPPT修改全部部控制文件和和数据文件的的标头,反映映该最后检查查点。当检查查点不发生,DDBWR当需需要时仅将最最近最少使用用的数据库缓缓冲区写入磁磁盘,为新数数据准备缓冲冲区。镜象在线日志文文件:为了安安全将实例的的在线日志文文件镜象到它它的在线日志志文件ORAACLE提供供镜象功能。当当具有镜
46、象在在线日志文件件时,LGWWR同时将同同一日志信息息写入到多个个同样的在线线日志文件。日日志文件分成成组,每个组组中的日志文文件称为成员员,每个组中中的全部成员员同时活动,由由LGWR赋赋给相同的日日志序列号。如如果使用镜象象在线日志,则则可建立在线线日志文件组组,在组中的的每一成员要要求是同一大大小。镜象在线日志的的机制:LGGWR总是寻寻找组的全部部成员,对一一组的全部成成员并行地写写,然后转换换到下一组的的全部成员,并并行地写。每个数据库实例例有自己的在在线日志组,这这些在线日志志组可以是镜镜象的或不是是,称为实例例的在线日志志线索。在典典型配置中,一一个数据库实实例存取一个个ORAC
47、LLE数据库,于于是仅一个线线索存在。然然而在运行OORACLEE并行服务器器中,两个或或多个实例并并行地存取单单个数据库,在在这种情况下下,每个实例例有自己的线线索。3) 归档日志ORACLE要要将填满的在在线日志文件件组归档时,则则要建立归档档日志,或称称离线日志。其其对数据库后后备和恢复有有下列用处:l 数据库后备以及及在线和归档档日志文件,在在操作系统或或磁盘故障中中可保证全部部提交的事务务可被恢复。l 在数据库打开时时和正常系统统使用下,如如果归档日志志是永久保持持,在线后备备可以进行和和使用。如果用户数据库库要求在任何何磁盘故障的的事件中不丢丢失任何数据据,那么归档档日志必须要要存在。归档档已填满的在在线日志文件件可能需要DDBA执行额额外的管理操操作。归档机制:决定定于归档设置置,归档已填填满的在线日日志组的机制制可由ORAACLE后台台进程ARCCH自动归档档或由用户进进程发出语句句手工地归档档。当日志组组变为不活动动、日志开关关指向下一组组已完成时,AARCH可归归档一组,可可存取该组的的任何或全部部成员,完成成归档组。在在线日志文件件归档之后才才可为LGWWR重用。当当使用归档时时,必须指定定归档目标指指向一存储设设备,它不同同于个有数据据文件、在线线日志文件和和控制文件的的设备,理想想的是将归档档日志文件永永久地移到