Oracle大数据库地事务管理系统与故障恢复技术分析报告_第1页
Oracle大数据库地事务管理系统与故障恢复技术分析报告_第2页
Oracle大数据库地事务管理系统与故障恢复技术分析报告_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、操作,具有可开 放性、可移植性、可伸缩性等功能。特别是在 Oracle 8i 中,支持面向对象的功 能,如支持类、方法、属性等,使得 Oracle 产品成为一种对象 /关系型数据库 管理系统。目前最新版本是 Oracle 11g 。本文将立足于对 Oracle 数据库管理系统的细致解读, 对 Oracle 的事务管理技 术以及故障恢复技术进行分析讲述。1 Oracle 的事务管理技术目 前的数据库系统中大多数都是开放的、允许多个用户共享的,并且存在多用 户同时并发地访问、存取数据库中的相同数据的情况,如果DBMSF能对这些并发执行 的操作进行准确处理和控制,就有可能造成不正确的结果,进而破坏数

3、 据的完整性和一致性。 同时,由于网络、 机器故障以及应用程序的执行的错误使 可能正在执行 的数据存取操作发生意料之外的中断,也有可能使数据库中的数 据受到破坏。 因此,设计一个应用系统必须能够对并发执行的操作进行很好地控 制,以及当出现执行 中断时,系统能够使数据库恢复到一个正确的状态。事务 管理技术就是保证共享数据的并发访问一致性和失效恢复正确性的关键技术。1.1 Oracle 中的事务介绍 事务是DBMS勺执行单位,它是由有限的数据库操作序列组成,但不是任意数据 库操作序列都能成为事务。一般要求事务具有以下4个特性,也就是ACID特性, ACID特性描述了事务处理的规则。下面是这 4个特

4、性:(1)执行的原子性。在 Oracle 系统中,事务处理具有原子性。换句话说,或者提交所有的工作,或者什么工作都不提交; (2) 功能上的保持一致性。这是非常重要的事务处理特性,任何事务处理都会将数据库从一种逻辑 上的一致状态转变为另一种逻辑上的一致状态。这就是说,在事务处理开始 之前,数据库中的所有数据都会满足已经施加给数据库的业务规则 (约束)。与此 相似, 当提交了事务处理之后,数据库仍然会满足施加的所有业务规则;(3)彼此的隔离性。 隔离性是数据库允许对其中数据进行并发修改和读取的能力。隔离性不仅可用于防止其他事务处理受到当前事务处理的干扰, 而且也可以防止当 前事 务处理受到其他事

5、务处理的干扰; (4)作用的持久性。持久性是数据库提 供的最重要的特性之一。 它可以确保一旦事务处理提交之后, 它的改变就会永久 生效。它 们不会由于系统故障或错误而消失。 数据库通过在线重做日志 ( 也称为 事务处理日志 ) 可以确保当系统发生故障或崩溃时,能够提供复原数据所需的全 部信息。1.2 Oracle 的事务管理1.2.1 Oracle 的事务处理概述Oracle 中的一个重要概念就是没有“开始事务处理”的语句。用户不能显式地 开一个事务处理。 事务处理会隐式地开始与第一条修改数据的语句, 或者一些要 求事务处理的 场合。使用 commit 或 rollback 语句将会显式地终止

6、事务处理。 事务处理具有原子性, 即要么所有的语句都成功执行, 要么所有语句都不能成功 执行。Oracle 提供了许多事务处理控制语句,用户可以用这些语句来控制这种行为。 主要的事务处理控制语句包括: commit、rollback 、savepoint 、rollback to savepoint 、set transaction 以及 set constraints 语句等。下面通过这几条语句的阐述来了解 Oracle 的事务管理技术。commit处理:在事务处理的最简单的形式中,用户只需使用SQL的commit 命令即可。提交会结束用户的事务处理,并且使用户已经执行的任何改 变永久生效。

