一种数据库恢复方法、装置、设备及存储介质与流程

文档序号:15685831发布日期:2018-10-16 21:02阅读:136来源:国知局

本发明实施例涉及数据处理技术,尤其涉及一种数据库恢复方法、装置、设备及存储介质。



背景技术:

目前数据库已得到广泛应用,在数据库的运行过程中,可能会出现各种各样的故障,这些故障可以分为如下三类:事务故障、系统故障和介质故障。其中,系统故障是指系统在运行过程中,由于某种原因,造成系统停止运行,以致事务在执行过程中以非正常的方式终止。例如,特定类型的硬件错误、操作系统故障、dbms代码错误或突然停电等;介质故障是指外存储设备故障。例如,磁盘损坏、磁头碰撞盘面、瞬时强磁场干扰、数据传输部件出错或磁盘控制器出错等。

现有技术中,通常采用基于redo日志的方案解决数据库中出现的系统故障和/或介质故障问题。其中,redo日志是数据库操作过程中产生的数据修改记录的统称,同时,每个数据修改的操作又被拆分为更小的单位,称为redo记录,也即redo日志包括至少一条redo记录。redo日志用于存储数据库中的重做日志,以便系统在出现系统故障和/或介质故障时能够进行故障恢复。基于redo日志的方案具体有如下两种可实现方式:其一,在redo记录中额外增加时间字段;其二,使用辅助日志文件。其中,在redo记录中额外增加时间字段是指在每条redo记录头中增加一条时间字段;使用辅助日志文件是指为数据库增加一个日志文件,用于记录所有已经执行的语句,以及对应的执行时间。此外,为了提高性能可能还会引入该辅助日志的索引文件,以方便对辅助日志的查找。

针对第一种方式,由于一个操作产生的redo日志中可能会包括多条redo记录,而每条redo记录头中均增加一条时间字段,因此,使得在数据处理量增大的同时,也造成了存储空间的增加,进而影响了系统性能。针对第二种方式,其实质上并不是重做redo日志,而是重做redo日志中的sql语句,而重新执行sql语句,将增加解析过程,影响恢复性能。此外,还需要用户手动指定时间范围内的辅助日志,相应的也增加了处理复杂度。



技术实现要素:

本发明实施例提供一种数据库恢复方法、装置、设备及存储介质,以实现减少redo日志数据处理量,提高数据库恢复效率。

第一方面,本发明实施例提供了一种数据库恢复方法,该方法包括:

监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,所述redo日志包括至少一条redo记录;

判断所述redo记录的类型是否为时间类型;

如果所述redo记录的类型为时间类型,且根据所述redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将所述待恢复数据库恢复到所述提交时间对应的状态;

重复判断所述redo记录的类型是否为时间类型,直至所述提交时间大于预设恢复时间,则结束恢复所述待恢复数据库。

进一步的,所述监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,所述redo日志包括至少一条redo记录,包括:

监测到数据库恢复事件被触发时,获取待恢复数据库中目标归档日志文件目录;

查找所述目标归档日志文件目录中是否存在redo日志;

如果查找到所述目标归档日志文件目录中存在所述redo日志,则获取所述redo日志,所述redo日志包括至少一条redo记录。

进一步的,该方法还包括:

如果未查找到所述目标归档日志文件目录中存在所述redo日志,则结束恢复所述待恢复数据库。

进一步的,该方法还包括:

如果所述redo记录的类型不为时间类型,则根据所述redo记录恢复所述待恢复数据库。

进一步的,所述待恢复数据库包括备份还原后的数据库、所述待恢复数据库发生故障前的拷贝库或初始化的数据库。

第二方面,本发明实施例还提供了一种数据库恢复装置,该装置包括:

redo日志获取模块,用于监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,所述redo日志包括至少一条redo记录;

时间类型判断模块,用于判断所述redo记录的类型是否为时间类型;

已恢复确定模块,用于如果所述redo记录中包含提交时间字段,且根据所述redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将所述待恢复数据库恢复到所述提交时间对应的状态;

