首页 Oracle数据库的事务管理与故障恢复技术分析报告文案

Oracle数据库的事务管理与故障恢复技术分析报告文案

举报
开通vip

Oracle数据库的事务管理与故障恢复技术分析报告文案PAGE/NUMPAGESOracle数据库的事务管理与故障恢复技术分析Oracle事务管理技术与故障恢复技术的分析Oracle是一个最早商品化的关系型数据库管理系统,也是目前最流行的关系型数据库管理系统,被越来越多的用户在信息系统管理、企业数据处理、Internet、电子商务等领域作为应用数据的后台处理系统。Oracle作为一个通用的数据库管理系统,不仅具有完整的数据管理功能,还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面...

Oracle数据库的事务管理与故障恢复技术分析报告文案
PAGE/NUMPAGESOracle数据库的事务管理与故障恢复技术分析Oracle事务管理技术与故障恢复技术的分析Oracle是一个最早商品化的关系型数据库管理系统,也是目前最流行的关系型数据库管理系统,被越来越多的用户在信息系统管理、企业数据处理、Internet、电子商务等领域作为应用数据的后台处理系统。Oracle作为一个通用的数据库管理系统,不仅具有完整的数据管理功能,还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。Oracle使用PL/SQL语言执行各种操作,具有可开放性、可移植性、可伸缩性等功能。特别是在Oracle8i中,支持面向对象的功能,如支持类、方法、属性等,使得Oracle产品成为一种对象/关系型数据库管理系统。目前最新版本是Oracle11g。本文将立足于对Oracle数据库管理系统的细致解读,对Oracle的事务管理技术以与故障恢复技术进行分析讲述。1Oracle的事务管理技术目前的数据库系统多数都是开放的、允许多个用户共享的,并且存在多用户同时并发地访问、存取数据库中的相同数据的情况,如果DBMS不能对这些并发执行的操作进行准确处理和控制,就有可能造成不正确的结果,进而破坏数据的完整性和一致性。同时,由于网络、机器故障以与应用程序的执行的错误使可能正在执行的数据存取操作发生意料之外的中断,也有可能使数据库中的数据受到破坏。因此,设计一个应用系统必须能够对并发执行的操作进行很好地控制,以与当出现执行中断时,系统能够使数据库恢复到一个正确的状态。事务管理技术就是保证共享数据的并发访问一致性和失效恢复正确性的关键技术。1.1Oracle中的事务介绍事务是DBMS的执行单位,它是由有限的数据库操作序列组成,但不是任意数据库操作序列都能成为事务。一般要求事务具有以下4个特性,也就是ACID特性,ACID特性描述了事务处理的规则。下面是这4个特性:〔1〕执行的原子性。在Oracle系统中,事务处理具有原子性。换句话说,或者提交所有的工作,或者什么工作都不提交;〔2〕功能上的保持一致性。这是非常重要的事务处理特性,任何事务处理都会将数据库从一种逻辑上的一致状态转变为另一种逻辑上的一致状态。这就是说,在事务处理开始之前,数据库中的所有数据都会满足已经施加给数据库的业务规则<约束>。与此相似,当提交了事务处理之后,数据库仍然会满足施加的所有业务规则;〔3〕彼此的隔离性。隔离性是数据库允许对其中数据进行并发修改和读取的能力。隔离性不仅可用于防止其他事务处理受到当前事务处理的干扰,而且也可以防止当前事务处理受到其他事务处理的干扰;〔4〕作用的持久性。持久性是数据库提供的最重要的特性之一。它可以确保一旦事务处理提交之后,它的改变就会永久生效。它们不会由于系统故障或错误而消失。数据库通过在线重做日志<也称为事务处理日志>可以确保当系统发生故障或崩溃时,能够提供复原数据所需的全部信息。1.2Oracle的事务管理1.2.1Oracle的事务处理概述Oracle中的一个重要概念就是没有"开始事务处理"的语句。用户不能显式地开一个事务处理。事务处理会隐式地开始与第一条修改数据的语句,或者一些要求事务处理的场合。使用commit或rollback语句将会显式地终止事务处理。事务处理具有原子性,即要么所有的语句都成功执行,要么所有语句都不能成功执行。Oracle提供了许多事务处理控制语句,用户可以用这些语句来控制这种行为。主要的事务处理控制语句包括:commit、rollback、savepoint、rollbacktosavepoint、settransaction以与setconstraints语句等。下面通过这几条语句的阐述来了解Oracle的事务管理技术。commit处理:在事务处理的最简单的形式中,用户只需使用SQL的commit命令即可。提交会结束用户的事务处理,并且使用户已经执行的任何改变永久生效。rollback处理:回滚可以允许用户撤销其工作。当应用中出现错误,或运行程序的终端用户决定不保存其所做的改变时,可能需要进行回滚。如果不能够回滚错误或用户命令,就无法支持数据库中的事务处理。在回滚处理最简单的形式中,只需使用rollback。与提交不同,回滚事务处理的时间是所改变数据量的函数。这是可以预料的,因为回滚必须在物理上撤销用户已经完成的工作。savepoint:savepoint可以允许用户在事务处理中建立标记点。用户可以在单独的事务处理中拥有多个保存点。保存点是很有用的事务处理特性,它们可以让用户将单独的大规模事务处理分割成一系列较小的部分。settransaction:settransaction语句可以使用户设置事务处理的各种属性,必须是事务处理中第一个使用的语句。settransaction语句的作用域只是当前的事务处理。只要用户进行了提交或回滚,settransaction语句的结果才会完整。setconstraint:在Oracle中,约束可以在DML语句执行之后立即生效,也可以延迟到事务处理提交时才生效。setconstraint语句可以允许用户在事务处理中设置延迟约束的强制模式。1.2.2Oracle事务的核心技术——并发控制技术概述数据库是一个共享资源,可为多个应用程序所共享。这些程序可串行运行,但在许多情况下,由于应用程序涉与的数据量可能很大,常常会涉与输入/输出的交换。为了有效地利用数据库资源,可能多个程序或一个程序的多个进程并行地运行,这就是数据库的并行操作。在多用户数据库环境中,多个用户程序可并行地存取数据库,如果不对并发操作进行控制,会存取不正确的数据,或破坏数据库数据的一致性。为防止出现这些数据的不一致性,必须使并发的事务串行化,使各个事务都按某种次序来执行,避免相互干扰,这就是并发控制所要解决的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。在Oracle数据库中所提供的并发控制机制是利用封锁机制来实现的。在多用户数据库中一般采用某些数据封锁来解决并发操作中的数据一致性和完整性问题。封锁是防止存取同一资源的用户之间破坏性的干扰的机制,干扰是指不正确地修改数据或不正确地更改数据结构。在多用户数据库中使用两种封锁:排它<专用>封锁和共享封锁。排它封锁禁止相关资源的共享,如果事务以排它方式封锁一资源,仅仅该事务可更改该资源,直至释放排它封锁。共享封锁允许相关资源可以共享,几个用户可同时读取同一数据,几个事务可在同一资源上获取共享封锁。共享封锁比排它封锁具有更高的数据并行性。2Oracle的故障恢复技术使用数据库的过程中难免出现人为故障<误操作与恶意操作>与计算机系统的故障<硬件故障、软件故障、网络故障、进程故障和系统故障等>等,这都会影响到数据库系统的操作与数据库中数据的正确性和完整性,甚至破坏数据库,使数据库中部分或全部数据丢失。这就会需要对数据库进行重构,也就是数据库恢复。数据恢复是指把意外改变或意外删除的数据恢复为原貌,恢复过程大致可以分为复原与恢复过程。ORACLE数据库使用几种结构对可能故障来保护数据:数据库后备、日志、回滚段、控制文件、系统修改号、检查点。下面着重介绍Oracle的日志技术以与利用日志文件实现数据库故障恢复,简要介绍Oracle的检查点技术。2.1Oracle的日志技术2.1.1事务日志概述数据库的事务日志是Oracle保护机制中至关重要的组成部分,其任务是随时记录数据库中正在进行的数据变化,一旦有突发故障,所有已被提交的工作均可完全恢复。数据库的恢复操作中重要的1个环节就是依赖事务日志息,重建或重做丢失事务中已被提交的各种改变。事务是数据库执行数据处理的基本单位。在执行一个事务时,如果我们把该事务处理从开始到结束所涉与的操作信息<包括事务涉与的数据库对象以与在这个对象上执行的操作类别、操作前后的数据映像、事务的状态等信息>作为一个特殊的数据项以二进制的方式记录下来,这就是事务日志,事务日志是以事务为单位进行记录的,每一个日志项详细记录了事务处理的足够信息,以确保系统在必要的时候能够重演该事务。如果说数据库中的Data是我们的直接数据或"一次数据",那么数据库中的日志则是我们的间接数据或"二次数据",它记录着数据的变更信息。从另外一个角度看,数据反映的是事务处理操作的结果,而日志记录的则是事务处理操作的过程,有了这样的历史变更过程,在一定条件下我们就可以依次"重演"这个过程<即重新执行事务处理的操作>,以达到恢复数据的目的。可以说事务日志是记录数据库系统数据操作的"流水账",目前绝大多数数据库系统都支持对事务日志的记录。Oracle的日志文件有两类:一类是联机日志文件,即Oracle用于管理数据库的事务日志文件;另一类称为归档日志,是不活动联机文件的备份,这种日志文件主要用于数据库的恢复。日志中记录的信息包括:数据库的逻辑更改、用户的误操作、事后审计、数据库的更改历史、更改类型〔INSERT、UPDATE、DELETE、DDL等〕、更改对应的SCN号、以与执行这些操作的用户信息等。2.1.2基于日志的数据库恢复无论何种原因故障导致Oracle数据库不能正常启动<即不能进入Open状态>,此时即需要执行数据库恢复。典型的数据库恢复过程需要如下3个阶段:<1>Restore:选择某个历史备份作为恢复的起点,即首先将数据恢复至备份时刻的状态;<2>RollForward:利用归档日志和联机日志依次重做自备份时刻以来的事务;<3>RollBack:在故障时刻前附近的一些事务,有些还未来得与提交,但由于系统部的Checkpoint事件的触发导致已经写入联机日志,这部分事务需要利用数据映像进行必要的回滚。如果这3个阶段的操作都能够顺利进行,则可以将数据库毫无损失地恢复到损坏前一时刻的状态,即所谓的完全数据库恢复,如果这个恢复过程在第二、三阶段由于某种原因中途结束,则数据库只能恢复到过去的某个时问点,即不完全恢复。下图给出了Oracle数据库恢复的典型示例。假设系统在T7时刻出现故障导致Oracle数据库停止运行,数据库分别在T1、T3、T6有3次历史备份,由图示可知,归档日志中包含了T2至T5时间段的事务日志,联机重做日志中包含了T4至T7时间段的事务日志。下面说明恢复过程:<1>选择T3时刻的备份作为恢复的起点;<2>利用归档日志重做T3至T4<或T5>时间段的事务;<3>利用联机重做日志重做T4<或T5>至T7时间段的事务,将数据库恢复到故障时刻,实现CompleteRecovery。日志中记录的事务处理信息是与当时的数据库状态相关联的,离开了特定的数据状态,数据操作也就失去了意义。因此事务日志的重演是有前提的:一是数据库首先必须处于某一时刻点的完整状态<通常由数据库备份来实现>。只有处于这个状态,在这一时间点之后的事务才有重新运行的基础;二是重新运行的事务处理必须严格按照原来的时间顺序进行,只有这样,才能实现逐步推演,因为实际的数据库操作其后一步操作总是依赖于前一步操作的结果。正因为此,数据库的事务日志必须连续地保存,如果某个时间段的事务日志损坏或丢失,则此时间段之后的日志也就失去了存在的意义。2.1.3Oracle的检查点技术概述检查点:是一个数据库控制文件中的一个数据结构,当出现一个检查点时,Oracle把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件利用检查点机制,可以保证Oracle恢复操作能从一个正确的点开始读取日志文件。检查点分为三类:1〕局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。触发命令:svmrgrl>altersystemcheckpointlocal;这条命令显示的触发一个局部检查点。2〕全局检查点:所有实例〔对应并行数据服务器〕执行数据库所有所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。触发命令:svrmgrl>altersystemcheckpointglobal;这条命令显示的触发一个全局检查点。3〕文件检查点:所有实例需要执行数据文件集的一个检查点操作,如使用热备份命令altertablespaceUSERSbeginbackup,或 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 空间脱机命令altertablespaceUSERSoffline,将执行属于USERS表空间的所有数据文件的一个检查点操作。检查点处理步骤:〔1〕获取实例状态队列:实例状态队列是在实例状态转变时获得,ORACLE获得此队列以保证检查点执行期间,数据库处于打开状态;〔2〕获取当前检查点信息:获取检查点记录信息的结构,此结构包括当前检查点时间、活动线程、进行检查点处理的当前线程、日志文件中恢复截止点的地址信息;〔3〕缓存区标识:标识所有脏缓存区,当检查点找到一个脏缓存区就将其标识为需进行刷新,标识的脏缓存区由系统进程DBWR〔数据库写进程〕进行写操作,将脏缓存区的容写入数据文件;〔4〕脏缓存区刷新:DBWR进程将所有脏缓存区写入磁盘后,设置一标志,标识已完成脏缓存区至磁盘的写入操作。系统进程LGWR〔日志写进程〕与CKPT<校验点>进程将继续进行检查,直至DBWR进程结束为止;〔5〕更新控制文件与数据文件。2.3Oracle中可恢复的故障类型与恢复方法在使用每一个数据库系统时,系统故障的可能性总是存在,Oracle数据库系统也不例外。如果发生系统故障,应尽快恢复数据库,使对用户不利的影响最小。2.3.1Oracle数据库故障在oracle对象关系数据库环境中可能发生各种不同类型的故障。这些故障包括语句故障、用户进程故障、用户错误故障、例程故障、介质故障。对于不同类型的故障,恢复方法也不同。〔1〕语句故障当Oracle程序中某一语句执行时发生了逻辑故障,这时语句故障也相应发生了。在下列情况下如果发生故障,即可认为发生了语句故障。一是应用程序执行过程中发生了逻辑错误;二是用户试图将可能违反完整性约束条件的脏数据输入到表中;三是用户试图进行一些末被授权的操作,例如只被授予SELECT权利的用户试图进行将数据插入表的操作;四是用户试图创建新表,但超过了用户所应分配给的限额;五是用户试图对表进行插入或者修改操作,在表空间中已没有足够的空闲空间,而要执行这些操作又需要预先分配足够的空闲空间〔2〕用户进程故障导致用户进程产生故障原因很多。最常见的原因是:一是用户在会话过程中非正常断开连接。例如,用户在客户服务器环境中与数据库连接时,用户使用SQL*Hus中的[Ctrl]+[Break]非正常断开连接;二是用户会话过程非正常终止,当用户在客户服务器环境中与数据库连接时用户又重新启动了该用户进程就可能造成这种情况;三是用户程序在终止会话过程时产生地址异常,当应用程序不能正确处理出现的异常情况时经常会产生地址异常。〔3〕用户错误故障在下列情况下,经常会发生用户错误故障:一是当用户随意删除或者截断一个表;二是用户删除一个表中必需的所有行;三是用户已提交了数据,但是发现所提交的数据中有错误。〔4〕例程故障很多原因均可能导致例程故障的产生。一是因断电造成服务器不可用从而导致例程故障。二是因硬件问题比如CPU故障或者存毁坏,或者因为操作系统崩溃而导致的例程故障。三是因Oracle服务器的某一个后台进程,主要指DBWR、LGWR、PMON、SMON、CKPT这几个进程中的某一个发生了故障,这时也会发生例程故障。〔5〕介质故障介质故障与物理介质有关的问题。这些问题经常发生对数据文件进行读写的时候。而这些读写对数据库操作而言又是必需的。介质故障是所有oracle所发生的故障中性质最严重的。在如下几种情况下会发生介质故障。一,存储某一数据库文件的磁盘驱动器的磁头划伤;二,在对正常数据库操作所需的文件进行读写时遇到的物理介质问题;三,文件被删除。2.3.2Oracle数据库恢复条件分析〔1〕恢复的目标:概括而言,恢复的目标就是把数据库的平均恢复时间、数据损失减到最小;增加数据库的平均无故障工作时间。〔2〕定制恢复策略需要考量的因素:由于恢复过程并不是独立存在的,所以定制恢复策略之前要考量一些相关因素。〔3〕恢复的前提条件:Oracle数据库恢复的前提条件就是:事先已成功做了数据库备份。数据库运行模式,分为两类:非归档模式指的是数据库实例在运行中对日志文件采取随时进行覆盖写而不用备份的方法;归档模式指的是数据库实例在运行中对日志文件进行覆盖写前先由ARCH进程读出并写到归档日志文件中,当此过程完成后才能对日志文件进行覆盖写。2.3.3Oracle数据库恢复对应上述不同的数据库故障,下面分析各自的恢复方法:〔1〕语句故障的恢复方案当应用程序发生逻辑错误时,应该修改应用程序以使逻辑 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 得以正确执行。因为这类故障主要与具体的应用程序环境有关,因此这部分工作应该由应用程序设计人员来执行而不是由DBA来完成。同样,如果用户将脏数据插入表中,那么应修改SQL语句并重新发布,这部分工作应由应用程序设计人员来执行而不由DBA完成。而在其它情况下,DBA必须参与到故障恢复工作中来。为了使用户完成末被授权的操作,DBA不得不提供给这些用户所需的授权。为了让用户完成创建新表的工作,DBA不得不发布alteruser命令以改变限额限制。为了让用户完成插入或者修改操作,DBA不得不给表空间增加文件空间。当然,从技术上讲DBA应该保证这种情况不会发生。但是用户在进行插入或者修改操作时遇到空闲空间不足的情况应该会发生,因此DBA不得不增加文件空间,DBA也可以通过对数据文件使用RE-SIZE和AUTOEXTEND的形式完成该功能。〔2〕用户进程故障的恢复方案DBA基本上不需要采取任何措施去处理进程错误。虽然oracle服务器或者其它用户进程将对系统或者其它用户基本上不产生任何影响,但是用户进程不能连续工作。这种非正常的用户进程必须予以终止,PMON后台进程完全能够处理非正常用户进程终止后的清理工作。PMON进程可以检测到非正常终止的服务器进程,然后PMON进程回滚非正常终止进程的事务并且释放已获得的任何资源和封锁。〔3〕用户错误故障的恢复方案用户错误故障恢复通常需要DBA的参与。对于任何数据库和应用程序环境而言,为了尽量避免用户错误故障,一个最为关键的问题是必须保证对用户进行有效的培训,使他们知道数据库的可用性和完整性的应用等问题。其次,当发生用户错误故障时,DBA应该掌握因用户错误故障产生数据丢失的应用程序和事务操作类型,以与知道如何根据这些操作制定恢复措施,例如如何利用有效备份进行用户错误故障的恢复。〔4〕例程故障的恢复方案例程恢复是将数据库的事务恢复到发生例程故障前一致的状态。下面具体介绍例程恢复的步骤:第一步,Oracle服务器通过发现非同步文件的方式来决定数据库是否需要恢复。第二步,前滚过程。DBWR进程将提交和末提交的数据全部写入数据文件。而前滚过程负责将记录在日志文件中的所有修改写入到数据块中。第三步,完成前滚过程后,所有提交的数据已驻留在数据文件中,但是末提交的数据仍可能存在。第四步,回滚过程。为了从数据文件移去末提交的数据,在前滚过程中或者在发生故障前将回滚段装入。当Oracle服务器或者用户提出请求时,这些数据块被回滚。第五步,当前滚过程和回滚过程完成后,只有提交的数据驻留在磁盘中。第六步,到此为止,所有数据文件都已经同步了,这例程故障也就得到了恢复。〔5〕介质故障的恢复方案介质故障的恢复经常需要DBA的介入。已测试过有效的备份方案对于介质故障恢复是至关重要的。DBA能够多大程度上减少因介质故障造成的故障时问和数据丢失,取决于可用的备份方案。因此,介质故障恢复方案取决于下列因素:一,所选择的备份方案和受影响的文件;二,是否使用了归档模式,如果使用了归档模式,可以使用归档的重做日志文件中的容将数据库中的数据恢复为最近一次备份以来已提交的数据。在实际应用中,排除故障的方法随Oracle数据库运行的方式、故障的类型、数据库后备策略的不同而不同。在恢复介质故障时,通常需要使用各类物理后备文件,因此,为了减少因数据库系统故障带来的损失,Oracle数据库系统管理员必须配置好数据库后备策略,管理好物理后备文件,以供恢复数据库介质故障时使用。
本文档为【Oracle数据库的事务管理与故障恢复技术分析报告文案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xiangm
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:8
分类:成人教育
上传时间:2022-02-20
浏览量:1