专利名称:将储存库还原到先前状态的方法
技术领域:
本发明涉及数据管理系统,并且更特别地,涉及用于将一组数 据恢复到先前状态的 一支术。
背景技术:
在使用计算机时可能会产生许多问题。两种通常类别的错误包 括计算机引起的错误和操作者引起的错误。由于这两种类型的错误 的性质不同,被设计用于从计算机引起的错误恢复的技术未必能用 于从操作者引起的错误恢复。
例如, 一项用于在计算机引起的错误(诸如节点或进程故障) 之后恢复数据库的冲支术包括保存4喿作日志。特别地,保存重做日志 (redo log),使得由在故障之前提交的事务在易失性存储器中作出 的改变能够在故障之后持久保存在数据库中。类似地,保存撤消曰 志(undo log ),使得由不是在故障之前提交的事务作出的持久保存 的改变可以在故障之后—皮从数据库除去。
上述的基于日志的恢复技术不能处理操作者引起的错误的问 题,因为这些错误可以反映在由所提交的事务作出的改变中。即使当反映人员错误的所提交的事务后面跟有计算机引起的错误时,基 于日志的恢复操作仅仅能保证这些错误地执行的改变在从计算机 引起的错误恢复后继续反映在数据库中。因此,计算机引起的错误 的恢复4支术倾向于区别已才是交的改变和未^是交的改变,而不区别正 确的已提交的改变和错误的已提交的改变。
与计算机引起的错误的恢复技术相反,操作者引起的错误的恢 复技术集中在从数据库除去已提交的改变和未提交的改变。特别 地,操作者?I起的错误的恢复技术典型地集中在将数据库返回到存 在于在过去的特定点(优选地在包括操作者引起的错误的事务的提 交时间之前)的一致状态。例如, 一项操作者引起的错误的恢复技 术包括在特定时间点制作数据库的备份。如果操作者引起的错误在 该时间之后引入,可以通过还原到数据库的备份来将操作者引起的 错误"除去"。
当然,数据库管理员很少提前知道操作员引起的错误将被引 入。如果在最后的备份操作与错误的时间之间已经经过了很长时 间,则还原回备份的数据库,然后再次应用在备份操作之后但是在 《昔误之前发生的所有改变是非常不切实际和^[氐效的。
另一技术包括保存"镜像"数据库(mirror database),其状态 相对于原始数据库被延迟。在用户引起的错误的情况下,可以还原 到销7f象lt据库。然而,如果用于发现4晉误的时间大于延迟的持续时 间,则即使所延迟的镜像也将反映错误。此外,由于长的延迟将提 高及时发现错误的概率,其将同样增加与故障转移到镜像相关的低 效率。
另 一延迟的镜像技术包括保存多个延迟的镜像数据库,其中各 镜像数据库具有不同的延迟持续时间。带有不同延迟的多个镜像的 使用增加了至少一个镜像将表示在错误的时间之前但是不太久前的状态的可能性。然而,同可以用于该目的的资源相比,保存这样 的镜像消耗了更多的资源。可选的冲支术包括在支持"快照(snapshot)"的存储器子系统上 存储数据库,然后使用子系统的快照机制将存储器子系统还原回在 错误之前的快照时间。例如,存储器子系统可以设定特定的"快照 时间"T5。在T5之后,子系统中的块(block)的各个改变通过以 下方式处理(1 )确定该块在T5之后是否已经:波改变,并且如果 没有,那么(2)在对该块作出改变之前,从子系统中读取块的改 变之前的版本并将其复制到与T5快照相关联的特殊分离"快照存 储器"。使用该技术,通过将块从T5快照存储器复制回其在存储器 子系统中的对应块,可以将存取器子系统返回到其在时间T5存在 的状态。此外,即使在不将存〗诸器子系统还原回其前状态(prior state) 的情况下,当进程或事务想要看特殊的块时,也可以通过执行以下 的步骤允许进程或事务看子系统在时间T5的状态(1 ),如果特殊 块的拷贝在T5快照存储器中,则从T5快照存储器中提供特殊块的 拷贝,以及(2)只有当在T5快照存储器中没有块的拷贝时才从存 储器子系统提供特殊块的拷贝。快照技术提供了精确的结果,但是这是通过将潜在地巨大管理 量强加于所有的写入操作来实现的。特别地,当在任意快照时间之 后对4壬意块的第一次更新时,块的更新之前的图^f象必须;陂读耳又,然 后写出到适当的快照存储器。此外,当数据库管理员必须将存储器 子系统返回到先前状态时,管理员仅神皮限于那些快照时间被明确地 ^殳定的状态。操作者引起的错误仅仅是一种不容易通过应用生理撤消 (physiological undo)除去的错误。例如,当试图从逻辑数据不纯(data corruption )恢复时可能会产生困难。例如,类似于操作者引 起的错误,如果再次应用重做(redo),这样的不纯可以被简单地"重 放(replay ),,。基于前文所述,显然希望提供一种机制和冲支术,用于以不存在 在该部分中描述的方法中固有的效率或资源消耗问题的方式从可 重放错误恢复。在该部分中描述的方法是可才丸4亍的方法,^旦不必是以前已经想 到或才丸4亍的方法。因此,除非指出,否则不应^又因为在该部分中描 述的任何方法包括在该部分中,就^人为其为现有一支术。
通过附图中的实例来描述本发明,但是不局限于此,在附图中 相同的参考标号表示类似的元件,其中图1A-1C是示出根据本发明的实施例的具有闪回(flashback) 曰志的系统的才匡图;图2是示出根据本发明的实施例的嵌入闪回日志的门标记的才匡 图;以及图3是示出可实施本发明实施例的计算机系统的框图。
具体实施方式
本发明描述一种用于将储存库(repository)还原到前状态的技 术。在下面的描述中,为了解释的目的,描述了多个特定的细节, 以对本发明有彻底的了解。然而,4艮显然,在没有这些特定细节的情况下,本发明也可以^皮实i见。在其它的实例中,以冲匡图形式示出 已知的结构和设备,以避免不必要地才莫糊本发明。功能扭无述在本文中描述的技术用于将储存库返回到前状态。根据一个实施例,该〗渚存库为^:据库,并且前状态是凄t据库在过去特定时间点 具有的一致状态。特别地,前状态是数据库在其中反映由在特定时 间点之前4是交的事务作出的所有改变,并且不反映由在特定时间点 之前未提交的事务作出的改变的状态。在另一实施例中,储存库是 万兹盘上的一个或多个文件。当操作者引起的错误通过由已经提交的事务作出的改变引入 到数据库中时,本文中描述的^支术可以用于通过将数据库返回到? 1 入错误的事务被提交时间之前的时间点来从错误恢复。该技术包括 产生成"物理撤消(physical undo)"信息,并且结合生理撤消 (physiological undo )和生理重做(physiological redo )使用物理撤 消信息,以有效地将储存库返回到前状态。物理撤消物理撤消包括将存储器单元返回到先前状态所必需的信息。术 语"块(block)"在本文中将用于表示为了维持物理孩t消而作为原 子单位看待的存储单元。本文中描述的技术不限于任何特定大小或 间隔尺寸的块。根据一个实施例,块的物理撤消是块的更新之前的图像。已更 新的块的更新之前的图像可以用于仅仅通过用块的更新之前的图 像重写已更新的块来将已更新的块返息的一种形式,并且在本文中描述的技术不限于任何特定形式的物 理撤消。使用在本文中描述的技术,将已更新的块写入磁盘的每项操作 均不会引起用于获得块的更新之前的图像的磁盘读取操作的额外 管理。相反地,当数据库服务器执行更新时,数据库服务器通常已经具有在易失性存^f诸器中的块的拷贝。因此,物理#:消的发生可以仅仅包括在更新第 一拷贝之前在易失性存储器中生成块的第二拷 贝。如下面更加详细描述的,更新之前的第二拷贝在稍后的时间冲入(flush)磁盘,但是不迟于块的已更新的图像冲入磁盘的时间。 生理撤消生理撤消包括将单独的逻辑信息片(piece)恢复到先前状态所 必需的信息。例如,在关系型数据库系统中,如果表的一行被更新, 则可能会产生生理撤消记录。在这种情况下,生理招t消记录将包括 用于将该行返回到其更新之前的状态的信息,但是可能不包括关于 可能碰巧同已更新的行存在于相同的数据块中的其他数据项的状 态的信息。同生理拍t消相比,物理招i消具有优势。物理招t消的应用通常是 成功的,这是因为其不需要关于应用之前的图像的任何假设。因此 物理撤消总是能取消逻辑数据不纯。另一方面,如果应用之前的图 像不是自相一致的,则生理撤消的应用可能会失败。 一个块可能由 于存储器不纯、软件程序错误等而变得自相不一致。生理重做与生理撤消相类似,生理重做存储关于逻辑数据项的改变的信 息。然而,虽然生理招"肖存储关于如何撤消逻辑数据项的改变的信 息,但是生理重做存储关于如何再次执行逻辑数据项的改变的信息。其中,使用生理重做以再次执行由已提交的事务作出的改变,其中这些改变在计算机引起的错误产生时尚没有存储到永久性存储器中。如上所述,为了从计算机引起的错误恢复,许多数据库系统支才寺生J里招丈消禾口重估文。在才示题为"Method And Apparatus For Improved Transaction Recovery"的美国专利第5,850,507号中描述了生理重做 和撤消机制的实例,其内容结合于此作为参考。然而,本文中所述 的技术不限于任何用于支持生理重做和撤消的特定机制。才艮据本发明的一个实施例,储存库在两个相位上寻皮返回到先前 状态,本文中指的是"物理恢复相位"和"生理恢复相位"。例如, 假设用户想要将储存库还原回在特定时间点("目标时间")存在的 状态。在物理恢复相位期间,物理撤消用于将所有与储存库相关的 万兹盘块返回到其在某时间点("物理恢复时间")的物理状态。在生 理恢复相位期间,生理重做和招"肖用于将在储存库中的逻辑信息从 其在物理恢复之后的状态移动到与目标时间相关的一致状态。应当注意,即4吏当物理恢复时间是目标时间时,生理恢复相4立 对于将块中的逻辑数据返回到 一致状态而言可能仍是必需的。例如,在时间T5,给定的块可能(1)包括由到时间T5为止还没有 提交的事务作出的改变,并且(2)错过由已经在T5之前提交的事 务作出的改变。因此,将块返回到其在时间T5的物理状态,并不 必然将在块上的逻辑lt据项返回到其在时间T5的一致状态。因此, 生理重做被应用于,将由已经在T5之前提交的事务作出的任何错 过的改变添加到块的T5图像。类似地,生理招"肖被应用于,从块 的T5物理图^象除去任何由到时间T5为止还没有^是交的事务作出的 改变。门才艮据一个实施例,用于管理储存库的系统建立特殊时间点,本文中称为"门(gate)",并为其产生物理拍t消。为了解释的目的, 々li殳储存库是数据库。在这样的实施例中,管理储存库并建立门的 系统是数据库服务器。为门产生的物理撤消用于将存储储存库的块返回到其在与门 相关的时间存在的物理状态。例如,如果门Gl为时间T5而建立, 则为门Gl产生的物理招t消具有用于将块返回到其在时间T5或在时 间T5之前存在的物理状态的信息。在一个实施例中,Gl的物理撤 消包4舌在T5之后更新的所有块的更新之前的图l象。块的更新之前 的图像包括块中的所有数据,即使更新可能仅改变存储在块上的多 个逻辑数据项的一个。因此,可以仅仅通过用块的相应的更新之前 的图〗象重写块的已更新的版本来将储存库的块返回到其在T5的物 理状态。根据一个实施例,当块在与门相关的时间之后被第一次更新 时,通过存储块的更新之前的图像来建立门的物理重做(physical redo)。特别地,响应于(1 )在门时间之后(2)为自门以后没有被 预先更新的任意块作出的任意更新而产生更新之前的图像。这样的 更新在本文中称为"门后第 一次更新(first-after-gate update )"。例如,^殳想门Gl与时间T5相关耳关。4艮i殳块在T5之后3皮更新。 如果块在T5之后已经一皮更新,则该更新不是门后的第一次更新, 并且没有物理招t消响应于该更新为Gl产生。另一方面,如果块在 T5之后,皮第一次更新,则该更新是门后第一次更新,并且产生块的 更新之前的图像作为门Gl的物理撤消。多种技术可以用于识别哪些更新具有门后第 一次更新的资格。例如,可以将时间戳(timestamp );故在各块的首部中,以指示块净皮 更新的最后时间。如果正^皮更新的块的块首部中的时间翟乂高于门的 时间戳,则一些处理已经在门后更新了块至少一次,因此当前更新 不是门后第一次更新。另一方面,如果正一皮更新的块的块首部中的 时间戳低于门的时间戳,则当前更新是门后第一次更新。可选地, 数据可以被存储在易失性存储器中,以指示在最近的门之后哪些块 已经被更新。本发明不限于用于识别哪些更新有资格作为门后第一 次更新的任何特定技术。闪回日志、根据一个实施例,门的物理招t消记录作为条目存储在"闪回曰志中。正如下文中将更详细描述的,单个的闪回日志可用于存储 与许多门相关联的更新之前的图像,其中标记用于使闪回日志中的 位置与特殊的门相关联。图la才艮据本发明的实施例示出系统100,将结合系统解释用于 管理物理撤消的技术。参照图la,系统100包括易失性存储器102 和非易失性存储器104。非易失性存储器104包括用于存储数据的 储存库112。储存库112可以是,例如,由数据库服务器管理的数 据库,并且本文中描述的用于管理、维持、和使用物理撤消的操作 可以由数据库服务器中的程序自动执行。然而,本文中描述的技术 可以应用于可能需要被返回到先前状态的任意类型的储存库,并因 此不限于传统的lt据库力l务器环境。除了卩诸存库112之外,非易失性存储器104包括闪回日志106。 闪回日志106用于存储条目(entry,入口 )(例如,条目140、 142、 144),该条目(1 )对应于储存库112中的块,并且(2)包括用于将相应的块返回到前状态的信息。根据一个实施例,闪回日志106中的各个条目包括储存库112中的相应的块的更新之前的图像。易失性存储器102包括块緩存(block cache) 110和闪回曰志 緩存108。块緩存110保存来自储存库112的块的拷贝。例如,对 于从储存库112的块120读取数据项的过程,块120的拷贝122载 入到易失性存储器102中的块緩存110中。如果该过程然后更新该 数据项,则该更新将最初,皮反映在块120的緩存的拷贝122中,而 不是反映在存在于非易失性存储器104中的块120中。易失性存储器102进一步包括闪回日志緩存108。闪回日志緩 存108用于存4诸闪回日志条目(例4口,条目130、 132和134 ),该 条目已经被设立但是还没有沖入非易失性存储器104中。例如,如 果块120的拷贝122将一皮l多改,可能有必要生成包4舌块120的更新 之前的图Y象的闪回日志条目(例如,图1B中的条目136)。闪回日 志条目最初将被存储在闪回日志緩存108中,然后沖入位于非易失 性存4诸器104上的闪回日志106中。在图1C中,响应于一皮沖入非 易失性存储器104的条目136,条目146已经被添加到闪回日志106。预期的物理撤消生成在上述的实施例中,响应于(1)在门之后(2)为在该门之后 没有—皮预先更新的块而作的每个更新,产生闪回日志条目。遗憾的 是,该技术导致在闪回日志条目(其在任意给定的门之后必须立即 被产生)的数量中产生"毛刺(spike )"。特别地,实际上在经过门 之后立即发生的所有更新都是门后第一次更新。因此,紧跟在门之 后,需要生成闪回日志条目的更新操作的百分率实际上是100%。 自初始毛刺之后,由于在门之后已经被更新的块将要更新的百分率 增加,因此需要生成闪回日志条目的更新的百分率将下降。根据一个实施例,通过执行预期的物理撤消生成,降低了毛刺 的凄t量。特别地,闪回日志条目为不是门后第一次更新的更新而生 成。相反地,闪回日志条目是在恰好在与该门相关的时间之前的门 时而生成。这样的闪回日志条目,在本文中称为"预期条目",减 少了当到达门时产生的毛刺,这是因为,不需要为具有预期条目的 块的门后第一次更新生成另外的闪回日志条目。才艮据一个实施例,在实际门之前建立预期门(anticipatory gate )。 然而,与实际门不同,在预期门之后为块作出的第一次更新不能自动生成闪回条目。相反地,在预期门之后生成闪回条目是可选的。 在这些情形下是否生成条目可能取决于多个因素,诸如系统的工作 量以及资源的有效性。例如,是否有闪回条目响应于在预期门之后 作出的更新而生成,可能取决于在闪回日志緩存108中有多少空间 是当前可用的。又例如,系统可以^U又生成全部预期门后第一次更 豸斤(first—after-anticipatory-gate updates )的石角定百分率(1"列长口50%) 的闪回条目。这些因素仅仅是可用于确定是否为预期门之后的更新 生成闪回条目的因素的实例。本文中所描述的技术不限于因素的任 何特定集合。当已经为门生成预期闪回条目时,预期闪回条目可能不反映相 应的块在与门相关的时间的状态。例如,假设G1与时间T5相关, 并且在时间T3发布(publish ) Gl的预期门。在T3和T5之间生成 的所有预期闪回条目将反映块在T3和T5之间的某时间点的状态, ^f旦并不必然反映;t夹在时间T5的爿犬态。例如,块B1可以在时间T4被更新,这使得预期闪回条目将被间T5,贝'j Bl的预期闪回条目将实际将块B1还原回时间T4。因此, 当使用预期门时,储存库在物理恢复相位后将是"模糊的(fuzzy )"。特别地,在物理恢复相位之后, 一些块将反映其在时间T5的物理状态,并且其他的块将反映其在时间T3和T5之间的物理状态。预期门的使用仅仅是可能引起这样的"模糊"的技术的一个实 例。例如,在下文中描述的用于多服务器系统的双相位广播技术同 样可能产生反映在与相应的门相关的时间之前的状态的更新之前 的图像。同样,当门与物理撤消的产生"同时"发生时,物理撤消 可以被分配在门之前的时间戳。然而,不考虑这些原因,当所有的 逻辑数据项从其当前所处的任何状态返回到目标状态时,"模糊,,在生理恢复相位期间 一皮消除。 门标记如上所述,闪回条目最初存〗诸在闪回纟爰存108中,并周期性的 沖入位于非易失性存储器104上的闪回日志106中。4艮据一个实施 例,单个闪回日志106可用于多个门,其中标记(在本文中称为"门 标记") 一皮插入闪回日志106 ,以指示与特定门相关的条目的启动。图2是示出才艮据本发明的实施例的已经放置(populate)的闪 回日志200的框图。参照图2,由于闪回条目^皮从緩存沖入永久性 存储器,因此闪回日志200顺序放置(在所述实施例中,从左到右)。才艮据一个实施例,门标记存4诸在闪回日志200中,以^更于应用 与给定的门相关的闪回条目。在所述的实施中,闪回曰志200包括 与时间T500的门G5相关的门标记202,以及与时间T600的门G6 才目关的门才示i己204。门标记链才艮才居一个实施例,闪回日志200中的不同门标记链接在一起, 使得它们可以在闪回日志中被快速定位。在示出的实施例中,每个门标记均包括到紧接在前面的门标记的链接,并且控制文件206包 括到最新存储的门标记的《连4妻。当以这种方式链接时,通过跟随控制文件206中的链接,任何给定的门标记可以快速地被定位于最新 的门标记,然后跟随门标记中的链接回到预期的门标记。例如,为 了定位门标记202 , ^吏用控制文件206中的链接来定位门标记204, 并4吏用门标记204中的《连4妻来定位门标记202。当新的门标i己一皮添力口到闪回日志200中时,门标i己《连通过如下 方式保持使新门标记指向当前由控制文件指向的门标记,然后使 控制文件指向新近插入的门标记。例如,如果新门标记一皮添力。到闪 回日志200中,则该新新标i己爿夸具有到门204的《连4妾,并且控制文 件206中的4连才妻一寻,皮更新以指向新门标i己。门标记的使用才艮据一个实施例,用于特定门的门标记可以实现多个目的,包 括(1)标记闪回日志中的位置以及(2)识别生理重做日志中的 位置。在一个实施例中,闪回日志中的门标记的位置指示从哪里开 始处理闪回条目,以将4诸存库返回到与相应的门相关的时间。例如, 为了将储存库返回到与时间T500相关的物理状态,可通过从条目 220开始一直到位于闪回日志末端的条目228来处理闪回日志200。 另一方面,为了将储存库返回到与时间T600相关的物理状态,可 通过从条目222开始一直到位于闪回日志末端的条目228来处理闪 回日志204。在可选实施例中,使用门标记中的指针而不是门标记本身的位 置,来识别在相应的门时处理闪回日志的开始位置。通过^吏用指针 来指示闪回日志中的开始位置,门标记本身存储的顺序对于闪回日 志而言是无关紧要的。例4口,当闪回日志在^立置P1时,可以发布 与时间T500相关的门Gl。如果门标记的位置将被用于识别开始处理的位置,则必须提供一些机制以确保在用于Gl的门标记之前没有与Gl相关的闪回条目存储在闪回日志中,使得用于Gl的门标 记存储在位置P1。然而,如果使用指针,则在用于G1的门标记之 前在Gl时产生的其它闪回条目可以被沖入磁盘。存储在闪回曰志 的P1之后某处的用于G1的门标记,将仅包括用于指示位置P1的 指针。当处理闪回条目时,储存库的对应的块^皮还原回闪回条目中的 图像,除非该闪回条目反映比与被用于还原储存库的门相关的时间 更晚的更新。例如,如果闪回条目220和222均对应于相同的块 B1 ,并且储存库被还原回与门G5相关的时间T500,则块B1将基 于闪回条目220被还原,但将不会基于闪回条目222被还原,这是 因为闪回条目将反映在T500之后对块B1作出的更新。在上面《合出的实例中,门标记用于指示应用闪回条目的开始位 置。在可选的实施例中,闪回条目可以以逆序^皮应用,从最新的条 目开始并继续到适当的门标记(或由在门标记中的指针指示的位 置)。在这些情况下,门标记或指针指示在哪里停止处理闪回条目。 同样,当闪回日志从最新到最老被处理时,当与条目相关的时间戳 比被用于恢复的门的时间更近时, 一个闪回条目被跳过。例如,在 条目220和222均对应于相同的块Bl,并且储存库被还原回与门 G5相关的时间T500的情况下,由于条目222将与比时间T500更 大的时间戳相关联,其将被跳过。换言之,由于在条目222中反映 的块B1的图像包括在时间T500后作出的改变,因此条目222将被 跳过。另一方面,由于条目220将与在时间T500之前的时间戳相 关联,并将反映块Bl在T500之前某时间的物理图像,因此条目 220 一寻一皮应用。如上所述,闪回条目可以以时间顺序或逆时间顺序一皮应用。事 实上,闪回条目可以以任意顺序净皮处理。如果有用于具有比与被用于还原储存库的门相关的时间更早的时间戳的块的多个闪回条目, 则来自任意一个条目的图像同块的在"物理恢复相位"之后的恢复 图像一样好。以任意顺序应用闪回条目的能力在能够并行应用闪回 条目的系统中尤其有用,从而进一步提高了恢复操作的效率。例如, 需要一皮应用的闪回条目的子集可以^皮分配》会多个过禾呈。这些过程的 每个然后可以使其指定的闪回条目具有与其他处理的最小配合。如上所述,在一个实施例中,各门标记还包括指向生理重做日 志中的位置的指针("重做指针")。特别地,存储在门标记中的重做指针指示生理重估文日志250中的在储存库已经一皮还原回与门标记相关的门之后开始处理重做记录的位置。例如,假设储存库将被返回到时间T550。在物理恢复相^立期间,在目标时间T550或在目标 时间T550之前的第一门被识别。在当前实例中,门标记链被跟随 回到对应于时间T500的标记202。在门标记202之后的闪回条目然 后被用于将储存库还原回其在时间T500的物理状态。在物理恢复相^立之后,4诸存库将反映块在时间T500或在T500 之前的物理状态。因此,由在T550之前提交的事务作出的改变中 的一些,可能不一皮反映在j诸存库在时间T500的物理状态中。为了 使这些改变被反映,从重做日志250中的由门标记202的重做指针 指示的位置开始,使用生理重做记录。重做记录的使用将储存库中 的逻辑数据项向前滚动到其在时间T550时的一致状态。同样在生 理恢复相位期间,生理撤消被应用于将(1 )在物理图像中,但(2 ) 由在时间T550时尚未提交的事务作出的任何更新从逻辑数据项中 去除。多服务器系统在一些^:据库系统中,多个^:据库月l务器可能可以进入相同的 数据库。根据一个实施例,可以进入数据库的各个数据库服务器保存其自己的用于恢复tt据库的日志集合,包括闪回日志和生理重做:日志。该多个^t据库服务器还可以具有分离的生理^:消日志,或者 可以有单个由全部数据库服务器共享的生理撤消日志。为了将数据库还原回先前状态,可能需要来自所有服务器的所有日志的恢复信 息。例如,在特定的门G3之后, 一个服务器Sl可能对块B1执行 门后第 一次更新,另 一服务器S2可能对块B2执行门后第 一次更新, 并且另一服务器S3可能对块B3执行门后第一次更新。在这些情形 下,如果^:据库将一皮还原回门G3,则来自S1的闪回日志的闪回记 录将必须一皮应用到Bl ,来自S2的闪回日志的闪回记录将必须被应 用到B2,并且来自S3的闪回日志的闪回记录将必须被应用到B3。遗憾的是,多个服务器之间的通信不是瞬时的。服务器间通信 中的时间延迟能够引起关于门的建立的同步问题。例如,假设服务 器S1建立与5pm相关的门G3。如果服务器间通信是瞬时的,则在 时间5pm服务器Sl可以发布门G3,并且S2和S3将准确地在G3 之后开始为所有门后第一次更新生成闪回条目。然而,G3的通知 可能直到5pm之后一秒才到达S2,并直到5pm之后三秒才到达S3。 因此,G3将4昔过由S2在5pm和5pm之后一秒之间作出的更新的 闪回条目。类似地,G3将4晉过由S3在5pm和5pm之后三秒之间 作出的更新的闪回条目。才艮据一个实施例,通过使用双相位过程建立门解决了该同步问 题。在第一相位期间,被指定为"协调器(coordinator)"的服务器 向所有其他服务器发送"开始记录(begin-logging)"消息。响应于 该开始记录消息,各其他服务器(1)向协调器发送指示在其闪回 日志中的当前插入点的位置的响应消息,并(2)开始为其作出的 每个更#斤生成闪回条目。例如,假设S2接收到来自Sl的开始记录消息,并且S2的闪 回日志中的当前插入点是S2-POSl。响应于该开始记录消息,S2( 1 )发送响应到Sl,指示其当前位置S2-POS1,并且(2)开始为其作 出的每个更新生成闪回条目。类似地,当S3接收到来自Sl的开始 记录消息时,如果S3的闪回日志中的当前插入点是S3-POSl,则 响应于该开始记录消息,S3 ( 1 )发送响应到Sl,指示其当前位置 S3-POS1,并且(2)开始为其作出的每个更新生成闪回条目。当协调器已经接收到来自所有其他服务器的响应时,协调器 (1)建立与不比>^妾收到最后的响应的时间早的时间相关的门,并 且(2 )为该门生成标记。例如,布i设S1在5pm 4妾收到最后的响应, 并且建立与该时间5pm相关的门G3。在建立该门之后,十办调器向 其他服务器发送"门已建立(gate-established ),,消息。该门已建立 消息指示与该新门相关的时间。由于新门的建立时间必定在月l务器 开始生成闪回条目的时间之后,因此闪回条目将为由服务器作出的 所有门后第一次改变而存在,而不考虑它们何时接收到门已建立消 ,自、响应于接收门已建立消息,其他服务器停止为所有更新生成闪 回条目,并开始4又为门后第一次更新生成闪回条目。返回到当前的实例,S2和S3 4妄收到来自Sl的指示G3在5pm 一皮建立的门已建 立消息。S2和S3 4亭止为所有更新生成闪回条目,并开始为在5pm 之后对任何给定的块作出的第一次更新生成闪回条目。上述的双相位门创建技术避免了与同步相关的问题,这是因 为,即使服务器在与门相关的时间之后接收到门已建立消息,该服 务器将已经为在与门相关的时间和服务器接收到门已建立消息的 时间之间作出的任何改变生成了闪回条目。例如,即-使S2在5: Olpm 接收到G3的门已建立消息,S2将已经为在5:00pm(该时间相关于 门G3)之后作出的所有更新生成了闪回4言息。如上所述,协调器为其建立的门生成门标记。根据一个实施例, 除了在多服务器环境中门标记包括指示在其他服务器的闪回曰志 中与该门相关的位置的数据外,为在多服务器环境中的门生成的门 标记类似于在单服务器环境中生成的门标记。例如,存储在Sl的闪回曰志中的门G3的闪回才示i己,包4舌指示在S2的闪回曰志中的 S2-POS1和S3的闪回日志中的S3-POS1的凄丈据。因此,当才艮据G3 寺丸4亍物理恢复时,G3的标记^1夺指示在Sl、 S2和S3的每个的闪回 日志中乂人哪里开始处理闪回条目。在可选实施例中,特定门的门标记可以》文在各个分离的闪回曰 志中。例如,存储在Sl的闪回日志中的门G3的闪回标记,将指示 在S1的闪回曰志中的与门G3相关的^立置。门G3的分离的闪回标 记将一皮存储在S2的闪回日志中,并指示位置S2-POSl。门G3的另 一个闪回标记将被存储在S3的闪回日志中,并指示位置S3-POSl。根据其中单个门标记被用于为所有服务器指示门位置的实施 例,服务器通过发送其在其各自的闪回日志中的当前位置以及其在 其生理重估文日志中的当前4立置来响应开始i己录消息。两4分信息均可 以存储在门的标记中。因此,当数据库根据门被还原到先前物理状 态时,门标记中的信息将不仅指示在多个闪回日志中从哪里开始处 理闪回条目,还指示在多个生理重估夂日志中乂人哪里开始处理重估文条 目。时序为了确保储存库的完整性,必须以特定的顺序执行某些操作。 由一个实施例^吏用的可以用于闪回日志维持才喿作的时序依赖 (timing dependency ) 包括在块的已更新的拷贝沖入非易失性存储器之时或之前,含有块 的更新之前的图像的闪回条目必须被沖入非易失性存储器。例如,参照图1C,闪回条目136必须在块120的修正拷贝124被冲入储 存库112之时或之前, 一皮沖入闪回日志106。用于反映在块的前图<象(prior image )中的所有改变的重做条 目必须在含有前图像的闪回条目被沖入非易失性存储器之时或之 前, 一皮沖入非易失性存储器。例如,布Ii殳块Bl在4:49pm被更新, 使得重做记录Rl将被生成。进一步假设为块Bl的门后第一次更新 生成闪回条目Fl,其中引起F1生成的门G3与5pm相关。在这些 情形下,包含在F1中的B1的前图4象将反映在4:49pm作出的改变。 因此,Rl必须在F1被冲入非易失性存储器的时间之时或之前被沖 入非易失性存储器。一项用于确<呆用于改变的重估l在反映改变的前图〗象一皮冲入非 易失性存储器之前被冲入非易失性存储器的技术包括在门被建立 的时候,将与在门之前作出的改变相关的所有重做冲入非易失性存 储器。因此,当G3在5pm被建立时,与在5pm之前作出的改变相 关的所有重做被冲入非易失性存储器。因此,G3的闪回条目将不 反映重做信息还未在非易失性存储器上反映的任何改变。最优化多种技术可以:故用于改善如本文中描述一样寺丸4亍的恢复才喿作的执行。例如,假设还没有数据被存储在块B1上。如果B1的第一 次更新是门后第一次更新,则将用Bl的更新之前的图4象生成闪回 条目。在这种情况下,然而,Bl的更新之前的图4象不含有任何有 用的信息。因此,当对未存储任何须被保留的信息的块作出门后第 一次更新时,产生特殊的闪回条目。该特f朱的闪回条目不含有块的完整的更新之前的图像,而是仅仅识别块以及指示该块不含有任何 需要的信息。如另一个实例,在一些情形中,诸如在插入(INSERT )操作 的情形中,当在块上执行门后第一次更新时,块的前版本可能还没 有在易失性存储器中。在这些情况下,块的前图像通常必须被从非 易失性存4诸器中读耳又,以生成用于更新的闪回条目。然而,如果知 道块的前图像不含有必须被记录的任何信息,则可以避免从非易失 性存储器读取前图像的必要。根据一个实施例,如果块为已经在随 后一皮耳又消(drop)的结构(诸如表)预先存储了数据,则确定该结 构是否在与该数据库可能被还原到的最老的门相关的时间之前被 取消。如果该结构是在与该数据库可能被还原到的最老的门相关的 时间之前^皮丢弃,则不需要乂人万兹盘读耳又前图像。相反,特殊的闪回 条目可被用于识别块,并指示该块不含有任何需要的信息。例如,如果块预先存〗诸在一周前耳又消表的部分,并且该凄t据库 所需的最老的门是两天以前,则该块属于在与凄t据库可能纟皮还原到 的最老的门相关的时间之前被取消的结构。因此,不含有块的前图 Y象的特1木闪回条目可以—皮用于该块。另 一项可被用于保存资源的技术包括将物理和生理撤消日志 组合成单个的撤消日志,该单个的撤消日志包括将储存库还原回一 致状态的足够的信息。使用组合的撤消日志可以避免在分离的物理 和生理撤消日志中保存的信息之间的大量冗余。可选地,可以通过 ^又在生理招t消不具有将块还原回前状态的足够信息的情形下生成 闪回条目来避免这样的冗余。生理4敬消不具有足够信息的特殊情况将随着执行的变化而变化,并且,例如,由被更新的块的特殊类型 而决定。根据另 一技术,含有文件的标题信息的块被同存储构成文件的 内容的数据的块区别对待。根据一个实施例,为文件标题块生成的 闪回条目不含有标题块的全部前图像。相反地,文件标题块的闪回条目描述文件的元变化,并被逻辑应用于文件,而不是完全的重写 相应的文件标题块。例如,这样的闪回条目可以指示文件在特定的 时间点一皮扩展。这才羊的闪回条目的应用包4舌将文件退回到其原始边 界。类似地,闪回条目可为储存库指示文件的添加。闪回条目的应 用包括删除所添加的文件。硬件描述图3是框图,示出了可应用本发明的实施例的计算机系统300 。 计算才几系统300包4舌用于传递^(言息的总线302或其它通信装置、以 及用于处理信息的、与总线302连接的处理器304。计算机系统300 还包括主存储器306,例如随机访问存储器(RAM)或者其它动态 存储装置,与总线302连接,用于储存信息及处理器304要执行的 指令。主存储器306还可用于在处理器304执行指令过程中,储存 临时变量或其他中间信息。计算机系统300还包括只读存储器 (ROM) 308或者其他静态存储装置,与总线302连接,用于储存 静态信息和处理器304要执行的指令。还提供了存储装置310,如 》兹盘或光盘,与总线302连接,用于储存信息和指令。计算才几系统300可以经由总线302连"t妻到显示器312,如阴相^ 射线管(CRT),用于向计算才几用户显示信息。包括字母数字键和其 他4建的输入装置314与总线302相连,用于传递信息和命令选择到 处理器304。另一种用户输入装置是光标控制316,如鼠标、跟踪 球、或光标方向键,用于传递方向信息和命令选择到处理器304并 用于控制显示器312上的光标移动。这个^T入i殳备通常在两个轴上 (第一个轴(例如X轴)和第二个轴(例如Y轴))具有两个自由 度,使装置能指定平面上的位置。本发明涉及计算机系统300的使用,用于执行在此描述的技术。根据本发明的一个实施例,由计算机系统300响应于执行包括在主 存4诸器306中的一个或多个指令的一个或多个序列的处理器304, 来实现这些技术。这样的指令可以从诸如存储设备310的其它计算 机可读介质读入主存储器306。通过执行包括在主存储器306中的 指令序列,使处理器304执行此处所述的处理步骤。在可选实施例 中,石更连线电^各(hard-wired circuitry )可耳又^R^id牛指令或者与專欠件 指令结合来实施该发明。因此,本发明中的实施例将不限于硬件电 ^各和软件的任<可特定组合。这里使用的术语"计算机可读介质"是指参与提供指令至用于 执行的处理器304的任何介质。这种介质可以采取很多形式,包括 但不限于非易失性介质、易失性介质和传递介质。非易失性介质举 例来说包括光盘或磁盘,如存储装置310。易失性介质包括动态存 储器,如主存储器306。传输介质包括同轴电缆、铜线、和光纤, 包括组成总线302的导线。传输介质还可采耳又声波或光波形式,例 如那些在无线电波和红外线数据通信过程中产生的声波和光波。通常形式的计算机可读介质包括如软盘、软性盘、硬盘、磁带, 或者任何其它》兹性介质、CD-ROM、任何其它光介质、打孔纟氏、纸 带、或者任何带孑L图样的物理介质、RAM、 PROM、 EPROM、 FLASH-EPROM、或者其他任何存^^芯片或者盒式》兹带,或者以下 提到的载波、或者计算机可读的任何其他介质。各种形式的计算机可读介质可参与承载一个或者多个指令的 一个或多个序列到处理器304用于寺丸4亍。例如,指令开始可承载在 远程计算机的》兹盘中。远程计算机可以将指令加载到其动态存储器 中,然后使用调制解调器通过电话线发送信息。计算机系统300本 地的调制解调器可接收电话线上的数据,并使用红外发射器将数据 转换成红外信号。红外探测器可以接收红外信号携带的数据,合适的电路可以把信息放到总线302上。总线302把数据传递到主存储 器306中,处理器304从主存储器取回并执行这些指令。在处理器 304执行这些指令之前或之后,主存储器306接收的指令可随意地 储存于存储装置310中。计算机系统300还包括连接到总线302的通信接口 318。通信 接口 318提供双向数据通信,连接到与局域网322相连的网络链路 320。例如,通信接口 318可以是综合业务数字网(ISDN)卡或者 调制解调器,用于提供到相应类型电话线的数据通信连接。又如, 通信4妾口 318可以是局域网(LAN)卡,用于冲是供至兼容局域网 (LAN)的数据通信连接。也可以使用无线链路。在任何这样的实 施中,通信接口 318发送和接受承载表示各种信息的数字数据流的 电信号、电磁信号和光学信号。网络链路320通常可通过一个或者多个网络才是供数据通信给其 它数据装置。例如,网络链路320可通过局域网322与主机324连 接,或者与互联网服务提供商(ISP) 326操作的数据设备连接。ISP 326又通过目前通称为"互联网"328的全球分组数据通信网络提 供凄t据通信服务。局域网322和互if关网328都4吏用承载数字数据流 的电信号、电磁信号或光学信号。这些信号,如通过各种网络的信 号,网络链^各320上的信号,通过通信接口 318的信号,都传送数 字数据给计算4几系统300或者传送来自计算片几系统300的数字凄t 据,是传输信息的载波的示范性形式。计算才几系统300能通过网络、网络《连^各320和通信4妻口 318发 送消息和接收数据(包括程序代码)。例如,在互联网的例子中, 服务器330可通过互联网328、 ISP 326、局域网322、和通信接口 318,传送所请求的用于应用程序的程序代码。当代码被接收和/或储存在存储装置310上或者其它非易失性介质上用于随后#1行时,处理器304可4丸行所接收到的代码。按照 这种方式,计算才几系统300可以以载波的形式获得应用〗戈码。上所述4又为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种将储存库返回到目标前逻辑状态的方法,所述方法包括接收将所述储存库返回到所述目标前逻辑状态的请求,其中,所述目标前逻辑状态在目标时间点处是所述储存库的一致状态,并且其中,所述目标前逻辑状态在所述储存库的最近逻辑状态之前;响应于所述请求,执行如下步骤对持久存储在所述储存库中的数据应用撤消,其中,所述撤消包括将所述数据返回到先前状态所必需的信息,并且其中,所述撤消的应用使得所述数据反映所述先前状态;以及在应用所述撤销之后,应用重做,以将所述数据从所述先前状态移动到所述目标前逻辑状态,其中,所述重做包括关于如何对所述数据重新执行改变的信息。
2. 4艮据^K利要求1所述的方法,其中,所述应用所述撤消的步骤包括为多个过程分配撤消记 录;以及所述多个过程相对于彼此并行的应用所述撤消记录。
3. 根据权利要求1所述的方法,其中,所述应用所述招t消的步骤-使得在所述储存库中的块反映 在所述目标时间点之前的时间;以及所述应用重估文的步马聚包4舌应用所述重#文,以将在所述j诸 存库中的所述H据在时间上向前移动到所述目标前逻辑状态。
4. 根据权利要求3所述的方法,其中,所述撤销是第一类撤销,其中,所述应用重估文的步骤包括在应用所述重估文之后,应用 第二类招t消,以乂人所述^:据的至少一些去除由在所述目标时间点时或在所述目标时间点之前还未才是交的事务作出的改变。
5. 才艮据权利要求1所述的方法,其中,所述对所述储存库中的所 述数据应用招t消的步骤包括对所述数据的第 一 集合应用与对应于特定时间点的门相 关的所述撤消,其中,所述门是产生所述撤消的特殊时间点; 以及对所述数据的第二集合应用与在所述门之前的预期门相 关的所述招"肖。
6. 根据权利要求5所述的方法,进一步包括为在所述预期门之后作出的 一 些但不是所有的预期门后 第一次更新产生所述^:消;以及除对在所述预期门之后为其产生所述撤消的数据作出的 更新之外,为在所述门之后作出的所有门后第 一次更新产生所 述撤消。
7. 根据权利要求6所述的方法,进一步包括当所述预期门后第 一 次更新被才丸行时,4艮据资源的可用 性确定是否为所述预期门后第 一次更新产生所述^:消。
8. 根据权利要求1所述的方法,进一步包括根据与特定时间点相关的门产生所述撤消;将所述招t消作为 一 系列闪回记录存4诸在闪回日志中;以及将使所述门与位置相关联的数据存储在所述闪回日志中。
9. 根据权利要求8所述的方法,其中,所述将使所述门与位置相 关联的数据存储在所述闪回日志中的步骤包括为所述门的各 个门在所述闪回日志中存储门标记。
10. 才艮据一又利要求9所述的方法,进一步包括如下步骤使用与门 相关的门标记,来确定处理哪个闪回记录,以将所述储存库返 回到与所述门相关的所述先前状态。
11. 根据权利要求9所述的方法,其中所述门标记包括指示在重做日志中的位置的数据;以及所述方法进一步包4舌^吏用在所述重估支日志中的所述位置 来确定处理哪个重估文。
12. 根据权利要求9所述的方法,其中所述门标记包括指示在所述闪回日志中的位置的数据;以及所述方法进一步包括使用在所述闪回日志中的所述位置 来确定处理哪个闪回条目。
13. 根据权利要求9所述的方法,进一步包括,在各门标记中存储 到在所述闪回日志中的先前门标记的链接。
14. 根据权利要求1所述的方法,其中,多个条目可以进入所述^f诸存库;以及所述多个条目的各条目保存分离日志,所述分离日志含 有对于所述招t销的至少 一 些所述数据的撤消信息。
15. 根据权利要求14所述的方法,进一步包括通过执行以下步骤 来建立门将所述多个条目中的一个指定为协调器;使所述协调器向各其它所述条目发送开始记录消息;使各其它条目通过为所有更新产生所述重估文来响应所述 开始i:己录消息;在发送所述开始记录消息之后,使所述协调器向各其它 所述条目发送门已建立消息;以及使各其它条目通过仅为门后第 一 次更新建立所述撤消来 响应所述门已建立消息。
16. 根据权利要求15所述的方法,其中各其它条目还通过向所述协调器发送响应来响应所述开 始i己录消息;以及所述协调器在接收到所有所述其它条目的响应后,发送 所述门已建立消息。
17. 才艮据^L利要求16所述的方法,其中由各其它条目发送的所述响应,指示所述条目在所述分 离日志中的^立置;以及所述协调器存储使所述门与位置信息相关联的数据,其 中,所述位置信息用于识別在从所述各其它条目接收到的所述 响应中指示的位置。
18. 才艮据权利要求17所述的方法,其中,所述存^诸使所述门与位 置信息相关联的数据的步骤包括为所述门在所述协调器的所 述分离日志中存储标记,其中,所述标记包括在从所述各其它 条目接收到的所述响应中指示的位置的链接。
19. 一种用于将4诸存库还原到先前状态的方法,所述方法包括建立与第 一 时间点相关的预期门;为对存在于所述储存库中的数据作出的 一些但不是全部 的预期门后第 一 次更新产生撤消;建立与比所述第 一 时间点晚的第二时间点相关的门;除在所述预期门时为其产生所述撤消的数据作出的更新 之外,为对存在于所述储存库中的数据作出的所有门后第 一次 更新产生所述招"肖;通过执行以下步骤,将所述储存库还原到至少与所述第 二时间点一样早的状态4吏用与所述预期门相关的所述招i消,以将所述〗诸存 库的IO居的第 一 集合还原回在所述第二时间点之前的时 间;以及使用与所述门相关的所述撤消,以将所述储存库的 数据的第二集合还原回所述第二时间点。
20. 根据权利要求19所述的方法,进一步包括以下步骤在所述 预期门后第 一次更新被执行时,根据资源的可用性确定是否为 预期门后第 一次更新产生所述撤消。
全文摘要
本发明描述的技术用于将储存库返回到前状态。储存库可以是,例如数据库,并且前状态可以是,例如数据库在过去的特定时间点具有的一致状态。当操作者引起的错误通过由已经提交的事务作出的改变引入到数据库中时,本发明描述的技术可以用于通过将数据库返回到在引入错误的事务被提交的时间之前的时间点来从错误恢复。该技术包括产生“物理撤消”信息,以及物理撤消信息与生理撤消和生理重做的联合使用,以有效地将储存库返回到前状态。
文档编号G06F17/30GK101221573SQ20081000186
公开日2008年7月16日 申请日期2004年3月31日 优先权日2003年4月30日
发明者J·威廉·李, 威廉·布里奇, 罗万安, 胡维民, 迈克尔·斯图尔特 申请人:甲骨文国际公司