结束恢复确定模块,重复判断所述redo记录的类型是否为时间类型,直至所述提交时间大于预设恢复时间,则结束恢复所述待恢复数据库。

进一步的,所述redo日志获取模块,包括:

目标归档日志文件目录获取单元,用于监测到数据库恢复事件被触发时,获取待恢复数据库中目标归档日志文件目录;

redo日志查找单元,用于查找所述目标归档日志文件目录中是否存在redo日志;

redo日志获取单元,用于如果查找到所述目标归档日志文件目录中存在所述redo日志,则获取所述redo日志,所述redo日志包括至少一条redo记录。

进一步的,所述redo日志获取模块,还包括:

结束恢复确定单元,用于如果未查找到所述目标归档文件目录中存在所述redo日志,则结束恢复所述待恢复数据库。

第三方面,本发明实施例还提供了一种设备,该设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例所述的数据库恢复方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,该程序被处理器执行时实现如本发明实施例所述的数据库恢复方法。

本发明实施例通过监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录,判断redo记录的类型是否为时间类型,如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态,并重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。解决了现有技术中redo日志数据处理量大以及数据库恢复效率低的问题,在减少redo日志数据处理量的基础上,提高了数据库恢复效率。

附图说明

图1是本发明实施例一中的一种数据库恢复方法的流程图;

图2是本发明实施例二中的一种数据库恢复方法的流程图;

图3是本发明实施例三中的一种数据库恢复装置的结构示意图;

图4是本发明实施例四中的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种数据库恢复方法的流程图,本实施例可适用于恢复出现故障的数据库的情况,该方法可以由数据库恢复装置来执行,该装置可以采用软件和/或硬件的方式实现,该装置可以配置于设备中,例如典型的是计算机等。如图1所示,该方法具体包括如下步骤:

步骤110、监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录。

在本发明的具体实施例中,数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。或者说,数据库是长期存储在计算机内,有组织的,可共享的数据集合。其中,数据库中的数据指的是以一定的数据模型组织、描述和储存在一起,具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。数据库中的文件根据作用不同,可以将其划分为如下两种:其一,数据库文件,其包含数据库的启动信息和数据信息。一个数据库可以有一个或多个数据库文件(一个数据库文件只能属于一个数据库);其二,重做日志文件,其包含恢复数据库的所有日志信息,用于记录数据库更新情况,重做日志文件可以记录针对数据库的任何操作,对于每一次数据更新的过程,重做日志进行记录,当数据库出现故障时,管理员可以根据重做日志恢复数据库。重做日志采用提前写入的方式,即对数据库的修改先写入重做日志中,再写入数据库文件中。下面进一步对重做日志文件进行说明。在数据库中,事务和日志是两个重要的概念,事务指的是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务具有原子性、一致性、隔离性和持续性四个特性。其中,事务的原子性可以表示事务中包含的操作可被作为数据库的逻辑工作单元,这个逻辑工作单元对数据的修改操作要么全部执行,要么全部不执行。假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外界必须是可见的,或者完全没有更新。前者称为事务提交,后者称事务撤销,即必须确保由成功提交的事务完成的所有操作在数据库中全部反映,而没有成功提交的事务对数据库完全没有影响;事务的一致性可以表示一个事务执行之前和执行之后数据库都必须处于一致性的状态,即事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态;事务的隔离性可以表示一个事务的执行不能被其它事务干扰,即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰;事务的持续性可以表示当数据库出现系统故障或介质故障时,确保已提交的事务的更新不能丢失,即一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。日志是数据库的重要组成部分,重做日志文件包含用来恢复数据库的日志信息,可以用来记录每个事务中每个操作步骤,一个重做日志可以记录多个事务的执行情况,基于上述,重做日志可以用来恢复数据库内容。

