当前位置:首页 > 华南理工大学《数据库》(研究生)复习提纲2
故障类型分为一下三种:
1.事务失败:包括逻辑错误(一个事务由于其内部错误,导致不能正常结束如是不内部的死循环)和系统错误(系统进入一个不良如死锁等状态,导致事务无法执行,但该事务在以后的某个时间是可以重新执行的); 2.系统崩溃:如电源问题、其他软硬件引起的系统停机,导致缓存、内存等易失存储设备数据丢失,但是非易失存储设备数据一般不会丢失;
3.硬盘故障:人为或是自然灾害等因素造成的硬盘损害导致数据的丢失。 故障恢复策略:
事务故障和系统故障的恢复方法是:撤销故障发生时未完成事务对DB的所有影响,确保事务的原子性,重做已经成功提交的事务,实现事务的持久性,以上操作一般是由系统在重启时自动完成,不需要用户干预。
灾难性或磁盘失败恢复策略:使用归档存储设备(通常是磁带)上的数据库备份进行恢复,并从备份日志重新应用或者重做已经提交的事务的操作来重构故障钱数据库的最新状态。
缓存目录:跟踪哪些数据项在缓冲区中。
脏位(dirty bit ):每个缓冲区都和一个脏位相关联,它用来指示该缓冲区是否有所修改。 钉住拔去位(pin-unpin bit):即如果缓冲中的页目前还不能写回到磁盘,则称该页被钉住( 该位的值为1)。
X所在的缓冲块Bx上的操作output(Bx)不需要在write(X)执行后立即执行,因为块Bx可能包含其他仍在被访问的数据项
原位更新(in-place update):将缓冲区写回磁盘原来的位置,因而会覆盖被修改的数据项在磁盘上的旧值(必须使用日志帮助);
镜像更新(Shadow update):将缓冲区写到磁盘不同的位置,可以保存数据项的多个版本; 非潜入(no-steal):缓存中被事务更新的某个页在事务提交前不能写回磁盘; 潜入(steal):允许事务在提交前将已经更新的缓冲区写回磁盘; 强制(force):事务所有的已经更新的页在事务提交时被立即写回磁盘; 非强制制(no-force):无事所有做的更新的页在事务提交时不立即写回磁盘。
延迟更新(NO-UNDO/REDO 算法):所有事务的更新都记录在局部事务的工作区(或缓存区),只有在事务到达提交点后才真正更新磁盘上的数据库。
即时更新:事务的某些操作达到提交点前被写入数据库,恢复时需要UNDO/REDO,如果事务在达到提交点前所有的更新已被写入数据库,需要算法UNDO/NO-REDO
WAL是一个日志协议规则,明确定义了先写日志的思想,内容如下:
1. 先写日志,无论是在缓冲区还是在磁盘等上面都这样子,这是保证原子性的关键;
2. 在事务提交前写相关的所有日志记录到稳定存储介质,这是保证持久性的关键,确保我们能基于日志重建提交事务。
一种日志是把写操作记录下来;另外一种日志形式中,把更新的东西取为一个物理块,则一 个日志记录包含了三部分前像、后像、事务状态
检查点是为了在系统恢复过程中不要每次撤销和重做事务时从日志文件首条开始而在日志文件中增加的检查点标志记录,使得系统恢复过程中的撤销和重做事务都只是从最近的一个检查地点开始做,可大量减小,降低恢复所需的时间和工作量,分为静态检查点(建立检查点时不允许执行事
务)和动态检查点。
ARIES( Algorithm for Recovery andIsolation Exploiting Semantics )日志的恢复管理算法综述 1.采用基于潜入/非强制的公职模式;
2.使用日志顺序号LSN标志日志记录,在数据库页中用LSN标志哪些更新已经在数据库页上实施过;
3.使用脏页表最大程度减少恢复时不必要的重做;
4.使用模糊点检查点机制,只记录脏页信息和关联的信息,甚至不要求将脏页写到磁盘; 5.当系统崩溃会重启时,恢复管理器将被激活,并按以下三个阶段进行处理:
a.分析:鉴别系统崩溃时,缓冲区中的脏页和当时仍在活跃的事务;
b.重做:重做从日志适当起点(比如被修改的最早脏页表对应的日志记录)开始的所有动作,恢复系统到崩溃时的DB状态;
c.撤销:撤销上次崩溃时所有未提交的事务的动作效果,使DB只反映已经提交的事务的影响; d.如果是重启时再次崩溃,则会借助
一共有五种日志类型,分别为:Update、Commit、Abort、End、CLRs。 Update更新:需要写更新;
Commit提交:当事务决定提交,它将先强制写一条类型为commit(内含该事务id)的日志记录到日志尾,并执行一次刷新当前日志尾到稳存的动作;
Abort中止:当一个事务中止时,一条类型为abort(内含事务id)的日志记录将被写到日志尾,同时启动一个撤销该事务的Undo过程;
End结束:当一个事务提交或是中止后,commit或是abort外,DBMS还将执行一些而外的动作步骤,当这些而外的动作都完成后,将会写一条(包含事务id和、类型为end)日志记录到稳存; CLR s补偿:当由一条更新日志记录U所记录的改变被撤销时,将会有一条类型为CLR的补偿日志记录C被写到日志尾,其中undoNextLSN记录同一事务被撤销的下一条更新记录LSN,一般与U的prevLSN同一值。
与日志相关的其他数据结构:
事务表Transaction Table:每个活跃事务占一个表项,(包括提交的中止的),每个表项中有事务id tranID,执行的最后一个日志页lastLSN和事务状态status;
脏页表Dirty Page Table:缓冲池中每个脏页占一个表项,每个表项中有个物理页idPageID和记录同一个事务的最早的一个日志顺序号recLSN(也即最小日志顺序号LSN)。脏页表有两种用途。一为在系统正常运行过程中用作缓冲区(buffer pool)脏页表,且系统在作检查点(checkpoint 或 CHKPT)时,将该表包含在其记录中。另一用途是作为重启动(restart)脏页表以记录系统失效时可能的脏页;
页面结构:页数据结构指在数据库的每一页辟出一块小空间作为页日志顺序码(Page-LSN)域,用以描述在该页上所作的最近的更新或补偿操作所对应的日志记录的LSN.页结构由单一的数据域页日志顺序码组成。
理解归档日志文件:oracle每有一个事务,首先会产生一条日志,这个日志里面包含了能够还原这个事务的最少信息,这些日志会暂存在内存中,再由一个叫LGWR的进程将日志缓冲区的日志写到硬盘上的日志文件上,这些日志文件一般在50兆左右,一般为3组。等一个日志文件写满了50兆的内容,它会断开,LGWR继续往下一个日志文件中写日志;这3个日志文件轮流写入(覆
盖写入)。
现在来讲重做日志文件归档,就是将一个写满了日志的文件复制一份到一个指定的文件夹中,可以将这些历史日志文件都copy(归档)一份,而不会在轮循中被覆盖,起到保护数据的功能。
物理备份是指物理数据库文件的副本,是备份恢复策略的主体。用户可以使用recovery manager或是操作系统工具进行物理备份。(包括热备份和冷备份)
逻辑备份是使用oracle工具抽取逻辑数据(如表或是存储过程等)并保存在二进制文件中,逻辑备份可以作为物理备份的补充
冷备份:冷备份又称为脱机备份,是在数据库保持关闭,而且是mount的状态下,把数据库的配置文件、数据文件、控制文件、重做日志文件和归档日志文件复制到其他地方保存起来。冷备份可分为一致性备份和非一致性备份;
热备份:热备份又称为联机备份或者归档备份,是在数据库保持开放的状态下对数据库进行备份。热备份的好处是不必关闭数据库,不影响数据库的正常运行,但是数据库必须处于归档模式; 一致性备份(consistent backup):是备份所包含的各个文件中的所有修改都具备相同的系统变化编号(system change number,SCN)。也就是说,备份所包含的各个文件中的所有数据均来自同一时间点,使用一致性数据库完全备份进行复原后,不需要执行恢复操作。在NOARCHIVELOG(非归档)模式下,一致性数据库完全备份是唯一有效的备份方案;
非一致性备份:指在数据库处于打开(open)状态时,或数据库异常关闭(shut down abnormally)后,对一个或多个数据库文件进行的备份,非一致性备份需要在还原之后进行恢复操作。对必须24*7 地工作的数据库只能进行非一致性数据库完全备份,也称为热备份
简述归档模式:
共分享92篇相关文档