7、rollback 处理:回滚可以允许用户撤销其工作。当应用中出现错误,或运行程 序的终端用户决定不保存其所做的改变时, 可能需要进行回滚。 如果不能够回滚 错误或用户命 令,就无法支持数据库中的事务处理。在回滚处理最简单的形式 中,只需使用 rollback 。与提交不同,回滚事务处理的时间是所改变数据量的 函数。这是可 以预料的,因为回滚必须在物理上撤销用户已经完成的工作。savepoint : savepoint 可以允许用户在事务处理中建立标记点。用户可 以在单独的事务处理中拥有多个保存点。 保存点是很有用的事务处理特性, 它们 可以让用户将单独的大规模事务处理分割成一系列较小的部分。s

8、et transaction : set transaction 语句可以使用户设置事务处理的各种属性, 必须是事务处理中第一个使用的语句。 set transaction 语句的作用域只是当前 的事务处理。只要用户进行了提交或回滚, set transaction 语句的结果才会完 整。set constraint :在Oracle中,约束可以在 DML语句执行之后立即生效,也可 以延迟到事务处理提交时才生效。 set constraint 语句可以允许用户在事务处 理中设置延迟约束的强制模式。1.2.2 Oracle 事务的核心技术并发控制技术概述 数 据库是一个共享资源,可为多个应用程序

9、所共享。这些程序可串行运行,但 在许多情况下, 由于应用程序涉及的数据量可能很大, 常常会涉及输入输出的 交换。为 了有效地利用数据库资源,可能多个程序或一个程序的多个进程并行 地运行,这就是数据库的并行操作。 在多用户数据库环境中, 多个用户程序可并 行地存取数据 库,如果不对并发操作进行控制,会存取不正确的数据,或破坏 数据库数据的一致性。为防止出现这些数据的不一致性,必须使并发的事务串行化, 使各个事务都按 某种次序来执行,避免相互干扰,这就是并发控制所要解决的问题。在 Oracle 数据库中所提供的并发控制机制是利用封锁机制来实现的。在多 用户数据库中 一般采用某些数据封锁来解决并发操

10、作中的数据一致性和完整性问题。封锁是防止存取同一资源的用户之间破坏性的干扰的机制,干扰 是指不正确地 修改数据或不正确地更改数据结构。在多用户数据库中使用两种封锁:排它( 专用)封锁和共享封锁。 排它封锁禁止相关资源的共享, 如果事务以排它 方式封锁 一资源, 仅仅该事务可更改该资源, 直至释放排它封锁。 共享封锁允许相关资源 可以共享,几个用户可同时读取同一数据,几个事务可在同一资源上获取共 享 封锁。共享封锁比排它封锁具有更高的数据并行性。 2 Oracle 的故障恢复技术使用数据库的过程中难免出现人为故障 (误操作及恶意操作 ) 及计算机系统的故 障( 硬件故障、软件故障、网络故障、进程

11、故障和系统故障等 ) 等,这都会影响到 数据库系统的操作及数据库中数据的正确性和完整性,甚至破坏数 据库,使数据库中部分或全部数据丢失。这就会需要对数据库进行重构,也 就是数据库恢复。 数据恢复是指把意外改变或意外删除的数据恢复为原貌, 恢复 过程大致可以分为复原(Restore)与恢复(Recover)过程。ORACL数据库使用几 种结构对可能故障来保护数据:数据库后备、日志、回滚段、控制文 件、系统 修改号(SCN)、检查点。下面着重介绍 Oracle 的日志技术以及利用日志文件实现数据库故障恢复,简要 介绍 Oracle 的检查点技术。2.1 Oracle 的日志技术2.1.1 事务日志