在数据库运行过程中可能会出现故障,具体可将故障分为事务故障、系统故障和介质故障。为了解决数据库在运行过程中出现的故障,可以采用基于日志的恢复机制来对出现故障的数据库进行恢复。当数据库出现故障时,如系统故障和介质故障,可以通过日志查看出错的原因,并且可以通过日志文件对数据进行恢复。基于日志的恢复机制中的日志通常包括三种类型,即redo日志、undo日志和redo/undo日志。其中,redo日志可以表示重新提交已完成的事务;undo日志可以表示撤销未完成事务的操作,将数据库恢复到操作之前的状态;redo/undo日志可以表示重做已经提交的事务,撤销未完成的事务。下面主要对redo日志进行进一步说明。redo日志是数据库操作过程中产生的数据更改操作的统称,其中,更改操作具体可以包括添加、删除或修改等操作。redo日志用于存储数据库中的事务日志,以便系统在出现系统故障和介质故障时,能够基于redo日志对数据库进行恢复。同时,在数据库内数据页所产生的一次更改,会被记录为一个redo记录,redo记录里包含了发生变化的数据页的地址和更改的内容,数据库中数据页变更的最小单位是redo记录,一系列相关redo记录的集合称为redo日志,即每个redo日志中都包含了一连串的redo记录,其记录了可以用来对数据库进行恢复的所有数据修改动作。相应的,可以理解到,每个redo日志包括至少一条redo记录。当基于redo日志进行数据库恢复时,将读取其中的redo记录,并且将这些更改用于相关的数据页中。示例性的,如针对某个数据文件中某个数据页中某个偏移上某几个字节的操作等,涉及的添加、删除和修改操作都会产生对应的redo记录。需要说明的是,前述所述的redo记录中由于不包含时间字段,所以该redo记录的类型不为时间类型,也即可以理解为普通redo记录的类型不为时间类型。为了减少redo日志数据量,提高数据库恢复效率,基于数据库中事务的原子性,可以在事务提交时才生成一条包含提交时间的redo记录,也即该redo记录中包含有提交时间字段,相应的,该redo记录的类型为时间类型,可将其作为目标redo记录,也即目标redo记录的类型为时间类型。由于普通redo记录的类型不为时间类型,其不包含时间字段,相应的也就不包含提交时间字段,加之,事务提交表示该事务结束,因此,可将目标redo记录作为根据redo记录已完成了对应的数据库恢复操作的依据之一。将目标redo记录作为依据之一而不是只根据目标redo记录的原因在于,还需要考虑预设恢复时间,即如果解析出目标redo记录对应的提交时间小于预设恢复时间,才可以确定根据目标redo记录已完成了对应的数据库恢复操作。

监测到数据库恢复事件被触发,可以理解为在数据库运行过程中出现了故障,如系统故障或介质故障,并将出现故障的数据库称为待恢复数据库。此时,需要对待恢复数据库进行恢复,采用基于redo日志的恢复机制对其进行恢复。因此,当监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,其中,redo日志包括至少一条redo记录。需要说明的是,待恢复数据库中的redo日志的个数为至少一个。同时可以理解到,如前所述,每个redo日志包括至少一条redo记录。

需要说明的是,redo日志被记录在数据库中的日志文件中,而数据库中的日志文件可以分为联机日志文件和归档日志文件,其中,联机日志文件和归档日志文件所包括的内容是一样的,唯一的区别在于,日志文件中所包括的日志所处时间范围的大小,联机日志文件中所包括的日志是所处时间范围较小,即联机日志文件包括的是近期日志,而归档日志文件中所包括的日志所处时间范围较大,即归档日志文件中包括的是长期日志。具体redo日志来源可根据实际情况进行确定,在此不作具体限定。

还需要说明的是,在一般的数据库管理系统中,redo日志是严格按照数据更改的先后顺序产生的,相应的,可以理解到,各个redo日志之间存在先后顺序之分,同样的,每个redo日志中的各个redo记录之间也存在先后顺序之分。

可选的,在上述技术方案的基础上,监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录,具体可以包括:监测到数据库恢复事件被触发时,获取待恢复数据库中目标归档日志文件目录。查找目标归档日志文件目录中是否存在redo日志。如果查找到目标归档日志文件目录中存在redo日志,则获取redo日志,redo日志包括至少一条redo记录。

