还原数据库系统中的对象和从属对象的制作方法

文档序号:6483927阅读:227来源:国知局

专利名称::还原数据库系统中的对象和从属对象的制作方法
技术领域
:本发明一般地涉及计算机系统。更具体地说,本发明涉及提供还原数据库系统中的对象和从属对象的能力
背景技术
通常,数据库管理系统(DBMS)是控制数据库中的信息的完整性、组织、存储、检索和安全性的计算机软件。数据库中的信息可以使用多种类型的对象来存储。例如,信息可以存储在表中,并且可以使用索引来便利对表的访问。其它常用对象包括嵌套表、部分表(partialtable)、索引组织表(IOT)、大对象(LOB)、约束、触发等。出于种种原因,用户可能决定清除或删除对象。例如,用户可能觉得不再需要对象、要获得更多的可用存储空间、或者出于偶然性。不管清除的原因如何,用户有时会改变他的主意而想要重新获得对象。对于当今的数据库应用,数据库的当前状态是被周期性存储的。此外,还存储了从该状态起对数据库执行的事务列表。当用户想要检索已经被清除的对象时,数据库将回滚到最后存储的状态。在回滚之后,可以根据事务列表执行在状态被存储之后执行的事务。尽管该方案可以检索被清除的对象,但是它有相对耗时的缺点。更为重要的是,它还有下述缺点在数据库的回滚和前滚期间,数据库一般不能排除新的事务。这样,在检索被清除的对象期间数据库实际上被关断。用于改进数据库系统中的对象清除方式的创新技术是有益的。此外,允许检索对象而不用要求数据库关断的创新技术是有益的。
发明内容本发明提供了用于还原数据库中的对象和从属对象的创新技术。通常,当用户想要丢弃或去除对象时,对象被移出或被置于回收站中。从属于该对象的对象也会被转移到回收站。随后,如果用户想要检索该对象,则该对象可以被移出回收站。这样,对象的检索可以很快,并且不需要数据库在检索期间被关断。下文描述了本发明的一些具体实施例。在一个实施例中,本发明提供了一种允许在数据库系统中进行还原的方法。丢弃数据库中的对象的命令被接收。该对象被移到回收站,并且如果存在从属于该对象的从属对象,则从属对象被移到回收站。在接收到还原对象的命令之后,对象被移出回收站。在另一实施例中,本发明提供了一种允许在数据库系统中进行还原的方法。丢弃数据库中的对象的命令被接收。该对象被移到回收站,并且如果存在从属于该对象的从属对象,则从属对象被移到回收站。在接收到还原对象的命令之后,对象被移出回收站。如果需要更多的空间,则对象被清除以提供更多的存储空间。在阅读了下面的说明以及相关的附图之后,本发明的其它特征和优点将变得显而易见,附图中相同或相似的结构用相同的标号来指示。图1示出了用于数据库管理系统的三层体系结构示例;图2图示了结合本发明实施例使用的计算机系统的框图;图3示出了数据库中的一些示例性对象的框图;图4示出了还原数据库中的对象(如果存在从属对象,则也包括从属对象)的过程流程图;图5示出了可以从回收站移除对象的多种方式的过程流程图;图6示出了从回收站清除对象以获得更多存储空间的过程流程图;图7示出了可以用来实现数据库系统中的回收站的表模式示例;图8示出了用于已被丢弃在回收站中的对象(例如,表)和从属对象的图7表中的条目示例。具体实施例方式在下面的说明中,将参考还原数据库环境中的对象和从属对象的实施例来描述本发明。然而,本发明的实施例不限于任何具体体系结构、环境、应用或实现方式。例如,尽管将要描述用于数据库管理系统的示例性三层体系结构,但是本发明也可以方便地应用于数据库应用或体系结构。因此,下文对实施例的说明是处于举例说明的目的而非限制的目的。十分常用的数据库管理系统体系结构是如图1所示的三层体系结构。在数据库管理系统的核心是存储数据库3的中央存储装置1。数据库3一般存储在一个或多个硬盘上,数据库3一般是较大计算机系统的一部分。信息可以利用关系型数据库管理系统以多种格式存储在数据库3中,其中关系型数据库管理系统十分依赖于表来存储信息。数据库服务器5是与数据库3交互的程序实例。数据库服务器的每个实例能够但不限于独立地查询数据库3并在其中存储信息。数据库服务器5可能不包括对用户友好的界面(例如图形用户界面)。此外,一个或多个应用服务器7可以向数据库服务器5提供用户接口。例如,应用服务器7可以是因特网(或其它网络)上的网页应用服务器。应用服务器7可以提供用户友好机制,以通过数据库服务器5访问数据库3。网页浏览器9可以用来访问应用服务器7。图2示出了实现本发明实施例的计算机系统中的组件框图。计算机系统101包括处理器103,用于执行来自计算机程序(包括操作系统)的指令。尽管处理器一般还具有高速缓存,但是处理器103使用存储器105来存储指令或计算机代码和数据。固定存储装置107可以存储计算机程序与数据,使得它一般是持久性的并且与存储器105相比提供了更多的存储。目前,用于数据库的常用固定存储装置是多(例如,阵列式)硬盘。可移除存储装置109向存储于其上的计算机程序和/或数据提供移动性。可移除存储装置的示例是软盘、磁带、CD/ROM、闪存设备等。存储器105、固定存储装置107和可移除存储装置109提供可以用来存储和获取计算机程序、本发明使用的数据等的计算机可读存储介质示例,其中计算机程序包括实现本发明的计算机代码。此外,以载波实现的数据信号(例如,在包括因特网在内的网络中)可以是计算机可读存储介质。输入111允许用户与系统进行交互。输入可以通过使用键盘、鼠标、按钮、拨号或任何其它输入机制来实现。输出113允许系统向用户提供输出。输出可以通过监视器、显示屏、LED、打印机或任何其它输出机制来提供。网络接口115允许系统用接口连接它所连接到的网络。计算机系统101的系统总线体系结构由箭头117来表示。图2所示的组件可以在许多计算机系统中找到。然而,组件可以被添加、删除和合并。例如,固定存储装置107可以是通过网络连接访问的文件服务器。因此,图2是出于举例说明的目的而非限制的目的。现在,已经描述了示例性数据库应用与环境,下面讨论数据库中的示例性对象会是有益的。图3示出了在数据库中可能存在的对象和从属对象。示出的表201包括大对象(LOB)203。表是用来在数据库中存储信息的常用对象。信息一般被存储在表的字段中,并且可以包括诸如数字、字符串、指针、嵌套表等的数据类型。除了诸如嵌套表、分区表、IOT等的一般表外,还有很多种表。出于举例说明的目的,所示出的LOB203代表可以在表中存储的另一类型数据。LOB可以存储诸如二进制图像和声音文件的信息。为了更有效地访问表201,示出了索引205和207。索引一般使用关键字字段来更有效地访问表。LOB203和索引205与207是从属对象的示例,因为它们从属于另一对象(本例中的表201)。它们是从属对象,因为如果没有它们所从属的对象,则从属对象将几乎或根本没有价值。一些从属对象是可重建的,意味着如果从属对象被清除,则它能够被重建。索引205和207是能够被重建的从属对象的示例。LOB203是一旦被清除一般不能被重建的从属对象示例。从属对象的其它示例包括约束和触发,但是本发明可以方便地用于与任何类型的从属对象一起工作。数据库一般要比图3所示的复杂得多。然而,该图在描述本发明实施例方面是有益的。图4示出了还原来自数据库的对象的过程流程图。与这里所示出的所有流程图一样,在不背离本发明精神和范围的条件下,可以添加、删除、组合或重排步骤。在步骤301,接收命令来丢弃对象。命令一般是从用户接收的,并且可以通过诸如图形用户界面或命令行的界面而输入。通过丢弃对象,用户表示她认为不再需要该对象(例如,表)。在步骤303,对象被移到回收站。回收站是这样的仓库,其用于存储已被丢弃的对象,直到用户还原它们,用户明确清除它们或者数据库清除它们以便获得更多的存储空间。可以通过改变用于定义回收站中有什么的变量来执行对对象的移动。在一些实施例中,回收站被实现为字典表。当对象被丢弃时,在该表中产生一个条目并且这些对象可以被还原。回收站中的对象的空间仍旧可以分配给合适的用户,即使它们被丢弃。一个实施例的其它细节将参考图7和图8在下文中描述。在步骤305,确定是否存在从属于已被丢弃的对象的任何从属对象。如果存在从属对象,则在步骤307从属对象被移动到回收站。例如,参考图3,如果用户指示表201应当被丢弃,则系统将把LOB203和索引205与207识别为表201的从属对象,所以它们将被移到回收站。参考图4,在接收到还原对象的命令之后,在步骤309,该对象被移出回收站。通过将对象移出回收站,数据库系统能够还原表而不要求在检索期间数据库被实际关断。当对象被还原并且被移出回收站时,回收站中存在的所有从属对象也可以被移出回收站(即,还原)。在一些实例中,为了获得更多存储空间,可重建从属对象可能已从回收站被清除。在数据库系统处于处理要求间歇或任何其它时间时,当需要可重建对象时,可重建从属对象可以在其所从属的对象被还原时被重建。图4示出了对象和从属对象会被如何移到回收站的示例。图5示出了可从回收站移出对象的方式。更具体地说,图5示出了可从回收站移除对象和从属对象的过程流程图。如果在步骤351,数据库处于不需要更多存储空间的状态,则用户可以执行命令来从回收站移除对象和从属对象。例如,在步骤353,用户可以从回收站353明确清除对象或从属对象。一旦对象或从属对象被清除,如果用户改变她的主意,则可能需要执行回滚和前滚,以便检索对象或从属对象。此外,在步骤355,用户可以还原对象或从属对象。通过还原对象或从属对象,对象或从属对象被移出回收站并且可用,如同它们从来没有被丢弃一样。如果需要存储空间,则在步骤357,数据库将选择要清除的对象。在步骤359,数据库可以清除从属于在步骤357中所选对象的从属对象。在步骤361,所选对象被清除。如上所述,在一些实施例中,如果需要更多存储空间,则数据库选择要清除的对象和从属对象(如果有的话)。在其它实施例中,用户可以介入该过程,例如选择要清除的(一个或多个)对象。由于回收站中的对象仍旧占用存储空间,所以当用户请求新的对象(或者数据库需要创建对象)时,将确定需要更多的存储空间。图6示出了通过清除回收站中的一个或多个对象来获得更多存储空间的过程流程图。在步骤401,接收对存储空间量的请求。在步骤403,选择最久的对象来进行清除。尽管在一些实施例中,选择了最久的对象,但是其它实施例可以使用任意特性来选择要被清除的对象。在步骤405,确定所选的对象是否被分区。如果所选对象没有被分区,则在步骤407对象被清除。从属于被清除对象的对象也可被清除。然而,如果由于步骤407处对对象的清除提供了所请求的存储空间因而在此时不需要清除从属对象,则可以将从属对象的清除推迟到较晚的时候。例如,在一些实施例中,一个守护程序(daemon)在后台运行,并且识别回收站中已被标记为可清除但还未被清除的从属对象。守护程序可以随后在方便的时候清除这些从属对象。在步骤409,确定是否还需要更多的存储空间,如果“是”,则流程回到步骤403。否则,已得到所请求的存储空间。现在回到步骤405,如果对象被分区,则在步骤411清除一个或多个分区。在一些实施例中,所有分区被清除。但是,如果为了获得所请求的存储空间不是所有的分区都需要被清除的话,则仅有那些分区被立刻清除。如上所述,其它分区可以被标记为可清除,并且守护程序可以在较晚的时候从回收站清除这些程序。这样,对象的一部分(例如,一个或多个分区)可以被标记为将来清除。通过仅清除获得所请求的存储空间所需的对象或分区可以看出,用户(或数据库)仅需等待获得存储空间所需的时间。这样,用户不需要对为她所不需要的存储空间而清除从属对象或分区这一过程进行等待。为此,在一些实施例中,当用户明确清除对象时,该对象、所有从属对象和所有分区被立刻清除(即,没有守护程序延迟清除),因为是用户发出的命令所以会引起处理的延迟。示例如上所述,回收站可以被实现为表。该表可以包括已被丢弃的每个对象的条目。图7示出了用来实现回收站的表模式示例,并且下文将说明表的具体字段。OBJ#存储被丢弃对象的原始对象号。该字段被用来表示字典表中的对象。OBJ#对于数据库中的所有对象来说是唯一的,因此形成了用于对象的唯一标识符。对于分区的情形,在其被移到回收站时将创建一个新的对象,因此一个新的OBJ#可以被分配给它。这个新的OBJ#随后可以用来标识相关分区。在一些实施例中,如果分区被还原,则它将被恢复为新对象。OWNER#被用来存储对象的原始拥有者的USER#。在丢弃对象时,该对象的拥有者信息可能被修改。如果用户还原对象,则它应当被复原给原始拥有者,这可以利用该字段来实现。ORIGINAL_NAME#保持对象的原始名称。对象的名称在其被移到回收站时可能改变。维护对象的原始名称只是为了用户的方便。OPERATION规定对对象执行的DDL操作。该字段可以用来区分对象是被丢弃还是被截短,从而可以适当地处理对象。该字段可以保持下述两个有效值之一0-对象被丢弃(DROP)以及1-对象被截短(TRUNCATE)。TYPE#存储被丢弃对象的对象类型。下面是可被支持用于还原的类型示例表、常规索引、位图索引、嵌套表、LOB、LOB索引、域索引、IOT顶索引、IOT溢出段、IOT映射表、触发、约束、表分区、表合成分区、索引分区、索引合成分区、LOB分区、LOB合成分区等。TS#提供了被丢弃且现在被移到回收站的对象的表空间号。这对于试图为接近于填满的表空间释放空间来说会是有益的。从仍具有大量空间的表空间回收空间不会解决空间压力问题,因此仅为几乎填满且需要一些空间的表空间从回收站回收空间是有益的。FILE#存储对象的段头的文件号。与TS#和BLOCK#一道,可以获得唯一的SEG$条目。BLOCK#提供对象的段头的块号。与TS#和FILE#一道,可以获得唯一的SEG$条目。该字段可以用来在有空间压力时有效访问段头。DROPTIME存储当对象被丢弃时的系统时间。该字段的值可以用来计算对象已经存在于回收站中的时间。在有空间压力的情况下,可以以对象被丢弃的顺序从回收站回收对象。这样,该字段被用来维持回收站中的对象的基于时间的排序。DROPSCN提供引起对象丢弃的SCN。这对于闪回(FlashBack)查询来说会是有用的。PARTITIOM_NAME保持被丢弃的分区的名称。在非分区表中,该字段为NULL。因此,使用该字段仅仅是为了用户的方便。FLAGS保持回收站中的对象的多个标志。该字段的多个位之一可以用来保持跟踪对象是否可被还原。如果增量方法被用于空间回收,则很可能仅有属于对象的少范围(extent)被释放而其它范围仍旧存在于回收站中。如果没有任何被分配给该对象的范围已被释放,则对象可以被还原。如果即使只有属于对象的一个范围被释放,它也不应被还原。RELATED标识所考量的对象的父对象的OBJ#。BO存储引起该对象被丢弃并被置于回收站中的基表的OBJ#。PURGEOBJ提供下述对象的OBJ#,其中所述对象(例如,索引或表)在想要从系统清除该特定对象并释放空间的情况下由于空间压力而将被清除。BASE_TS#存储基对象(例如,表)的表空间号。BASE_OWNER#保持基对象的拥有者的用户号。SPACE提供对象的大小。该字段可以用来显示回收站中的对象使用了多少空间(例如,以块数目的形式)。CON#存储在由于约束而构建的索引的情形下的约束ID。否则它将是NULL。SPARE1、SPARE2和SPARE3可以在将来的实现中使用。现在,已经说明了图7中的表模式,下面讨论被丢弃并被置于回收站中的对象和从属对象的示例是有益的。当用户丢弃对象时,对象被置于回收站中。该对象在OBJ$中被标记为被丢弃(但是未被清除)。用户可以按照自己的想法清除该对象,或者该对象将由于空间压力而被自动清除。图8示出了已被丢弃的对象与从属对象的条目。这些条目指示已经丢弃的表TABLE1和索引INDEX1(从属对象)。当TABLE1被丢弃时,这些条目被添加到表中。如图所见,RELATED字段指示INDEX1与TABLE1有关。因此,INDEX1由于TABLE1被丢弃而被置于回收站中。用户在没有首先还原TABLE1的条件下,不能够还原INDEX1,但是如果没有回收来自有关对象的空间,则还原TABLE1也将还原INDEX1。当对象需要被恢复(被还原)时,将使用来自回收站的原始所有者信息(例如,OWNER#),以将对象重分配给它。只有当对象被清除(由用户或空间回收过程)时,它将从回收站中被移除,从而请求空间的事务可以重新使用该空间。尽管上文对本发明的优选实施例进行了完整的说明,但是可以使用多种替换形式、修改形式和等同形式。很明显,通过对上述实施例进行修改,同样可以应用本发明。例如,尽管可以使用表模式来实现回收站,但是本发明不限于上述具体示例。因此,上面的说明不应作为对本发明范围的限制,本发明的范围由权利要求及其所有等同物的界线和范围所限定。权利要求1.一种允许在数据库系统中进行还原的方法,包括接收丢弃数据库中的对象的命令;将所述对象移到回收站;如果存在从属于所述对象的从属对象,则将所述从属对象移到所述回收站;以及在接收到还原所述对象的命令后,将所述对象移出所述回收站。2.如权利要求1所述的方法,还包括清除所述回收站中的所述对象。3.如权利要求2所述的方法,其中所述对象被清除以获取更多存储空间。4.如权利要求1所述的方法,还包括接收对存储空间量的请求。5.如权利要求4所述的方法,还包括清除所述回收站中的对象以获得所述存储空间量。6.如权利要求4所述的方法,还包括清除从属于被清除的所述对象的从属对象。7.如权利要求4所述的方法,还包括如果需要获得所述存储空间量则清除从属于被清除的所述对象的从属对象,并且将所有其它的所述从属对象标记为将来清除。8.如权利要求4所述的方法,还包括如果对象的一部分不需要被清除以获得所述存储空间量,则将所述部分标记为将来清除。9.如权利要求1所述的方法,其中所述回收站是表。10.如权利要求1所述的方法,其中所述表包括标识从属对象所从属的对象的字段。11.一种允许在数据库系统中进行还原的计算机程序产品,包括用于接收丢弃数据库中的对象的命令的计算机代码;用于将所述对象移到回收站的计算机代码;用于如果存在从属于所述对象的从属对象则将所述从属对象移到所述回收站的计算机代码;用于在接收到还原所述对象的命令后将所述对象移出所述回收站的计算机代码;以及存储所述计算机代码的计算机可读介质。12.如权利要求11所述的计算机程序产品,其中所述计算机可读介质是CD-ROM、软盘、磁带、闪存、系统存储器、硬盘或者以载波实现的数据信号。13.一种数据库系统,包括数据库,用于在表中存储信息,并且包括实现回收站的表,所述实现回收站的表指示已被丢弃的对象,从而用户可以还原所述回收站中的对象。14.如权利要求13所述的数据库系统,其中所述表包括标识从属对象所从属的对象的字段。15.一种允许在数据库系统中进行还原的方法,包括接收丢弃数据库中的对象的命令;将所述对象移到回收站;如果存在从属于所述对象的从属对象,则将所述从属对象移到所述回收站;在接收到还原所述对象的命令后,将所述对象移出所述回收站;以及如果需要更多的存储空间,则清除所述对象以提供更多的存储空间。16.如权利要求15所述的方法,还包括接收对存储空间量的请求。17.如权利要求15所述的方法,还包括清除从属于被清除的所述对象的从属对象。18.如权利要求15所述的方法,还包括如果需要获得所述存储空间量则清除从属于被清除的所述对象的从属对象,并且将所有其它的所述从属对象标记为将来清除。19.如权利要求15所述的方法,还包括如果对象的一部分不需要被清除以获得所述存储空间量,则将所述部分标记为将来清除。20.如权利要求15所述的方法,其中所述回收站是表。21.如权利要求15所述的方法,其中所述表包括标识从属对象所从属的对象的字段。22.一种允许在数据库系统中进行还原的计算机程序产品,包括用于接收丢弃数据库中的对象的命令的计算机代码;用于将所述对象移到回收站的计算机代码;用于如果存在从属于所述对象的从属对象则将所述从属对象移到所述回收站的计算机代码;用于在接收到还原所述对象的命令后将所述对象移出所述回收站的计算机代码;用于如果需要更多的存储空间则清除所述对象以提供更多的存储空间的计算机代码;以及存储所述计算机代码的计算机可读介质。23.如权利要求22所述的计算机程序产品,其中所述计算机可读介质是CD-ROM、软盘、磁带、闪存、系统存储器、硬盘或者以载波实现的数据信号。24.一种数据库系统,包括数据库,用于在表中存储信息,并且包括实现回收站的表,所述实现回收站的表指示已被丢弃的对象,从而用户可以还原所述回收站中的对象;其中如果需要更多存储空间,则从所述回收站清除对象。25.如权利要求24所述的数据库系统,其中所述表包括标识从属对象所从属的对象的字段。全文摘要本发明提供了用于还原数据库中的对象(例如,表)和从属对象的技术。当对象被丢弃时,对象被移到回收站,对象在回收站中一直驻留到用户还原对象或者对象被清除。从属对象也和它们所从属的对象一起被移到回收站中。对象可以由用户明确地从回收站清除,或者当需要更多存储空间时从回收站清除。如果不需要获得更多的存储空间,则可以延迟从属对象和分区的清除。文档编号G06F17/30GK1791873SQ200480013535公开日2006年6月21日申请日期2004年4月7日优先权日2003年5月27日发明者韦尼特·玛瓦申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1