12、概述数据库的事务日志是 Oracle 保护机制中至关重要的组成部分,其任务是随时记 录数据库中正在进行的数据变化, 一旦有突发故障, 所有已被提交的工作均可完 全恢复。数据库的恢复操作中重要的 1 个环节就是依赖事务日志中信息, 重建或 重做丢失事务中已被提交的各种改变。事 务是数据库执行数据处理的基本单位。在执行一个事务时,如果我们把该事 务处理从开始到结束所涉及的操作信息 (包括事务涉及的数据库对象以及在这个 对象上执 行的操作类别、 操作前后的数据映像、 事务的状态等信息 )作为一个特 殊的数据项以二进制的方式记录下来, 这就是事务日志, 事务日志是以事务为单 位进行记录 的,每一个日志

13、项 (Logitem) 详细记录了事务处理的足够信息, 以确 保系统在必要的时候能够重演(Redo)该事务。如果说数据库中的Data是我们 的 直接数据或“一次数据”,那么数据库中的日志则是我们的间接数据或“二次数 据”,它记录着数据的变更信息。从另外一个角度看,数据反映的是事务处理操 作 的结果,而日志记录的则是事务处理操作的过程, 有了这样的历史变更过程, 在一定条件下我们就可以依次“重演”这个过程 (即重新执行事务处理的操作 ), 以达 到恢复数据的目的。可以说事务日志是记录数据库系统数据操作的“流水 账”,目前绝大多数数据库系统都支持对事务日志的记录。Oracle 的日志文件有两类:一

14、类是联机日志文件,即 Oracle 用于管理数据库的 事务日志文件; 另一类称为归档日志, 是不活动联机文件的备份, 这种日志文件 主要用于数据库的恢复。日志中记录的信息包括:数据库的逻辑更改、用户的误操作、事后审计、数据库 的更改历史、更改类型(INSERT UPDATE DELETE DDL等)、更改对应的 SCN 号、以及执行这些操作的用户信息等。2.1.2 基于日志的数据库恢复无论何种原因故障导致Oracle数据库不能正常启动(即不能进入Open状态), 此时即需要执行数据库恢复 (Recovery) 。典型的数据库恢复过程需 要如下 3 个 阶段:Restore :选择某个历史备份作

15、为恢复的起点,即首先将数据恢复至备 份时刻的状态; (2)Roll Forward :利用归档日志和联机日志依次重做自备份时 刻以来的事务;(3)Roll Back :在故障时刻前附近的一些事务,有些还未来得及 提交(Commit),但由于系统内部的Checkpoint事件的触发导致已经写入联机日 志,这 部分事务需要利用数据映像 (Before Image) 进行必要的回滚。如果这 3 个阶段的操作都能够顺利进行, 则可以将数据库毫无损失地恢复到损坏前一时刻 的状态,即所谓的完全数据库恢复 (Complete Recovery) ,如果这个恢复过程在 第二、三阶段由于某种原因中途结束,则数据

16、库只能恢复到过去的某个时问点, 即不完全恢复 (Incomplete Recovery) 。下图给出了 Oracle 数据库恢复的典型示 例。TIBackup际次1殆Backup Cmsh假设系统在T7时刻出现故障导致Oracle数据库停止运行,数据库分别在 T1、 T3、T6有3次历史备份,由图示可知,归档日志中包含了 T2至T5时间段的事 务日志,联机重做日志中包含了 T4至T7时间段的事务日志。下面说明恢复过程:选择T3时刻的备份作为恢复的起点; 利用归档日志重做T3至T4(或T5)时间段的事务; 利用联机重做日志重做T4(或T5)至T7时间段的事务,将数据库恢复到故障 时刻,实现 Co

17、mplete Recovery。日志中记录的事务处理信息是与当时的数据库状态相关联的,离开了特定的数据状态,数据操作也就失去了意义。因此事务日志的重演是有前提的:一是数据库首先必须处于某一时刻点的完整状态 (通常由数据库备份来实现)。只有 处于这个状态,在这一时间点之后的事务才有重新运行的基础;二是重新运行的事务处理必须严格按照原来的时间顺序进行,只有这样,才能实现逐步推演, 因为实际的数据库操作其后一步操作总是依赖于前一步操作的结果。正因为此, 数 据库的事务日志必须连续地保存,如果某个时间段的事务日志损坏或丢失, 则此时间段之后的日志也就失去了存在的意义。2.1.3 Oracle的检查点技