在本发明的具体实施例中,由于归档日志文件中包括的是长期以来的日志,因此,可选择将归档日志文件作为redo日志的来源。数据库中归档日志文件的个数为至少一个,将预先选定的归档日志文件作为目标归档日志文件,相应的,可以获取到目标归档日志文件目录,目标归档日志文件目录可以用来作为查找是否存在redo日志的索引。

监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录,具体可以包括:监测到数据库恢复事件被触发时,获取待恢复数据库中的目标归档日志文件目录,并查找目标归档日志文件目录中是否存在redo日志,如果查找到目标归档日志目录中存在redo日志,则获取redo日志;如果未查找到目标归档日志文件目录中存在redo日志,则说明不存在有效的redo日志以供使用,导致出现上述情况出现的原因为:可能是预设恢复时间大于redo日志可以恢复的最大时间,也可能是预设恢复时间小于redo日志可恢复的最小时间,还可能是预设归档日志文件无效等。相应的,便可以结束恢复待恢复数据库操作,此时,待数据库并未按要求恢复到预设恢复时间对应的状态。具体的,可以查找目标归档日志文件目录中是否存在redo日志类型,如果查找到目标归档日志目录中存在redo日志类型,则确定目标归档日志目录中存在redo日志并获取redo日志。如果未查找到目标归档日志文件目录中存在redo日志类型,则确定目标归档日志目录中不存在redo日志,进而可以说明不存在有效的redo日志以供使用,可以结束恢复待恢复数据库操作。

可选的,在上述技术方案的基础上,该方法具体还可以包括:如果未查找到目标归档日志文件目录中存在redo日志,则结束恢复待恢复数据库。

在本发明的具体实施例中,如果未查找到目标归档日志文件目录中存在redo日志,则可以说明不存在有效的redo日志以供使用,可以结束恢复待恢复数据库操作。

步骤120、判断redo记录的类型是否为时间类型。

在本发明的具体实施例中,根据前文所述可知,普通redo记录的类型不为时间类型,而目标redo记录的类型为时间类型,现需要确定redo记录是否为目标redo记录,基于上述,可以采用如下方式:对获取到的redo记录进行类型解析,判断解析后的结果是否为时间类型,来确定redo记录是否是目标redo记录。具体的,如果redo记录的类型为时间类型,则确定redo记录为目标redo记录;如果redo记录的类型不为时间类型,则确定redo记录不为目标redo记录。其中,目标redo记录与步骤110中所述的目标redo记录含义相同,即表示在事务提交时生成的一条包含提交时间的redo记录,该redo记录的类型为时间类型。

步骤130、如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态。

在本发明的具体实施例中,预设恢复时间可以表示用户期望将待恢复数据库恢复至哪个时间点所对应状态的时间,其需要事先设定,并用于与提交时间进行比较,从而确定是否已将待恢复数据库恢复到提交时间对应的状态。

如果redo记录的类型为时间类型,则确定redo记录为目标redo记录,在此基础上,根据目标redo记录中的提交时间字段解析出对应的提交时间,并将提交时间与预设恢复时间进行比较,根据比较结果确定是否已将待恢复数据库恢复到提交时间对应的状态。具体的,如果提交时间小于预设恢复时间,则可以确定已将待恢复数据库恢复到提交时间对应的状态;如果提交时间大于预设恢复时间,则可以确定需要结束恢复待恢复数据库操作。

可选的,在上述技术方案的基础上,该方法具体还可以包括:如果redo记录的类型不为时间类型,则根据redo记录恢复待恢复数据库。

在本发明的具体实施例中,如果redo记录的类型不为时间类型,则可以说明未根据redo记录对待恢复数据库进行恢复操作,需要根据redo记录恢复待恢复数据库,即需要重做redo记录。相应的,可将重做redo记录理解为根据redo记录恢复待恢复数据库。

步骤140、重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。

在本发明的具体实施例中,根据前文所述可知,由于每个redo日志包括至少一条redo记录,并且各个redo记录之间存在先后顺序之分,因此,重复判断redo记录的类型是否为时间类型可以理解为按照预设顺序依次对获取到的redo记录进行类型解析,根据解析结果确定是否为时间类型。相应的,重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复所述待恢复数据库可以理解为:

a)按照预设顺序依次获取redo日志中的一条redo记录作为当前redo记录。

b)判断当前redo记录的类型是否为时间类型;如果是,则根据当前redo记录解析得到对应的提交时间,并执行c);如果不是,根据当前redo记录恢复待恢复数据库。

c)判断提交时间是否小于预设恢复时间,如果是,则执行d);如果不是,则执行e)。

d)确定已将待恢复数据库恢复到提交时间对应的状态,并执行f)。

e)结束恢复待恢复数据库。

f)判断当前redo记录是否为redo日志中最后一条redo记录;如果是redo日志中最后一条redo记录,则查找是否存在下一个redo日志,若存在下一个redo日志,则执行a);若不存在下一个redo日志,则执行e);如果不是redo日志中最后一条redo记录,则执行a)。

此外,需要说明的是,当存在不止一个redo日志时,各个redo日志之间也存在先后顺序之分,因此,上述可以理解为按照预设顺序依次获取redo日志作为当前redo日志,对当前redo日志进行的操作,如果当前redo记录为redo日志中最后一条记录,则继续获取下一个redo日志并将其作为当前redo日志重复执行上述操作,直至无法获取到redo日志为止,结束上述重复操作。

还需要说明的是,上述基于redo日志恢复待恢复数据库的方案可以作如下理解:将待恢复数据库恢复到预设恢复时间对应的状态可以理解为待恢复数据库经过备份还原操作之后,再通过重做归档日志文件中的redo日志将待恢复数据库恢复到预设恢复时间点。示例性的,用户在下午5点触发了对数据库的一个误操作,删除了5点之前的某些重要数据,此时,可将预设恢复时间设置为下午4:59分,采用上述方式可将数据库恢复到下午4:59分对应的状态。从而,可最大程度地重新找回被误删的数据。

相比于现有技术中,基于redo日志的两种对数据库恢复的方式而言,实现了在减少redo日志数据处理量的基础上,提高了数据库恢复效率。

本实施例的技术方案,通过监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录,判断redo记录的类型是否为时间类型,如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态,并重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。解决了现有技术中redo日志数据处理量大以及数据库恢复效率低的问题,在减少redo日志数据处理量的基础上,提高了数据库恢复效率。

可选的,在上述技术方案的基础上,待恢复数据库具体可以包括:经备份还原后的数据库、待恢复数据库发生故障前的拷贝库或初始化的数据库。

需要说明的是,如果不满足上述条件但已经重做的更改,在待恢复数据库恢复后,由于其事务处于活动状态,根据数据库中事务的原子性,其会被回滚。示例性的,如预设恢复时间到提交时间之间的更改,都将被回滚。

实施例二

图2为本发明实施例二提供的一种数据库恢复方法的流程图,本实施例可适用于恢复出现故障的数据库的情况,该方法可以由数据库恢复装置来执行,该装置可以采用软件和/或硬件的方式实现,该装置可以配置于设备中,例如典型的是计算机等。如图2所示,该方法具体包括如下步骤:

步骤201、监测到数据库恢复事件被触发时,获取待恢复数据库中的目标归档日志文件目录。

步骤202、查找目标归档日志文件中是否存在redo日志;若是,则执行步骤203;若否,则执行步骤204。

步骤203、获取redo日志;并转入执行步骤205。

步骤204、结束恢复待恢复数据库。

步骤205、按照预设顺序依次获取redo日志中的一条redo记录作为当前redo记录。

步骤206、判断当前redo记录的类型是否为时间类型;若是,则执行步骤207;若否,则执行步骤208。

步骤207、根据当前redo记录解析得到对应的提交时间;并转入执行步骤209。

步骤208、根据当前redo记录恢复待恢复数据库;并转入执行步骤211。

步骤209、判断提交时间是否小于预设恢复时间;若是,则执行步骤210;若否,则返回执行步骤204。

步骤210、确定已将待恢复数据库恢复到提交时间对应的状态。

步骤211、判断当前redo记录是否为redo日志中最后一条redo记录;若是,则返回执行步骤202;若否,则返回执行步骤205。

