高级数据库系统调研报告(一)
学号:    XXXXXXXXX 
姓名:     XXX     
类型:   XXXXXXXXXX
题目:Oracle数据库的事务管理与故障恢复技术分析
一、Oracle数据库事务管理技术特点综述:
目前数据库系统中都是开放的、用户共享的,并且存在多用户同时并发访问存取数据库中的相同数据的情况,如果DBMS不能对这些并发执行操作进行准确处理和控制,就有可能造成不正确的结果,进而破坏数据的完整性和一致性。另外,由于网络机器故障以及应用程序执行的错误可能会导致正在执行的数据存取操作发生中断,或使数据库中的数据受到破坏。因此,DBMS必须能够对并发执行的操作进行很好地控制,并且当出现执行中断时,系统能够使数据库恢复到一个正确的状态事务管理技术就是保证共享数据的并发访问一致性和失效恢复正确性的关键技术。
事务是DBMS的执行单位,它由有限的数据库操作序列组成,但不是任意数据库操作序列都能成为事务一般要求事务具有原子性、一致性、隔离性和持久性4个特性,ACID特性Oracle数据库中没有“开始事务处理”语句,即用户不能显式开始一个事务处理事务处理会隐式地开始第一条修改数据的语句或一些要求事务处理的场合。使用commit或rollback语句将会显式地终止事务处理。Oracle提供了许多事务处理控制语句,用户可以用这些语句控制这种行为主要的事务处理控制语句包括:commit、rollback、savepoint、rollback to savepoint、set transaction以及set constraints语句等。
为防止出现数据的不一致性,必须保证并发事务串行化使各个事务按某种次序来执行,避免相互干扰,这就是并发控制所要解决的问题。在Oracle数据库中所提供的并发控制机制是利用封锁机制来实现的在多用户数据库中一般采用某些数据封锁来解决并发操作中的数据一致性和完整性问题。封锁是防止存取同一资源的用户之间破坏性的干扰的机制,干扰是指不正确地修改数据或不正确地更改数据结构。在多用户数据库中使用两种封锁:排它封锁和共享封锁。排它封锁禁止相关资源的共享,如果事务以排它方式封锁一个资源,仅该事务可更改该资源,直至释放排它封锁。共享封锁允许相关资源可以共享,几个用户可同时读取同一数据,几个事务可在同一资源上获取共享封锁。共享封锁比排它封锁具有更高的数据
并行性。
使用数据库的过程中难免出现人为故障计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障等)等,这些也会影响到数据库系统的操作及数据库中数据的正确性和完整性,甚至破坏数据库,使数据库中部分或全部数据丢失,因此需要对数据库进行重构数据库恢复。数据恢复是指把意外改变或意外删除的数据恢复为原貌,恢复过程大致可以分为复原(Restore)与恢复(Recover)过程。Oracle数据库使用几种结构来实现针对可能出现故障的数据进行保护,包括数据库备份、日志文件回滚段、控制文件、系统修改号以及检查点
二、Oracle数据库故障恢复技术特点:
下面主要介绍Oracle的日志技术以及利用日志文件实现数据库故障恢复,并对Oracle的检查点技术进行简要介绍
1.日志文件结构特点:
日志文件主要记录所有的数据变化,以便在进行数据还原时有个依据,主要由重做记录和回
滚段构成。重做记录实质就是记录所有做过操作,Oracle提供了LOGMINER工具,可以解析重做记录,可以看出里面记录的就是做过的操作。重做记录的主要作用就是维护数据的持久性,在出现实例恢复时用于重演。另外在备份和恢复中,重做记录和归档日志是非常重要的。回滚段也就是UNDO,主要用于回滚和一致性读。例如当用户做UPDATE操作时,首先会把修改之前的数据备份到UNDO,假如另一个会话的查询是在用户做更新还未提交之前发起的,那么涉及修改的记录会根据SCN时间到UNDO里面查,查出来的数据就是更新前的数据,回滚就是把修改之前的数据复制过来。
2.日志文件类型:
Oracle日志文件有两类一类是联机日志文件,即Oracle用于管理数据库的事务日志文件;另一类称为归档日志,是不活动联机文件的备份,这种日志文件主要用于数据库的恢复。
3.日志记录结构:
日志中记录的信息包括:数据库的逻辑更改、用户的误操作、事后审计、数据库的更改历史
、更改类型(INSERT、UPDATE、DELETE、DDL等)、更改对应的SCN号、以及执行这些操作的用户信息等。
4.日志记录生成遵循的规则:
日志记录的事务处理信息与当时的数据库状态相关联,离开了特定的数据状态,数据操作也就失去了意义因此事务日志的重演是有前提的:是数据库首先必须处于某一时刻点的完整状态(通常由数据库备份来实现)只有处于这个状态,在这一时间点之后的事务才有重新运行的基础;二是重新运行的事务处理必须严格按照原来的时间顺序进行,只有如此才能实现逐步推演,因为实际的数据库操作其后一步操作总是依赖于前一步操作的结果。因此,数据库的事务日志必须连续地保存,如果某个时间段的事务日志损坏或丢失,则此时间段之后的日志也就失去了存在的意义。
5.检查点技术:
检查点是数据库控制文件中一个数据结构,当出现检查点时,数据库故障恢复DBMS把修改数据从高速缓存写入磁盘并更新控制文件和数据文件利用检查点机制,可以保证Oracle数据库数据恢复操
作能从一个正确的点开始读取日志文件,Oracle数据库中检查点分为局部检查点、全局检查点以及文件检查点三类
局部检查点中单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。svmrgrl>alter system checkpoint local触发命令可以的触发一个局部检查点。全局检查点所有实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件svrmgrl>alter system checkpoint global这条命令可以显式地触发一个全局检查点。文件检查点所有实例需要执行数据文件集的一个检查点作,例如当使用热备份命令alter tablespace USERS begin backup或表空间脱机命令alter tablespace USERS offline,将执行属于USERS表空间的所有数据文件的一个检查点操作
检查点技术的处理过程为:获取实例状态队列实例状态队列是在实例状态转变时获得,ORACLE获得此队列以保证检查点执行期间,数据库处于打开状态;获取当前检查点信息获取检查点记录信息的结构,此结构包括当前检查点时间、活动线程、进行检查点处理的当前线程、日志文件中恢复截止点的地址信息;缓存区标识标识所有脏缓存区,当检查点到一个脏缓存区就将其标识为需进行刷新,标识的脏缓存区由系统进程DBWR(数据库写进
程)进行写操作,将脏缓存区的内容写入数据文件;脏缓存区刷新DBWR进程将所有脏缓存区写入磁盘后,设置一标志,标识已完成脏缓存区至磁盘的写入操作系统进程LGWR(日志写进程)与CKPT(校验点)进程将继续进行检查,直至DBWR进程结束为止;最后更新控制文件与数据文件。
6.可恢复故障类型及其恢复方法:
在oracle对象关系数据库环境中可能发生各种不同类型的故障。可恢复故障包括语句故障、用户进程故障、用户错误故障、例程故障、介质故障对于不同类型的故障,恢复方法也不同。
(1)语句故障的恢复方法:
这类故障主要与具体的应用程序环境有关,因此这部分工作应该由应用程序设计人员来执行而不是由DBA来完成。同样,如果用户将脏数据插入表中,那么应修改SQL语句并重新发布,这部分工作应由应用程序设计人员来执行而不由DBA完成。
(2)用户进程故障的恢复方法:
这种非正常的用户进程必须予以终止,PMON后台进程能够处理非正常用户进程终止后的清理工作。PMON进程可以检测到非正常终止的服务器进程,然后PMON进程回滚非正常终止进程的事务并且释放已获得的任何资源和封锁。
(3)用户错误故障的恢复方法:
用户错误故障恢复通常需要DBA的参与。当发生用户错误故障时,DBA应该掌握因用户错误故障产生数据丢失的应用程序和事务操作类型,以及知道如何根据这些操作制定恢复措施,例如如何利用有效备份进行用户错误故障的恢复。
(4)例程故障的恢复方法:
例程故障的恢复过程为:首先Oracle服务器通过发现非同步文件的方式来决定数据库是否需要恢复,然后DBWR进程将提交和末提交的数据全部写入数据文件,通过前滚过程负责将记录在日志文件中的所有修改写入到数据块中。完成前滚过程后,所有提交的数据已驻留在数据文件中,但是末提交的数据仍可能存在。为了从数据文件移去末提交的数据,在前滚过程中或者在发生故障前将回滚段装入。当Oracle服务器或者用户提出请求时,这些数据块被回
滚。当前滚过程和回滚过程完成后只有提交的数据驻留在磁盘中。到此为止,所有数据文件都已经同步了,这例程故障也就得到了恢复。
(5)介质故障的恢复方案
在恢复介质故障时,通常需要使用各类物理后备文件,因此为了减少因数据库系统故障带来的损失,Oracle数据库系统管理员必须配置好数据库后备策略,管理好物理后备文件,以供恢复数据库介质故障时使用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。