18、术概述 检查点:是一个数据库控制文件中的一个数据结构,当出现一个检查点时,Oracle 把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件利用检查点机制, 可以保证Oracle恢复操作能从一个正确的点开始读取日志文件。检查点分为三 类:1) 局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此 实例的全部脏缓存区写入数据文件。触发命令: svmrgrl>alter system checkpoint local; 这条命令显示的触发一个局部检查点。2) 全局检查点:所有实例(对应并行数据服务器)执行数据库所有所有数据文 件的一个检查点操作,属于此实例的全部脏缓存区写入数

19、据文件。触发命令: svrmgrl>alter system checkpoint global; 这条命令显示的触发一个全局检查 点。3) 文件检查点: 所有实例需要执行数据文件集的一个检查点操作, 如使用热备 份命令 alter tablespace USERS begin backup ,或表空间脱机命令 alter tablespace USERffline ,将执行属于USER表空间的所有数据文件的一个检 查点操作。检查点处理步骤:(1)获取实例状态队列:实例状态队列是在实例状态转变时获得,ORACL获得此队列以保证检查点执行期间,数据库处于打开状态;( 2)获取当前检查点信息

20、:获取检查点记录信息的结构,此结构包括当前检查 点时间、活动线程、 进行检查点处理的当前线程、 日志文件中恢复截止点的地址 信息;( 3)缓存区标识:标识所有脏缓存区,当检查点找到一个脏缓存区就将其标识 为需进行刷新,标识的脏缓存区由系统进程 DBWR数据库写进程)进行写操作, 将脏缓存区的内容写入数据文件;(4)脏缓存区刷新:DBW进程将所有脏缓存区写入磁盘后,设置一标志,标识已完成脏缓存区至磁盘的写入操作。系统进程LGWR日志写进程)与CKPT校 验点)进程将继续进行检查,直至 DBW进程结束为止;( 5)更新控制文件与数据文件。2.3 Oracle 中可恢复的故障类型及恢复方法在使用每一

21、个数据库系统时,系统故障的可能性总是存在, Oracle 数据库系统 也不例外。如果发生系统故障,应尽快恢复数据库,使对用户不利的影响最小。2.3.1 Oracle 数据库故障在 oracle 对象关系数据库环境中可能发生各种不同类型的故障。这些故障包括 语句故障、用户进程故障、用户错误故障、例程故障、介质故障。对于不同类型 的故障,恢复方法也不同。( 1 )语句故障当 Oracle 程序中某一语句执行时发生了逻辑故障, 这时语句故障也相应发生了。 在下列情况下如果发生故障, 即可认为发生了语句故障。 一是应用程序执行过程 中发生了逻辑错误; 二是用户试图将可能违反完整性约束条件的脏数据输入到

22、表 中;三是用户试图进行一些末被授权的操作,例如只被授予SELECT权利的用户试图进行将数据插入表的操作; 四是用户试图创建新表, 但超过了用户所应分配 给的限额; 五是用户试图对表进行插入或者修改操作, 在表空间中已没有足够的 空闲 空间,而要执行这些操作又需要预先分配足够的空闲空间( 2)用户进程故障 导致用户进程产生故障原因很多。最常见的原因是:一是用户在会话过程中非正 常断开连接。例如,用户在客户服务器环境中与数据库连接时,用户使用 SQL*Hus中的【Ctrl】+【Break】非正常断开连接;二是用户会话过程非正常终止,当用户在客户服务器环境中与数据库连接时用户又重新启动了该用户进程