本实施例的技术方案,通过监测到数据库恢复事件被触发时,获取待恢复数据库中目标归档日志文件目录,查找目标归档日志文件目录中是否存在redo日志,如果查找到目标归档日志文件目录中存在redo日志,则获取redo日志,redo日志包括至少一条redo记录,判断redo记录的类型是否为时间类型,如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态,并重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。解决了现有技术中redo日志数据处理量大以及数据库恢复效率低的问题,在减少redo日志数据处理量的基础上,提高了数据库恢复效率。

实施例三

图3为本发明实施例三提供的一种数据库恢复装置的结构示意图,本实施例可适用于恢复出现故障的数据库的情况,该装置可以采用软件和/或硬件的方式实现,该装置可以配置于设备中,例如典型的是计算机等。如图3所示,该装置具体包括:

redo日志获取模块310,用于监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录;

可选的,在上述技术方案的基础上,redo日志获取模块310,具体可以包括:

目标归档日志文件目录获取单元,用于监测到数据库恢复事件被触发时,获取待恢复数据库中目标归档日志文件目录;

redo日志查找单元,用于查找目标归档日志文件目录中是否存在redo日志;

redo日志获取单元,用于如果查找到目标归档日志文件目录中存在redo日志,则获取redo日志,redo日志包括至少一条redo记录。

可选的,在上述技术方案的基础上,redo日志获取模块310,具体还可以包括:

结束恢复确定单元,用于如果未查找到目标归档文件目录中存在redo日志,则结束恢复待恢复数据库。

时间类型判断模块320,用于判断redo记录的类型是否为时间类型;

已恢复确定模块330,用于如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态;

可选的,在上述技术方案的基础上,该装置具体还可以包括:

恢复待恢复数据库模块,用于如果redo记录的类型不为时间类型,则根据redo记录恢复待恢复数据库。

结束恢复确定模块340,重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。

本实施例的技术方案,通过redo日志获取模块310监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录,时间类型判断模块320判断redo记录的类型是否为时间类型,已恢复确定模块330如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态,结束恢复确定模块340并重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。解决了现有技术中redo日志数据处理量大以及数据库恢复效率低的问题,在减少redo日志数据处理量的基础上,提高了数据库恢复效率。

可选的,在上述技术方案的基础上,待恢复数据库具体可以包括:经备份还原后的数据库、待恢复数据库发生故障前的拷贝库或初始化的数据库。

本发明实施例所提供的配置于设备的数据库恢复装置可执行本发明任意实施例所提供的应用于设备的数据库恢复方法,具备执行方法相应的功能模块和有益效果。

实施例四

图4为本发明实施例四提供的一种设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备412的框图。图4显示的设备412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,设备412以通用计算设备的形式表现。设备412的组件可以包括但不限于:一个或者多个处理器416,系统存储器428,连接于不同系统组件(包括系统存储器428和处理器416)的总线418。

总线418表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

设备412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)430和/或高速缓存存储器432。设备412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统434可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储器428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储器428中,这样的程序模块442包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。

设备412也可以与一个或多个外部设备414(例如键盘、指向设备、显示器424等)通信,还可与一个或者多个使得用户能与该设备412交互的设备通信,和/或与使得该设备412能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口422进行。并且,设备412还可以通过网络适配器420与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器420通过总线418与设备412的其它模块通信。应当明白,尽管图4中未示出,可以结合设备412使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理器416通过运行存储在系统存储器428中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种数据库恢复方法,包括:

监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录。

判断redo记录的类型是否为时间类型。

如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态。

重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。

实施例五

本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的一种数据库恢复方法,该方法包括:

监测到数据库恢复事件被触发时,获取待恢复数据库中的redo日志,redo日志包括至少一条redo记录。

判断redo记录的类型是否为时间类型。

如果redo记录的类型为时间类型,且根据redo记录解析得到对应的提交时间小于预设恢复时间,则确定已将待恢复数据库恢复到提交时间对应的状态。

重复判断redo记录的类型是否为时间类型,直至提交时间大于预设恢复时间,则结束恢复待恢复数据库。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++、ruby、go,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1