23、 就可能造成这种情况; 三是用户程序在终止会话过程时产生地址异常, 当应用程 序不能正确处理出现的异常情况时经常会产生地址异常。(3)用户错误故障在下列情况下,经常会发生用户错误故障: 一是当用户随意删除或者截断一个表; 二是用户删除一个表中必需的所有行; 三是用户已提交了数据, 但是发现所提交 的数据中有错误。(4)例程故障很 多原因均可能导致例程故障的产生。一是因断电造成服务器不可用从而导致 例程故障。二是因硬件问题比如CPU故障或者内存毁坏,或者因为操作系统崩溃 而导致 的例程故障。三是因 Oracle 服务器的某一个后台进程,主要指 DBW、R LGWR PMON SMON CKPT这

24、几个进程中的某一个发生了故障,这时也会发生例程故障。5)介质故障介质故障与物理介质有关的问题。 这些问题经常发生对数据文件进行读写的时候。 而这些读写对 数据库操作而言又是必需的。 介质故障是所有 oracle 所发生的故 障中性质最严重的。 在如下几种情况下会发生介质故障。 一,存储某一数据库文 件的磁盘驱动 器的磁头划伤;二,在对正常数据库操作所需的文件进行读写时 遇到的物理介质问题;三,文件被删除。2.3.2 Oracle 数据库恢复条件分析 (1)恢复的目标:概括而言,恢复的目标就是把数据库的平均恢复时间、数据 损失减到最小;增加数据库的平均无故障工作时间。(2)定制恢复策略需要考量的

25、因素:由于恢复过程并不是独立存在的,所以定 制恢复策略之前要考量一些相关因素。( 3) 恢复的前提条件: Oracle 数据库恢复的前提条件就是:事先已成功做了 数据库备份。数据库运行模式, 分为两类:非归档模式指的是数据库实例在运行 中对日 志文件采取随时进行覆盖写而不用备份的方法;归档模式指的是数据库 实例在运行中对日志文件进行覆盖写前先由 ARCH进程读出并写到归档日志文件 中,当此过 程完成后才能对日志文件进行覆盖写。2.3.3 Oracle 数据库恢复对应上述不同的数据库故障,下面分析各自的恢复方法:(1)语句故障的恢复方案当 应用程序发生逻辑错误时,应该修改应用程序以使逻辑流程得以

26、正确执行。 因为这类故障主要与具体的应用程序环境有关, 因此这部分工作应该由应用程序 设计人员 来执行而不是由DBA来完成。同样,如果用户将脏数据插入表中,那 么应修改SQL语句并重新发布,这部分工作应由应用程序设计人员来执行而不由 DBA完成。而在其它情况下,DBA必须参与到故障恢复工作中来。 为了使用户完 成末被授权的操作,DBA不得不提供给这些用户所需的授权。为了让用户完成创建新表的工作,DBA不得不发布alter user命令以改变限额限制。为了 让用户完成插入或者修改操作,DBA不得不给表空间增加文件空间。当然,从技 术上讲DBA应该保证这种情况不会发生。但是用户在进行插入或者修改操

27、作时 遇到空闲空间不足的情况应该会发生,因此 DBA不得不增加文件空间,DBA也可 以通过对数据文件使用RE-SIZE和AUTOEXTENI的形式完成该功能。(2)用户进程故障的恢复方案DBA基本上不需要采取任何措施去处理进程错误。虽然oracle服务器或者其它 用户进程将对系统或者其它用户基本上不产生任何影响, 但是用户进程不能连续 工作。这种非正常的用户进程必须予以终止,PMO后台进程(PMONf台进程是指过程监视器,具有回退用户当前事务处理,释放当前保留的所有表锁或行锁, 释放用户当前保留的其它资源的功能 ) 完全能够处理非正常用户进程终止后的 清理工作。PMOI进程可以检测到非正常终止的服务器进程,然后 PMOI进程回滚 非正常终止进程的事务并且释放已获得 的任何资源和封锁。3)用户错误故障的恢复方案用户错误故障恢复通常需要DBA的参与。对于任何数据库和应用程序环境而言, 为了尽量避免用户错误故障, 一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论