在不同数据库服务器之间划分一个数据库所有权以控制访问数据库的制作方法

文档序号:6477704阅读:198来源:国知局

专利名称::在不同数据库服务器之间划分一个数据库所有权以控制访问数据库的制作方法
技术领域
:本发明涉及数据库系统,尤其涉及一种在不同数据库服务器之间对数据库所有权进行划分以控制访问数据库。
背景技术
:多处理计算机系统是那些包括多个处理单元的系统,这些处理单元能够相对于彼此而并行执行指令。为了使用并行处理能力,一个任务的不同方面可以指派给不同的处理单元。在这里,一个任务的不同方面称为工作区组(workgranule),而负责在可用处理单元之间分配工作区组的进程则称为协调器进程。多处理计算机系统通常分为三种共享一切的系统(sharedeverythingsystem)、共享磁盘的系统(shareddisksystem)以及无共享的系统(sharednothingsystem)。在将工作分配给执行工作区组的进程时所放置的约束条件是根据所涉及的多处理系统类型而变化的。在共享一切的系统中,所有处理器上的进程都可以直接访问系统中所有的动态存储设备(下文中通称为“存储器”)以及所有的静态存储设备(下文中通称为“磁盘”)。因此在一个共享一切的系统中,对于如何指派工作区组而言几乎是没有约束条件的。然而需要在不同计算机组件之间进行高度布线以提供共享一切的功能。另外,对共享一切的架构来说,还存在着可伸缩性的限制。在共享磁盘的系统中,处理器和存储器归合成节点。共享磁盘系统的每个节点自身即可构成一个共享一切的系统,其中包含了多个处理器和多个存储器。所有处理器上的进程都可以访问该系统的所有磁盘,但是只有属于某个特定节点的处理器上的进程可以直接访问该特定节点的存储器。共享磁盘系统所需要的布线通常少于共享一切的系统。然而,共享磁盘系统更易受到不均衡工作负载条件的影响。举例来说,如果节点具有一个进程,该进程作用于一个需要大量动态存储器的工作区组,那么,属于该节点的存储器可能不足以同时保存所有需要的数据。因此,即使其他节点保持大量可用和未使用存储器,该进程也还是要与节点的本地存储器交换数据。共享磁盘系统提供了造成存储器毁损的软件故障划分。唯一的例外是那些由节点间的锁定管理器所使用的控制块,实际上,这些控制块在所有节点都得到了复制。在无共享系统中,所有处理器、存储器以及磁盘都将归合成节点。与共享磁盘系统一样,在无共享系统中,每个节点自身都可构成一个共享一切的系统或是一个共享磁盘的系统。只有那些运行在某个特定节点上的进程可以直接访问该节点内部的存储器和磁盘。在这三种常规的多处理系统中,无共享系统通常在不同系统组件之间需要最少的布线。然而,无共享系统最易受到不均衡工作负载条件的影响。举例来说,在某个工作区组中所要访问的全部数据都可保存在某个特定节点的磁盘上。因此只有运行在该节点内部的进程可用于执行该工作区组,即使是在其它节点上的进程都保持空闲的情况下。无共享系统提供了导致存储器和/或磁盘毁损的软件故障划分。唯一的例外就是对依据不同节点的数据子集“所有权”加以控制的控制块。与共享磁盘锁定管理信息相比,对所有权很少进行修改。因此,所有权技术要比共享磁盘锁定管理技术更加简单可靠,因为它们并不具有对于高性能的需要。运行在多处理系统上的数据库通常分为两种共享磁盘的数据库和无共享数据库。在共享磁盘的数据库系统中,多个数据库服务器(通常运行在不同节点上)能够读取和写入数据库的任何部分。共享磁盘架构中的数据访问是借助一个分布式锁定管理器来协调的。共享磁盘的数据库既可运行在无共享的计算机系统上,也可运行在共享磁盘的计算机系统上。要想在一个无共享计算机系统中运行一个共享磁盘的数据库,那么可以向操作系统添加软件支持,也可以提供附加硬件而使得进程能够直接访问远程磁盘。无共享数据库假设只有当数据包含在一个与进程同属一个节点的磁盘上的时候,该进程才能直接访问数据。具体地说,数据库数据是在可用数据库服务器之间细分的。每个数据库服务器只能直接读写该数据库服务器拥有的那部分数据。如果第一服务器试图访问第二服务器拥有的数据,那么第一数据库服务器必须向第二数据库服务器发送消息,以使第二数据库服务器代表它来执行数据访问。无共享数据库既可以运行在共享磁盘的多处理系统上,也可以运行在无共享的多处理系统上。为了在共享磁盘的机器上运行一个无共享数据库,可以提供一种软件机制来对数据库进行逻辑划分并将每个分区的所有权指派给某个特定节点。无共享系统和共享磁盘的系统各自都具有与其特定架构相关的便利优点。举例来说,如果存在对于数据的频繁写访问(写热点),那么无共享数据库提供了更好性能。如果存在频繁的读访问(读热点),那么共享磁盘的数据库提供了更好的性能。并且如上所述,在出现软件故障的情况下,无共享系统提供了更好的容错性。根据上文,较为理想的是提供一个单独的数据库系统,该系统能够提供这两种数据库架构的性能优势。然而,这两种架构通常是相互排斥的。
发明内容在这里提供了一个数据库系统,其中将数据库或数据库的某个部分划分成所有权组。每个所有权组都被指派了一个或多个数据库服务器,使之作为所有权组的所有者。指派为所有权组的所有者的数据库服务器被看作是属于该所有权组的所有数据项的所有者。也就是说,这些数据库服务器准许直接访问该所有权组中的数据项,而其他数据库服务器则不准许直接访问这些数据项。根据本发明的一个方面,提供了一个数据库系统,该系统包括一个或多个持久存储设备,其上保存了一个数据库,该系统还包括运行在多个节点上的多个数据库服务器。每个节点都能够直接访问持久存储设备。至少一部分数据库划分为多个所有权组。每个所有权组都指派了一个所有者集合。只有那些作为所有权组所有者集合中的成员并在数据库服务器上运行的进程才准许直接访问所有权组内部的数据。每个所有权组都标记为无共享所有权组或是共享磁盘所有权组。每个无共享所有权组都从数据库服务器中指派了一个所有者。只有每个无共享所有权组的所有者才准许直接访问无共享所有权组内部的数据。每个数据库服务器都准许直接访问所有权组内部的数据,而这些所有权组则标记为共享磁盘所有权组。本发明是借助实例来描述的,但这并不作为限制,在附图的图形中,相同的附图标记代表相同的部件,其中图1是可以执行本发明一个实施例的计算机系统的框图;图2是根据本发明一个实施例而使用所有权组的分布式数据库系统的框图;图3是一个描述对支持所有权组的系统的数据项执行操作的步骤的流程图;图4是一个对根据本发明实施例来改变所有权组的所有者集合的步骤加以描述的流程图;以及图5是一个描述根据一个本发明实施例来进行原子变化的技术的框图。具体实施例方式在这里描述了一种方法,用于在不同的数据库服务器之间对一个数据库的所有权进行划分,以便对数据库访问加以控制。在以下描述中,为了说明的目的,对许多细节进行了阐述,以便提供关于本发明的全面理解。然而对本领域技术人员来说,本发明显然可以在不具备这些特定细节的情况下实施。为了避免不必要地使本发明不清楚,其他实例、公知结构和设备是以框图形式显示的。硬件综述图1是描述可以执行本发明一个实施例的计算机系统100的框图。计算机系统100包括一条总线102或是用于传递信息的其他通信结构,并且包括一个与总线102耦合并用于处理信息的处理器104。计算机系统100还包含一个主存储器106,例如随机访问存储器(RAM)或是其它动态存储器,该存储器与总线102耦合,用于保存信息以及处理器104所要执行的指令。在运行处理器104所执行指令的过程中,主存储器106还可用于保存临时变量或是其它中间信息。计算机系统100还包括一个只读存储器(ROM)108或其它静态存储设备,其与总线102耦合,用于保存静态信息和涉及处理器104的指令。并且提供了诸如磁盘或光盘这种存储设备110,其与总线102耦合,用于保存信息和指令。计算机系统100可以经由总线102而与阴极射线管(CRT)这类显示器112相连,从而将信息显示给计算机用户。包括字母数字及其他按键的输入设备114与总线102相连,以便将信息和命令选择传递给处理器104。另一种用户输入设备是光标控制116,例如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传递给处理器104并且控制显示器112上的光标移动。这种输入设备通常在第一轴(例如x)和第二轴(例如y)这两个轴上具有两个自由度,由此设备能够确定一个平面上的位置。本发明涉及使用计算机系统100来提供一个混合的共享磁盘/无共享的数据库系统。根据本发明的一个实施例,处理器104执行主存储器106中包含的一个或多个指令的一个或多个序列,计算机系统100对此做出响应,由此提供这种数据库系统。这些指令可以从诸如存储设备110这样的另一种计算机可读介质读入主存储器106。通过执行主存储器106中包含的指令序列,处理器104执行这里描述的处理步骤。在替换实施例中,硬布线电路可用于取代软件指令或是与之组合,由此实现本发明。因此,本发明的实施例并不局限于硬件电路和软件的任何一种特定组合。这里使用的术语“计算机可读介质”是指任何一种参与向处理器104提供指令以供执行的介质。这种介质可以采取很多形式,其中包括但不局限于非易失介质、易失介质和传输介质。举例来说,非易失介质包括光盘或磁盘,例如存储设备110。易失介质包括动态存储器,例如主存储器106。传输介质包括同轴电缆、铜线和光纤,其中包括构成总线102的线。传输介质还可以采取声波或光波的形式,例如无线电波和红外数据通信中产生的信号。举例来说,计算机可读介质的通用形式包括软盘、软磁盘、硬盘、磁带或任何其它磁介质、CD-ROM或任何其它光学介质、穿孔卡、纸带、或具有孔洞图案的任何其它物理介质、RAM、PROM和EPROM、FLASH-EPROM、其它任何存储芯片或盒式磁盘机、如下所述的载波或是计算机可以读取的其它任何介质。不同形式的计算机可读介质涉及向处理器104传递一个或多个指令的一个或多个序列,以便加以执行。举例来说,起初可以在远程计算机的磁盘上携带指令。远程计算机可以将指令加载到它的动态存储器中,并且使用调制解调器经由电话线来发送指令。计算机系统100本地的调制解调器可以在电话线上接收数据并且使用红外发射机来将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,而恰当的电路则可将数据安插到总线102上。总线102将数据传送到主存储器106,处理器104从主存储器106中检索并执行指令。在由处理器104执行之前或之后,主存储器106接收的指令可以随意保存在存储设备110上。计算机系统100还包括一个与总线102相连的通信接口118。通信接口118提供了一个与网络链路120耦合的双向数据通信,其中网络链路120与本地网络122相连。举例来说,通信接口118可以是一个综合业务数字网(ISDN)的网卡或是一个为相应类型的电话线路提供数据通信连接的调制解调器。作为另一个实例,通信接口118可以是一个局域网(LAN)网卡,它向兼容的LAN提供数据通信连接。此外还可以实施无线链路。在任何一种这类实施中,通信接口118都会收发电、电磁或光信号,这些信号传送的是那些代表不同类型信息的数字数据流。网络链路120通常经由一个或多个网络而向其它数据设备提供数据通信。举例来说,网络链路120可以通过本地网络122来将一个连接提供给主机124或是互联网服务供应商(ISP)126运作的数据设备。ISP126进而又经由现在通常称为“互联网”128的全球分组数据通信网络来提供数据通信业务。本地网络122和互联网128都使用了传送数字数据流的电、电磁或光信号。经由不同网络的信号以及网络链路120上经由通信接口118的信号携带了往返于计算机系统100的数字数据,这些信号即为传送信息的载波的示范性形式。计算机系统100可以经由一个或多个网络、网络链路120以及通信接口118发送消息并接收数据,其中包括了程序代码。在互联网实例中,服务器130可以经由互联网128、ISP126、本地网络122以及通信接口118来发送一个用于应用程序的被请求码。根据本发明,这种下载得到的应用是为这里所述的混合共享磁盘/无共享数据库系统提供的。接收到的代码可以按照接收时的原状由处理器104执行和/或存入存储设备110或其它非易失存储器而供稍后执行。这样,计算机系统100可以得到载波形式的应用码。这里所述的在不同数据库服务器之间划分一个数据库所有权而对数据库访问加以控制的方法是在一个计算机系统上实施的,尽管根据本发明的一个方面,对某些“无共享”磁盘数据的访问将会受到软件约束,但是对该计算机系统而言,可以从节点提供全部磁盘的共享磁盘访问,也就是说,它是一个可用于严格的共享磁盘访问的系统。所有权组根据本发明的一个实施例,将一个数据库(或其某些部分)划分为所有权组。每个所有权组都被指派了一个或多个数据库服务器,以此作为所有权组的所有者。指派为所有权组所有者的数据库服务器被看作是从属于该所有权组的所有数据项的所有者。也就是说,这些数据库服务器准许直接访问该所有权组内部的数据项,而其他数据库服务器则不能直接访问这些数据项。根据一个实施例,经常受到同时访问的数据项归合到相同的所有权组,以此确保它们由相同的数据库服务器所拥有。所有权组是通过将相关数据项组合视为一个原子单元而对一组相关数据项进行操作的。举例来说,通过将一个所有权组的所有权从第一数据库服务器转移到第二数据库服务器,该所有权组内部的所有数据项的所有权都可从第一数据库服务器转移到第二数据库服务器。混合数据库系统图2是一个对根据本发明一个实施例的混合数据库系统架构进行描述的框图。图2包括三个节点202、204和206,其上分别运行着数据库服务器208、210和212。数据库服务器208、210和212分别与缓冲存储器220、222和224相关联。每个节点202、204和206都与系统总线218相连,以使数据库服务器208、210和212能够直接访问保存在这两个磁盘214和216上的数据库250内部的数据。包含在磁盘214和216上的数据从逻辑上划分为所有权组230、232、234和236。根据本发明的一个实施例,每个所有权组包含一个或多个表空间(tablespace)。表空间是一个或多个数据文件(datafile)的集合。然而,本发明并不局限于任何一种特定的划分颗粒度,并且可以与更大或更小范围的所有权组一起使用。根据一个实施例,每个所有权组都被指定为共享磁盘所有权组或是无共享所有权组。指定为无共享所有权组的各个所有权组都指派了一个可用数据库服务器,以此作为它的所有者。在图2描述的系统中,所有权组230是服务器210拥有的无共享所有权组,所有权组232是一个共享磁盘所有权组,所有权组234是服务器212拥有的无共享所有权组,所有权组236是服务器208拥有的无共享所有权组。由于所有权组230是服务器210拥有的无共享所有权组,因此只允许服务器210直接访问所有权组230内部的数据(D1)。任何试图访问所有权组230数据的其它服务器通常需要向服务器210发送请求,要求服务器210作为请求服务器的代表来执行预期的数据访问。同样,所有权组234和236也是无共享所有权组,并且只能被它们各自的所有者直接访问。由于所有权组232是一个共享磁盘的所有权组,因此任何数据库服务器都可直接访问其中包含的数据集。如图2所示,每个数据库服务器都可在其缓冲存储器中包含该数据(D2)的一个副本。并且使用了一个分布式锁定管理器来对共享数据访问进行协调。根据一个实施例,该数据库系统包括一种机制,用于将某个特定所有权组从共享磁盘动态改变为无共享,反之亦然。举例来说,如果某个特定无共享数据集受到频繁的读访问(读热点),那么可以将其所属的所有权组从无共享转换为共享磁盘,从而将该数据转换为共享磁盘。同样,如果某个共享磁盘的数据集受到频繁的写访问(写热点),那么可以将包含该数据的所有权组改成一个无共享所有权组,并将该所有权组的所有权指派给一个数据库服务器,由此将该数据转换成无共享数据。根据本发明的一个方面,该数据库系统还包括一种机制,用于把无共享所有权组的所有权从一个节点重新指派给另一个节点。操作员可能需要该操作来改善负载均衡,并且该操作也可自动进行,以便在节点N1出现故障之后继续为访问N1所拥有的无共享所有权组的数据提供支持。所有权如上所述,提供了一种数据库系统,其中某些所有权组被指定为无共享所有权组,而某些所有权组则被指定为共享磁盘的所有权组。每个无共享所有权组都被指派了一个所有者。对所有数据库服务器来说,无共享所有权组的所有权是已知的,因此,在需要对所有权组内部数据执行任务的时候,这些数据库服务器可以向所有权组的所有者发送请求。根据本发明的一个实施例,不同所有权组的所有权信息都保存在一个控制文件中,并且所有能够访问该数据库的数据库服务器都准许访问该控制文件。每个数据库服务器都可将控制文件的一个副本存入缓存。在缓存中具有控制文件副本的情况下,数据库服务器可以确定该所有权组的所有权,而不必始终承担与从磁盘中读取所有权信息相关联的开销。图3是描述数据库服务器所执行的步骤的流程图,该数据库服务器希望得到既使用共享磁盘所有权组又使用无共享所有权组的系统中的数据。在步骤300,数据库服务器确定预期数据所属的所有权组。在步骤302,数据库服务器确定包含预期数据的所有权组的所有者。如上所述,可以通过访问一个控制文件来执行步骤302,其中可以将控制文件的一个副本存入与数据库服务器相关联的缓存。如果该所有权组是一个共享磁盘所有权组,那么所有数据库服务器都将被看作是该所有权组的所有者。如果该所有权组是一个无共享所有权组,那么将会在控制文件中把某个数据库服务器指定为该所有权组的所有者。在步骤304,数据库服务器判定自身是否即为保持预期数据的所有权组的所有者。如果(1)该所有权组是一个共享磁盘的所有权组,或者(2)该所有权组是一个无共享所有权组,并且控制文件中把该数据库服务器指定为无共享所有权组的所有者,那么该数据库服务器即为该所有权组的所有者。如果数据库服务器是保持预期数据的所有权组的所有者,那么控制将会传递到步骤310,在那里数据库服务器将会直接检索预期数据。如果数据库服务器不是保持数据的所有权组的所有者,那么控制将会传递到步骤306。在步骤306,数据库服务器向该所有权组的所有者发送一个请求,以使该所有者代表请求者来访问预期数据。在步骤308,数据库服务器从该所有权组的所有者接收预期数据。所有者集合根据一个替换实施例,一个所有权组并不局限于(1)只由仅仅一个数据库服务器所拥有(无共享),或者(2)由所有的数据库服务器所拥有(共享磁盘)。相反,所有权组还可以由可用数据库服务器中的任何指定子集所拥有。在这里,拥有某个特定所有权组的数据库服务器集合称为所有权组的所有者集合。因此,无共享所有权组与所有者集合中只包含一个数据库服务器的所有权组等价,而共享磁盘所有权组则与所有者集合中包含了所有可用数据库服务器的所有权组等价。当使用所有者集合来执行一个关于所有权组的数据的任务时,不属于该所有权组的所有者集合的数据库服务器将会向那些归属于该所有权组的所有者集合的数据库服务器中的一个服务器发送请求。响应于该请求,请求接收者直接访问该所有权组的数据并且执行所请求的任务。由所有权组内部写热点产生的争用只会在那些归属于所有权组的所有者集合的数据库服务器之间产生。改变所有权组的所有权如上所述,把所有权组从无共享变成共享磁盘或从共享磁盘变成无共享,这是合乎需要的。这种变化可以响应于读写热点检测而被自动启动,也可以手动启动(例如响应于数据库管理员发出的命令)。可以使用不同技术来把所有权组从一个所有者集合(“源所有者集合”)转移到另一个所有者集合(“目的所有者集合”)。图4是一个描述根据本发明实施例来改变所有权组的所有者集合而执行的步骤的流程图。参考图4,在步骤400,一个“禁止改变”的消息广播到所有可用的数据库服务器。该禁止改变消息命令数据库服务器停止对那些所有者集合将会变化的所有权组(“转移中的所有权组”)内部的数据做出前向改变。前向改变是那些创建一个先前并不存在(也就是创建一个新的“当前”版本的数据项)的版本的改变。另一方面,后向改变则是那些导致重新创建先前已有版本的数据项改变。在步骤402,负责改变所有权组的所有者集合(“所有者改变机制”)的那部分数据库一直等待,直到所有改变了转移中的所有权组的事务都已提交(commit)或回滚(rollback)。由于不再允许对所有权组进行前向改变,因此,那些在步骤400之前已对转移中的所有权组内部数据执行了某些而非全部更新的事务将会回滚。由于步骤400仅仅阻止那些对转移中的所有权组的前向改变,因此不会防止数据库服务器回滚那些它们已对转移中的所有权组做出的改变。不幸的是,可能会需要大量开销来判定哪些事务更新了转移中的所有权组。因此提供了本发明的一个实施例,其中数据库系统并不尝试追踪那些更新了转移中的所有权组以内的数据的事务。然而,在不对该信息进行追踪的情况下,必须假设任何一个准许访问转移中的所有权组数据并始于步骤400之前的事务都改变了转移中的所有权组内部的数据。基于这个假设,步骤402要求改变机制的所有者一直等待,直到(1)可能已经访问了转移中的所有权组数据,以及(2)始于步骤400之前的所有事务提交或回滚。通常,只有那些在归属于变换所有权组的源所有者集合的数据库服务器中运行的事务才有可能访问转移中的所有权组的数据。因此,如果转移中的所有权组是共享磁盘的,那么改变机制的所有者必须一直等待,直到所有数据库服务器中始于步骤400之前的所有事务都已提交或是回滚。如果转移中的所有权组是无共享的,那么改变机制的所有者必须一直等待,直到拥有转移中的所有权组的数据库服务器的所有事务都已提交或者回滚。需要注意,其中包含了那些在其他节点发起并已创建了转移中的所有权组的本地子事务的用户事务。在有可能更新了转移中的所有权组内部数据的全部事务都已提交或回滚的时候,控制将会前进到步骤404。在步骤404,改变机制的所有者通过更新最小单元操作中的控制文件来改变转移中的所有权组的所有者集合。举例来说,该指示变化可以使转移中的所有权组从无共享所有权组转移到共享磁盘的所有权组,反之亦然。作为选择,指示变化可以只改变拥有一个无共享所有权组的数据库服务器,而不改变该所有权组的类型。在改变控制文件,使之反映转移中的所有权组的新的所有者集合时,控制将会前进到步骤406。在步骤406,一个“刷新缓存”的消息将会发送到所有的可用数据库服务器。一旦接收到刷新缓存的消息,每个数据库服务器将会无效掉缓存中包含的控制文件副本。因此,当数据库服务器随后需要检查控制文件来确定所有权组的所有权时,它们会从持久存储器中检索更新版本的控制文件。由此这些数据库服务器将会了解到转移中的所有权组的新的所有者集合。对所有权变化的调整在频繁使用某个查询的时候,该查询通常会保存在数据库内部。在将所保存的查询初始提交到数据库系统的时候,大部分数据库系统都会为所保存的查询产生一个执行计划,而不是在每次使用所保存查询的时候重新计算一个运行方案。一个查询的执行计划必须顾及包含该查询所访问数据的所有权组的所有权。举例来说,如果该查询指定了对于某个特定数据库服务器专门拥有的所有权组中的一个数据项的更新,那么该查询的执行计划必须包括将该更新操作发送到该特定数据库服务器。然而如上所述,为了改变所有权组的所有权而提供了一种机制。这种所有权变化可以出现在已经为某个特定所保存查询生成了执行计划之后。因此,这些执行计划可能需要某些数据库服务器对它们不再拥有的所有权组内部数据执行操作。根据本发明的一个实施例,那些要求对不为其所有的所有权组内部数据执行操作的数据库服务器向请求该操作的进程返回一个“所有权错误”的消息。响应于接收到一个所有权错误消息,将会为该导致错误的查询产生一个新的执行计划。新的执行计划考虑到了当前版本的控制文件所指示的所有权组的当前所有权。控制文件的管理如上所述使用了一个原子操作来更新控制文件,以便改变所有权组的标志(步骤404)。在这里可以使用不同机制来确保该操作是最小单元的操作。举例来说,如图5所示,根据本发明的一个实施例,控制文件包括一个位图和一系列数据块对。位图512中的每个比特都与一个数据块对相对应。在任何给定时间,一个数据块对中只有一个数据块包含当前数据。与数据块对相关联的比特值指示了对应数据块对的两个数据块中哪一个保持当前数据。举例来说,比特502与包含数据块506和508的数据块对504相关联。比特502的值(例如“0”)代表数据块506是数据块对504内部的当前数据块。比特502的值可以变为“1”,这表示数据块508的数据是当前数据(由此数据块506中的数据不再有效)。由于一个数据块对的非当前数据块的数据被认为是无效的,因此可以将数据写入非当前数据块,而不改变控制文件的有效内容。实际上只有在位图512的比特值发生改变的时候,控制文件的内容才会改变。因此,作为原子变化的预备步骤,数据块对504中当前数据块506的内容可以加载到存储器中,也可以被修改,还可以存入数据块对504的非当前数据块508。在执行了这些预备步骤之后,该变化可以通过改变与数据块对504相对应的位图512内部的比特502的值而被自动进行。这仅仅是自动执行改变的技术的一个实例。其它技术也是可以接受的。因此,本发明并不局限于任何一种用于自动执行改变的特有技术。在所有权组之间移动数据项一种改变诸如表空间这种数据项所有权的方法是改变数据项归属的所有权组的所有者。另一种改变数据项所有权的方法是把数据项重新指派给不同的所有权组。举例来说,通过从指派给服务器A的所有权组中移除表空间A并将其安插在指派给服务器B的所有权组中,可以将表空间A的所有者从服务器A改为服务器B。根据本发明的一个实施例,所有权组的全体成员都保存在数据库内部的一个数据字典中。因此,要从第一所有权组将一个数据项移动到第二所有权组,那么必须更新数据字典内部的第一和第二所有权组的全体成员的信息。在改变数据项所有权组时所涉及的不同步骤与那些用于改变所有权组的所有者集合的上述步骤相似。具体地说,对于正在转移的表空间(“转移中的表空间”)的访问是被禁止的。然后,所有权变化机制将会等待锁定在数据项上的所有事务(或其组件)回滚或者提交。一旦锁定在数据项上的所有事务都已提交或者回滚,那么数据字典将被修改,以便指示该数据项的新的所有权组。然后控制文件将被修改,以便指示数据项移至的所有权组的所有者集合即为数据项的所有者集合。该改变自动允许目标所有者访问该数据项。如果所有权组正在所有权变化之中,那么控制文件将被更新,以便指示该数据项处于一个“移动延迟”的状态中。对于数据项所属的所有权组的变化有可能会改变数据项所有者,也有可能不改变数据项所有者。如果源所有权组的所有者集合与转移中的所有权组的所有者集合相同,那么,在数据项从源所有权组移动到转移中的所有权组的时候,数据项的所有者不会改变。另一方面,如果源所有权组的所有者集合不同于转移中的所有权组的所有者集合,那么,在把数据项从源所有权组移动到转移中的所有权组的时候,数据项的所有者将会改变。特定所有权的变化条件根据一个实施例,提供了某些技术方法来处理以下情况,其中(1)在归属于一个所有权组的数据项正在转移到另外一个所有权组的时候,尝试改变该所有权组的所有者集合;以及(2)当目的地所有权组正在改变其所有者集合的时候,尝试将数据项转移到另外一个所有权组。为了检测这些状态,本发明的一个实施例在控制文件内部为归属于一个所有权组的每个数据项(例如表空间)提供了一个或多个状态标志。举例来说,可以使用一个标记来指示数据项归属的所有权组是否处于指派新的所有者的过程中。同样,一个标记可以指示数据项正处于转移到不同所有权组的过程中。在尝试改变所有权组的所有者集合的时候,所有权变化机制将会检查归属于所有权组的数据项的状态标志,以便确定归属于该所有权组的任何数据项是否处于变换到不同所有权组的过程中。如果归属于该所有权组的任何一个数据项处于转移到另外一个所有权组的过程中,那么将会停止尝试改变该所有权组的所有者集合。如果没有一个归属于该所有权组的数据项处于转换到不同所有权组的过程中,那么归属于该所有权组的数据项的状态标志指示数据项归属的所有权组的所有权正处在转移之中。并且还将一个消息发送到不同的数据库服务器,以便无效掉它们缓存的控制文件版本。由此确保了这些数据库服务器了解到新的状态标志值。当尝试把数据项移动到不同所有权组的时候,数据项的状态标志将被检查,以便确定目的所有权组是否处于改变其所有者集合的过程中。根据一个实施例,这个检查的执行发生在修改数据字典使之反映新的数据项所有权组之后,以及更新控制文件而使新的所有权组的所有者能够访问该数据项之前。如果数据项归属的所有权组处在改变其所有者集合的过程中,那么用于控制文件中的数据项的状态标志将被设置成指示一个“移动延迟”的状态。另外,整个数据库中的“移动延迟”标记将被设定为指示该数据库中包含了某些处在移动延迟状态中的数据项。在完成了转移所有权组成员的操作的时候,执行变换的进程将会更新状态标志,以便指示该所有权组不再处于所有权转移的过程中。另外,该进程还清除了在所有权组的所有权转移过程中移动到该所有权组的任何数据项的“移动延迟”标志。故障排除在所有权改变的过程中有可能会发生故障。该故障有可能是“进程死亡(progressdeath)”或是“服务器宕机(serverdeath)”的结果。在涉及所有权改变的某个进程出现故障的时候,将会出现一个进程死亡。在整个数据库服务器发生故障的时候,将会出现一个服务器宕机。在存在这两种故障类型的情况下,持久存储器上仍未保存的所有改变也许会丢失。在这种故障之后,有必要将数据库返回到一种一致状态。根据本发明的一个实施例,从进程死亡中恢复是通过使用状态对象(stateobject)来执行的。状态对象是一种数据结构,它被分配在了与进程所属的数据库服务器相关联的存储器区域中。在执行一个动作之前,进程会更新状态对象,以便指示它要执行的动作。如果进程死亡,那么服务器内部的另一个进程(例如“进程监视器”)将会调用该状态对象的一种方法(一个“清除程序”)而把数据库返回到一个一致状态。在进程出现故障之后执行来进行清除的特殊动作取决于失效进程所执行的操作以及失效进程死亡在其失效之前已经执行到的程度。根据一个实施例,在所有权组的所有权改变过程中,进程故障是如下处理的如果执行所有权变化的进程在其改变最终控制文件之前失效,那么初始的所有者将会作为所有权组的所有者而得到恢复。如果执行所有权变化的进程是在改变最终控制文件之后但是在删除状态对象之前失效的,那么新的所有者仍然是该所有者,并且状态对象将被删除。在将数据项从一个所有权组转移到另一个所有权组的时候,进程故障是如下处理的如果执行转移的进程是在改变数据字典之前失效的,那么数据项的初始所有者将会作为数据项所有者而得到恢复。如果执行转移的进程是在提交了涉及字典的变化之后但是在最终控制文件发生改变之前失效的,那么进程监视器将会结束移动并对控制文件进行适当改变。如果该所有权组处在所有权变化中,那么数据项处于“移动延迟”状态中。如果执行转移的进程是在最终控制文件改变之后但是在删除状态对象之前失效的,那么进程监视器将会删除状态对象。服务器宕机虽然数据库服务器宕机,但是并没有向宕机服务器单独拥有的所有权组的数据提供访问。因此,根据本发明的一个实施例,服务器宕机是一个事件,它触发了一个自动的所有权变化,其中,出现故障的服务器单独拥有的全部所有权组都指派给了新的所有者。在服务器故障之后执行的用于进行清除的特殊动作取决于数据库服务器正在执行的操作以及服务器宕机前执行了多少所有权转移。根据一个实施例,所有权组的一个所有权变化过程中的服务器故障是如下处理的如果在改变最终控制文件之前源数据库服务器已经宕机,那么所有权组将会指派到另一个线程,控制文件中的状态信息将会更新,以便指示所有权组不再处于转移之中。如果目标数据库服务器宕机,那么(1)执行转移的进程将会检测到实例(instance)失效并且终止转移,或者(2)在宕机服务器的恢复过程中,所有权组将会从宕机服务器重新指派到另一个服务器。在将数据项从一个所有权组转移到另一个所有权组时出现的服务器故障是如下处理的如果源服务器是在字典变化之前宕机的,那么在恢复过程中,新的所有者将被指派给源所有权组并会清除数据项的转移标记。如果源服务器是在改变字典之后但是在改变最终控制文件之前宕机的,那么在源服务器的恢复过程中会为数据项指派恰当的所有者或是将其标记为移动延迟,由此结束移动操作。如果目标服务器宕机,并且已经改变了最终控制文件,那么数据项将会标记为“移动延迟”。在宕机服务器的恢复过程中,转移中的所有权组的所有权将被重新指派,移动延迟标记将被清除。减少所有权变化过程中的停机时间如上所述,图4描述的步骤代表一种用于改变所有权组的所有权的技术。在这种技术中,步骤402需要所有权变化机制一直等待,直到所有事务都已提交或是回滚,其中这些事务改变了归属于转移中的所有权组的数据之外的那些数据。在这个等待过程中,转移中的所有权组的所有数据都是不可用的。因此,最小化等待时间是非常重要的。如上所述,对实际改变了归属于转移中的所有权组的数据的事务进行追踪,这很可能是不切实际的。因此,所有权变化机制等待所有运行在归属于转移中的所有权组的源所有者集合的所有数据库服务器上的事务提交或者回滚。由于所有权变化机制必须等待的事务数量,并且其中许多事务有可能并未改变转移中的所有权组的数据,因此延迟有可能是非常重要的。根据一个替换实例,提供了一种机制,该机制允许那些在所有者之间转移的数据在这个延迟中保持可用。具体地说,禁止变化的消息并未发送到所有数据库服务器。相反,一个“新的所有者”消息发送到所有数据库服务器,它指示的是所有权组的目标所有者集合。新的所有者消息可以广播,举例来说,在更新控制文件之后向所有数据库服务器发送一个刷新缓存的消息,以便指示(1)源所有者集合,(2)目标所有者集合,以及(3)该所有权组处在转移之中。在服务器接收到新的所有者的消息之后,由该服务器启动的所有事务都开始行动,就好像目标所有者集合拥有该所有权组那样。在服务器接收新的所有者消息之前,服务器中已经启动的所有事务都会继续进行,就好像源所有者集合拥有该所有权组那样。因此,在等待过程中,转移中的所有权组的所有权在源所有者集合成员与目标所有者集合成员之间得到了有效共享。换句话说,转移中的所有权组的数据是在两个数据库服务器之间临时共享的,并且共享磁盘锁定机制是为了访问这类数据而被临时激活的。在广播新的所有者消息之前开始的源所有者集合中的所有事务都已提交或者回滚的时候,控制文件将会再次更新。在第二次更新中,控制文件将被更新,以便指示目标所有者集合即为所有权组的独占所有者,并且该所有权组不再处于转移之中。在上述说明中,已经参考本发明的实施例而对其加以描述。然而很明显,可以对本发明进行各种修改和变化,而不脱离它的实质和范围。因此,说明书以及附图被看作是说明性的,它们并不具有限制意义。权利要求1.一种数据库系统,包括一个或多个永久存储设备,其上保存了一个数据库;运行在多个节点上的多个数据库服务器;其中所述多个节点中的每一个节点都可以直接访问所述一个或多个永久存储设备;其中至少一部分所述数据库划分为多个所有权组;其中所述多个所有权组中的每个所有权组都被指派了一个所有者集合;其中只有那些运行在作为一个所有权组的所有者集合成员的数据库服务器上的进程才准许直接访问所述所有权组内部的数据。2.根据权利要求1所述的数据库系统,其中所述多个所有权组中的每个所有权组都被指定为无共享所有权组或是共享磁盘的所有权组;每个无共享所有权组都被指派了一个来自所述多个数据库服务器中的所有者;只有每个无共享所有权组的所有者才准许直接访问所述无共享所有权组内部的数据;以及所述多个数据库服务器中的每一个都准许直接访问指定为共享磁盘的所有权组的所有权组内部的数据。3.根据权利要求2所述的数据库系统,还包括一种机制,用于将共享磁盘所有权组这个指定改为无共享所有权组。4.根据权利要求3所述的数据库系统,其中所述机制被配置成响应于对所述共享磁盘的所有权组包含一个写热点的判断,将共享磁盘所有权组这个指定自动改为无共享所有权组。5.根据权利要求2所述的数据库系统,还包括一种机制,用于将无共享所有权组这个指定改为共享磁盘的所有权组。6.根据权利要求5所述的数据库系统,其中所述机制被配置成响应于对所述无共享所有权组包含一个读热点的判定,将无共享所有权组的指定自动改为共享磁盘的所有权组。7.根据权利要求3所述的数据库系统,其中所述机制还被配置成将无共享所有权组的指定改为共享磁盘的所有权组。8.根据权利要求7所述的数据库系统,其中所述机制被配置成响应于对所述无共享所有权组包含一个读热点的判定,将无共享所有权组的指定自动改为共享磁盘的所有权组。9.根据权利要求2所述的数据库系统,还包括一个分布式锁定管理器,其被配置成对指定为共享磁盘所有权组的所有权组内部的数据访问进行管理,而不对指定为无共享所有权组的所有权组内部数据的访问进行管理。10.一种对一个或多个永久存储设备中保存的数据库的访问进行管理的方法,其中所述永久存储设备能够直接访问多个节点上运行的多个数据库服务器,所述方法包括步骤将至少一部分所述数据库划分为多个所有权组;将一个所有者集合指派给所述多个所有权组中的每一个所有权组;以及只允许那些运行在归属于每个所有权组的所有者集合的数据库服务器上的进程直接访问所述所有权组内部的数据。11.根据权利要求10所述的方法,其中将一个所有者集合指派到所述多个所有权组中的每个所有权组的步骤包括将所述多个所有权组中的每个所有权组指定为无共享所有权组或是共享磁盘的所有权组;为每个无共享所有权组指派一个来自所述多个数据库服务器的所有者;只允许每个无共享所有权组的所有者直接访问所述无共享所有权组内部的数据;以及允许所述多个数据库服务器中的每一个直接访问指定为共享磁盘的所有权组的所有权组内部的数据。12.根据权利要求11所述的方法,还包括将共享磁盘的所有权组的指定改为无共享所有权组的步骤。13.根据权利要求12所述的方法,其中将共享磁盘的所有权组的指定改为无共享所有权组的步骤是响应于对所述共享磁盘所有权组包含一个写热点的判定而被自动执行的。14.根据权利要求11所述的方法,还包括将无共享所有权组的指定改为共享磁盘的所有权组的步骤。15.根据权利要求14所述的方法,其中将无共享所有权组的指定改为共享磁盘的所有权组的步骤是响应于对所述无共享所有权组包含一个读热点的判定而被自动执行的。16.根据权利要求12所述的方法,还包括将无共享所有权组的指定改为共享磁盘的所有权组的步骤。17.根据权利要求16所述的方法,其中将无共享所有权组的指定改为共享磁盘的所有权组的步骤是响应于对所述无共享所有权组包含一个读热点的判定而被自动执行的。18.根据权利要求11所述的方法,还包括使用一个分布式锁定管理器来管理对于指定为共享磁盘的所有权组的所有权组内部数据访问,而不对指定为无共享所有权组的所有权组内部数据访问进行管理的步骤。19.一种计算机可读介质,所述介质携带了用于管理对于一个或多个永久存储设备中保存的数据库的访问的指令,其中所述永久存储设备能够直接访问多个节点上运行的多个数据库服务器,所述指令中包含了用于执行以下步骤的指令将至少一部分所述数据库划分为多个所有权组;将一个所有者集合指派给所述多个所有权组中的每一个所有权组;以及只允许那些运行在归属于每个所有权组的所有者集合的数据库服务器上的进程直接访问所述所有权组内部的数据。20.根据权利要求19所述的计算机可读介质,其中将一个所有者集合指派到所述多个所有权组中的每个所有权组的步骤包括将所述多个所有权组中的每个所有权组指定为无共享所有权组或是共享磁盘的所有权组;从所述多个数据库服务器中为每个无共享所有权组指派一个所有者;只允许每个无共享所有权组的所有者直接访问所述无共享所有权组内部的数据;以及允许所述多个数据库服务器中的每一个服务器直接访问指定为共享磁盘的所有权组的所有权组内部的数据。21.根据权利要求20所述的计算机可读介质,还包括用于执行把共享磁盘的所有权组的指定改为无共享所有权组的步骤的指令。22.根据权利要求21所述的计算机可读介质,其中将共享磁盘的所有权组的指定改为无共享所有权组的步骤是响应于对所述共享磁盘所有权组包含一个写热点的判定而被自动执行的。23.根据权利要求20所述的计算机可读介质,还包括用于执行将无共享所有权组的指定改为共享磁盘的所有权组的步骤的指令。24.根据权利要求23所述的计算机可读介质,其中将无共享所有权组的指定改为共享磁盘的所有权组的步骤是响应于对所述无共享所有权组包含一个读热点的判定而被自动执行的。25.根据权利要求21所述的计算机可读介质,还包括用于执行将无共享所有权组的指定改为共享磁盘的所有权组的步骤的指令。26.根据权利要求25所述的计算机可读介质,其中将无共享所有权组的指定改为共享磁盘的所有权组的步骤是响应于对所述无共享所有权组包含一个读热点的判定而被自动执行的。27.根据权利要求20所述的计算机可读介质,还包括指令,用于执行使用一个分布式锁定管理器来管理对于指定为共享磁盘的所有权组的所有权组内部数据的访问,而不对指定为无共享所有权组的所有权组内部数据的访问进行管理的步骤。28.一种系统,包括能够直接访问一个数据库的多个节点;所述数据库包括一个第一数据集,其中多个节点中的每个节点都准许直接访问所述数据集;以及一个第二数据集,其中只有多个节点的一个子集才准许直接访问所述数据集;其中不归属于所述子集的节点被配置成在请求不归属于所述子集的节点执行那些涉及所述第二数据集内部数据的操作时,这些节点向归属于所述子集的节点发送请求。29.根据权利要求28所述的系统,其中所述子集具有一个单独的节点;以及对于所述第二数据集的所有访问都是经由所述单独节点进行的。30.根据权利要求28所述的系统,其中所述子集是一个第一子集;所述数据库包括一个第三数据集,其中只有多个节点的第二子集才准许直接访问所述数据集;以及所述第一子集与所述第二子集不同。31.根据权利要求30所述的系统,其中多个节点中的至少一个节点既归属于所述第一子集,又归属于所述第二子集。32.根据权利要求28所述的系统,还包括一种用于改变归属于所述子集的节点的机制。33.根据权利要求28所述的系统,还包括一种机制,所述机制响应于归属于所述子集的一个节点的故障,自动改变那些归属于所述子集的节点。34.根据权利要求28所述的系统,其中所述数据库包括多个数据项,其中第一数据集包括多个数据项中的一个或多个数据项,并且所述系统还包括一种机制,用于改变所述多个数据项中处于第一数据集的那些数据项。35.根据权利要求28所述的系统,其中所述数据库包括多个数据项,其中所述第二数据集包括多个数据项中的一个或多个数据项,并且所述系统还包括一种机制,用于改变所述多个数据项中处于第二数据集的那些数据项。36.根据权利要求28所述的系统,其中第一数据集是一个第一所有权组,第二数据集是一个第二所有权组。37.根据权利要求28所述的系统,其中所述子集是一个所有者集合。38.一种数据库系统,包括一个数据库;多个数据库服务器;其中所述多个数据库服务器中的每个数据库服务器都可以直接访问所述数据库;其中至少一部分所述数据库被划分成多个所有权组;其中所述多个所有权组中的至少一个所有权组被指派了一个所有者集合;以及其中在作为所有权组所有者集合成员的数据库服务器上运行的进程准许直接访问所述所有权组内部的数据。39.根据权利要求38所述的数据库系统,其中所述多个所有权组的每个所有权组都被指派了一个所有者集合。40.根据权利要求38所述的数据库系统,其中只有那些运行在作为一个所有权组所有者集合成员的数据库服务器上的进程才准许直接访问所述所有权组内部的数据。41.根据权利要求38所述的数据库系统,其中所述多个所有权组的至少一个所有权组包括一个或多个表空间。42.根据权利要求41所述的数据库系统,其中一个或多个表空间中的至少一个表空间是一个数据文件的集合。43.根据权利要求38所述的数据库系统,其中所述多个所有权组中的至少一个所有权组被指定为无共享所有权组;至少一个无共享所有权组被从所述多个数据库服务器中指派了一个所有者;以及只有每个无共享所有权组的所有者才准许直接访问所述无共享所有权组内部的数据。44.根据权利要求38所述的数据库系统,其中所述多个所有权组的至少一个所有权组被指定为共享磁盘的所有权组;以及所述多个数据库服务器中的每一个都准许直接访问那些指定为共享磁盘所有权组的所有权组内部的数据。45.根据权利要求38所述的数据库系统,其中所述多个所有权组中的每个所有权组都被指定为无共享所有权组或是共享磁盘的所有权组;以及每个无共享所有权组都从所述多个数据库服务器中指派了一个单独的所有者。46.根据权利要求38所述的数据库系统,其中所述多个所有权组中的至少一个所有权组被指定为多种类型的所有权组中的某个特定类型的所有权组。47.根据权利要求46所述的数据库系统,还包括一种机制,用于改变所指定的所有权组的特定类型。48.根据权利要求46所述的数据库系统,其中所述多个所有权组中的至少一个所有权组被指定为所述多种类型的所有权组中的第一类型的所有权组;以及所述多个所有权组中的至少一个所有权组被指定为所述多种类型的所有权组中的第二类型的所有权组。49.根据权利要求48所述的数据库系统,其中所述第一类型的所有权组是一个无共享所有权组;以及所述第二类型的所有权组是一个共享磁盘的所有权组。50.根据权利要求49所述的数据库系统,其中所述多个所有权组中的每个所有权组都被指定为无共享所有权组或是共享磁盘的所有权组。51.根据权利要求46所述的数据库系统,其中,对于多种类型的所有权组中的至少一种类型的所有权组来说,在指定为至少一种类型的所有权组的每个所有权组的所有者集合中只提供了多个数据库服务器中的一个数据数据库服务器。52.根据权利要求46所述的数据库系统,其中,对于多种类型的所有权组中的至少一种类型的所有权组来说,多个数据库服务器种的每个数据库服务器都包括在指定为至少一种类型的所有权组的每个所有权组的所有者集合中。53.根据权利要求46所述的数据库系统,其中,对于多种类型的所有权组中的至少一种类型的所有权组来说,多个数据库服务器中至少两个数据库服务器而少于全部的数据库服务器包括在指定为至少一种类型的所有权组的每个所有权组的所有者集合中。54.根据权利要求38所述的数据库系统,还包括多个数据库服务器中的第一数据库服务器,其中第一数据库服务器希望得到那些包括在指派给某个所有者集合的某个所有权组中的数据;其中,如果第一数据库服务器包括在所述特定的所有者集合中,则第一数据库服务器上执行的进程将会直接检索数据;以及其中,如果第一数据库服务器并没有包括在所述特定所有者集合之中,则第一数据库服务器上执行的进程从所述多个数据库服务器中的第二数据库服务器请求和接收数据,其中所述第二数据库服务器包括在所述特定的所有者集合之中。55.根据权利要求54所述的数据库系统,其中所述特定的所有权组是一个共享磁盘的所有权组,所述特定的所有者集合包括多个数据库服务器,并且在所述第一数据库服务器上执行的进程直接检索数据。56.根据权利要求54所述的数据库系统,其中所述特定的所有权组是一个无共享所有权组,并且多个数据库服务器中的第二数据库服务器是所述特定所有者集合中的唯一的数据库服务器。57.根据权利要求54所述的数据库系统,其中所述特定的所有权组是一个无共享所有权组,并且多个数据库服务器中的第一数据库服务器是所述特定所有者集合中的唯一的数据库服务器。58.根据权利要求38所述的数据库系统,其中多个所有权组中的至少一个所有权组被指派了来自所述多个数据库服务器之中的一个所有者,并且其中所述数据库系统还包括一种机制,用于把至少一个所有权组的所有者从多个数据库服务器中的第一数据库服务器重新指派到多个数据库服务器中的第二数据库服务器。59.根据权利要求58所述的数据库系统,其中至少一个所有权组是一个无共享所有权组。60.根据权利要求58所述的数据库系统,其中所述机制被配置成响应于一个请求而为至少一个所有权组重新指派所有者。61.根据权利要求58所述的数据库系统,其中所述机制被配置成响应于所述第一数据库服务器故障而为至少一个所有权组重新指派所有者。62.根据权利要求38所述的数据库系统,还包括一种机制,用于将某个所有权组从第一所有者集合转移到第二所有者集合,其中所述机制被配置成指示所述多个数据库服务器停止创建特定所有权组内部新版本的数据;以及当通过所述第一所有者集合而对所述数据进行访问所有事务都已提交或是中断的时候,改变那些表示所述特定所有权组所有权的数据,以便指示所述第二所有者集合即为所述特定所有权组的所有者。63.根据权利要求62所述的数据库系统,其中响应于所述机制将所述特定所有权组从所述第一所有者集合转移到所述第二所有者集合时出现的故障,所述机制还被配置成确定故障是否发生在改变那些指示所述特定所有权组所有权的数据之前;如果所述故障发生在改变指示所述特定所有权组的所有权的数据之前,则将所述第一所有者集合恢复为所述特定所有权组的所有者;以及如果所述故障发生在改变指示所述特定所有权组的所有权的数据之后,则将所述第二所有者集合保持为所述特定所有权组的所有者。64.根据权利要求38所述的数据库系统,还包括一种机制,用于将某个所有权组从第一所有者集合转移到第二所有者集合;以及一种查询,所述查询包含在数据库中,其中所述查询与一个涉及所述第一所有者集合的执行计划相关联,并且其中,在通过所述机制而将所述特定的所有权组从所述第一所有者集合移动到所述第二所有者集合之后,将会生成一个涉及所述第二所有者集合的新的执行计划。65.根据权利要求38所述的数据库系统,还包括一种机制,用于将一个数据项从第一所有权组重新指派到第二所有权组,其中所述机制被配置成禁止多个数据库服务器访问所述数据项;以及当所有正在访问所述数据项的事务都已提交或者中断的时候,改变指示所述数据项所属所有权组的数据,以便指示所述数据项属于所述第二所有权组。66.根据权利要求65所述的数据库系统,其中所述机制还被配置成改变第一数据来指示所述数据项所属的所有权组;以及在改变所述第一数据之前,改变第二数据来指示所述数据项所属的所有权组。67.根据权利要求66所述的数据库系统,其中所述第一数据位于一个控制文件,以及所述第二数据位于一个数据字典。68.根据权利要求66所述的数据库系统,其中响应于所述机制将所述数据项从所述第一所有权组重新指派到所述第二所有权组时出现的故障,所述机制还被配置成确定所述故障是否出现在改变所述第二数据之前;如果所述故障出现在改变所述第二数据之前,则将所述数据项恢复到所述第一所有权组;以及如果所述故障出现在改变所述第二数据之后,则通过改变所述第一数据来完成将所述数据项从所述第一所有权组重新指派到所述第二所有权组。69.根据权利要求65所述的数据库系统,其中所述机制还被配置成确定所述第二所有权组是否正在经历一个所有权改变;以及如果所述第二所有权组正在经历一个所有权改变,则将所述数据项标记为移动延迟。70.一种用于将数据项所有权从第一所有者集合转移到第二所有者集合的系统,所述系统包括多个数据库服务器;一个数据库,其包括了所述数据项;一种机制,用于管理对于所述数据项的访问;其中所述多个数据库服务器被告知所述数据项正从所述第一所有者集合转移到所述第二所有者集合;其中所述机制被配置成在所述多个数据库服务器被告知之后,允许所述第一所有者集合的成员以及所述第二所有者集合的成员直接访问所述数据项;其中所保存的数据指示所述第二所有者集合即为所述数据项的专有所有者;以及其中所述机制被配置成在检测到正在通过所述第一所有者集合来访问所述数据项的所有事务都已提交或者中断之后,只允许所述第二所有者集合的成员直接访问所述数据项。71.根据权利要求70所述的系统,其中当所有在所述通知步骤之前开始执行的事务都已提交或是中断的时候,正在通过所述第一所有者集合来访问所述数据项的所有事务都已提交或是中断。72.根据权利要求70所述的系统,其中所述多个数据库服务器是由一个发送到所述多个数据库服务器的刷新缓存的消息来通知的。73.根据权利要求70所述的系统,其中在通知所述多个数据库服务器之前,将会保存那些标识所述第一所有者集合、所述第二所有者集合以及指示所述数据项所有者正在转移的数据。74.根据权利要求70所述的系统,其中如果所述多个数据库服务器中的某个数据库服务器在得知所述数据项正从所述第一所有者集合转移到所述第二所有者集合之前开始了一个事务,则所述事务将被处理,就如所述第一所有者集合即为所述数据项的所有者;以及如果所述多个数据库服务器中的所述特定数据库服务器是在得知了所述数据项正从所述第一所有者集合转移到所述第二所有者集合之后才开始所述事务,则所述事务将被处理,就如所述第二所有者集合即为所述数据项的所有者。75.根据权利要求70所述的系统,其中所述机制是一种共享磁盘的锁定机制。76.一种用于对能够直接访问数据库的多个节点所进行的数据库访问加以管理的方法,所述方法包括步骤将数据库的至少第一部分划分为第一数据集,其中多个节点中的每个节点都准许直接访问所述数据集;以及将数据库的至少第二部分划分为第二数据集,其中只有多个节点的一个子集才准许直接访问所述数据集;其中,在要求不属于所述子集的节点执行那些涉及所述第二数据集内部数据的操作时,这些不属于所述子集的节点将被配置成向归属于所述子集的节点发送请求。77.根据权利要求76所述的系统,其中所述子集是一个单独节点;以及对于所述第二数据集的所有访问都是经由所述单独节点的。78.根据权利要求76所述的方法,其中所述子集是一个第一子集,并且其中所述方法还包括步骤至少将所述数据库的第三部分划分成一个第三数据集,只有第二子集的多个节点才准许直接访问所述数据集,其中所述第一子集不同于所述第二子集。79.根据权利要求78所述的方法,其中多个节点中的至少一个节点既属于所述第一子集又属于所述第二子集。80.根据权利要求76所述的方法,还包括步骤改变归属于所述子集的节点。81.根据权利要求76所述的方法,还包括步骤响应于归属于所述子集的一个节点的故障,自动改变归属于所述子集的那些节点。82.根据权利要求76所述的方法,其中所述数据库包括多个数据项,其中所述第一数据集包括多个数据项中的一个或多个数据项,并且其中所述方法还包括步骤改变多个数据项中归属于所述第一数据集的数据项。83.根据权利要求76所述的方法,其中数据库包括多个数据项,其中所述第二数据集包括所述多个数据项中的一个或多个数据项,并且其中所述方法还包括步骤改变多个数据项中归属于所述第二数据集的数据项。84.根据权利要求76所述的方法,其中所述第一数据集是一个第一所有权组,所述第二数据集是一个第二所有权组。85.根据权利要求76所述的方法,其中所述子集是一个所有者集合。86.一种用于管理数据库访问的方法,其中所述数据库可以由多个数据库服务器进行直接访问,所述方法包括步骤至少将所述数据库的一部分划分为多个所有权组;将一个所有者集合指派给所述多个所有权组中的至少一个所有权组;以及允许在归属于每个所有权组所有者集合的数据库服务器上运行的进程直接访问每个所有权组内部的数据。87.根据权利要求86所述的方法,还包括步骤将一个所有者集合指派给所述多个所有权组中的每个所有权组。88.根据权利要求86所述的方法,还包括步骤只允许那些在作为某个特定所有权组所有者集合成员的数据库服务器上运行的进程直接访问所述特定所有权组内部的数据。89.根据权利要求86所述的方法,其中所述多个所有权组中的至少一个所有权组包括一个或多个表空间。90.根据权利要求89所述的方法,其中一个或多个表空间之中的至少一个表空间是一个数据文件的集合。91.根据权利要求86所述的方法,还包括步骤将所述多个所有权组中的至少一个所有权组指定为无共享所有权组;向至少一个无共享所有权组指派一个来自所述多个数据库服务器之中的所有者;以及只允许每个无共享所有权组的所有者直接访问所述无共享所有权组内部的数据。92.根据权利要求86所述的方法,还包括步骤将所述多个所有权组中的至少一个所有权组指定为共享磁盘的所有权组;以及允许所述多个数据库服务器中的每一个直接访问那些指定为共享磁盘的所有权组的所有权组内部的数据。93.根据权利要求86所述的方法,还包括步骤将所述多个所有权组中的每一个所有权组指定为无共享所有权组或是共享磁盘的所有权组;以及从所述多个数据库服务器中为每个无共享所有权组指派一个单独的所有者。94.根据权利要求86所述的方法,还包括步骤将所述多个所有权组中的至少一个所有权组指定为多种类型的所有权组中的某种特定类型的所有权组。95.根据权利要求94所述的方法,还包括步骤改变所指定的所有权组的类型。96.根据权利要求94所述的方法,还包括步骤将所述多个所有权组中的至少一个所有权组指定为所述多种类型的所有权组中的第一类型的所有权组;以及将所述多个所有权组中的至少一个所有权组指定为所述多种类型的所有权组中的第二类型的所有权组。97.根据权利要求96所述的方法,其中所述第一类型的所有权组是一个无共享所有权组;以及所述第二类型的所有权组是一个共享磁盘的所有权组。98.根据权利要求97所述的方法,还包括步骤将所述多个所有权组中的每个所有权组都指定为无共享所有权组或是共享磁盘的所有权组。99.根据权利要求94所述的方法,还包括步骤对所述多种类型的所有权组的至少一种类型的所有权组来说,仅仅为指定为至少一种类型的所有权组的每个所有权组提供了处于所有者集合的多个数据库服务器之中的一个数据库服务器。100.根据权利要求94所述的方法,还包括步骤对于所述多种类型的所有权组的至少一种类型的所有权组来说,将多个数据库服务器中的每个数据库服务器都包括在了指定为至少一种类型的所有权组的每个所有权组的所有者集合之中。101.根据权利要求94所述的方法,还包括步骤对于所述多种类型的所有权组的至少一种类型的所有权组来说,将所述多个数据库服务器中至少两个数据库服务器而少于全部的数据库服务器包括在了标记指定为至少一种类型的所有权组的每个所有权组的所有者集合之中。102.根据权利要求86所述的方法,其中多个数据库服务器中的第一数据库服务器希望得到包括在指派给某个特定所有者集合的某个特定所有权组的数据;如果所述第一数据库服务器包括在所述特定的所有者集合中,则运行在所述第一数据库服务器上的进程将会直接检索所述数据;以及如果所述第一数据库服务器并不包括在所述特定的所有者集合中,则运行在所述第一数据库服务器上的进程将会从所述多个数据库服务器中的第二数据库服务器请求和接收数据,其中所述第二数据库服务器包括在所述特定的所有者集合中。103.根据权利要求102所述的方法,其中所述特定的所有权组是一个共享磁盘的所有权组,所述特定的所有者集合包括所述多个数据库服务器,并且运行在所述第一数据库服务器上的进程直接检索所述数据。104.根据权利要求102所述的方法,其中所述特定所有权组是一个无共享所有权组,所述多个数据库服务器中的第二数据库服务器是所述特定的所有者集合中的唯一的数据库服务器。105.根据权利要求102所述的方法,其中所述特定所有权组是一个无共享所有权组,所述多个数据库服务器中的第一数据库服务器是所述特定所有权组中的唯一的数据库服务器。106.根据权利要求86所述的方法,还包括步骤从所述多个数据库服务器中向所述多个所有权组中的至少一个所有权组指派一个所有者;以及将所述至少一个所有权组的所有者从所述多个数据库服务器的第一数据库服务器重新指派到所述多个数据库服务器中的第二数据库服务器。107.根据权利要求106所述的方法,其中所述至少一个所有权组是一个无共享所有权组。108.根据权利要求106所述的方法,其中为所述至少一个所有权组重新指派所有者集合的步骤是响应于一个请求而被执行的。109.根据权利要求106所述的方法,其中为所述至少一个所有权组重新指派所有者集合的步骤是响应于所述第一数据库服务器故障而被自动执行的。110.根据权利要求86所述的方法,还包括步骤通过执行以下步骤而将某个特定所有权组从第一所有者集合转移到第二所有者集合命令所述多个数据库服务器停止创建所述特定所有权组内部新版本的数据;以及当所有经由所述第一所有者集合来访问所述数据的事务都已提交或是中断的时候,改变那些指示所述特定所有权组的所有权的数据,以便指示所述第二所有权组即为所述特定所有权组的所有者。111.根据权利要求110所述的方法,还包括步骤响应于将所述特定所有权组从所述第一所有者集合转移到所述第二所有者集合时出现的故障,确定所述故障是否是在改变了指示所述特定所有权组所有权的数据之前出现的;如果所述故障出现在改变指示所述特定所有权组所有权的数据之前,则将所述第一所有权组恢复为所述特定所有权组的所有者;以及如果所述故障出现在改变指示所述特定所有权组所有权的数据之后,则将所述第二所有者集合保持为所述特定所有权组的所有者。112.根据权利要求86所述的方法,其中在所述数据库中包括一个查询,其中所述查询与一个涉及第一所有者集合的执行计划相关联,并且其中所述方法还包括步骤将某个特定所有权组从所述第一所有者集合转移到第二所有者集合;以及在将所述所有权组从所述第一所有者集合转移到所述第二所有者集合之后,产生一个涉及所述第二所有者集合的新的执行计划。113.根据权利要求86所述的方法,还包括步骤通过执行以下步骤而将一个数据项从第一所有权组重新指派到第二所有权组禁止所述多个数据库服务器访问所述数据项;以及当访问所述数据项的所有事务都已提交或是中断的时候,改变指示所述数据项所属所有权组的数据,以便指示所述数据项属于所述第二所有权组。114.根据权利要求113所述的方法,还包括步骤改变第一数据,以便指示所述数据项所属的所有权组;以及在改变第一数据之前改变第二数据,以便指示所述数据项所属的所有权组。115.根据权利要求114所述的方法,其中所述第一数据处于一个控制文件之中,所述第二数据处于一个数据字典之中。116.根据权利要求114所述的方法,还包括步骤响应于将所述数据项从所述第一所有权组重新指派到所述第二所有权组时出现的故障,确定所述故障是否是在改变所述第二数据之前发生的;如果所述故障在改变所述第二数据之前发生,则将所述数据项恢复到所述第一所有权组;以及如果所述故障发生在改变所述第二数据之后,则通过改变所述第一数据来完成所述数据项从所述第一所有权组到所述第二所有权组的重新指派。117.根据权利要求113所述的方法,还包括步骤确定所述第二所有权组是否正在经历所有权变化;以及如果所述第二所有权组正在经历所有权变化,则将所述数据项标记为移动延迟。118.一种用于将数据项所有权从第一所有者集合移动到第二所有者集合的方法,所述方法包括步骤向多个数据库服务器通知所述数据项正从所述第一所有者集合转移到所述第二所有者集合;在通知了所述多个数据库之后,允许所述第一所有者集合成员以及所述第二所有者集合成员直接访问所述数据项;检测所有经由所述第一所有者集合访问数据项的事务何时提交或者中断;以及在检测了所有经由所述第一所有者集合访问所述数据项的事务何时提交或者中断之后,执行以下步骤保存那些指示所述第二所有者集合即为所述数据项专有所有者的数据;以及只允许所述第二所有者集合中的成员直接访问所述数据项。119.根据权利要求118所述的方法,其中检测所有经由所述第一所有者集合访问所述数据项的事务何时提交或中断的步骤包括步骤检测在所述通知步骤之前执行的所有事务何时提交或中断。120.根据权利要求118所述的方法,其中向所述多个数据库服务器通知所述数据项正从所述第一所有者集合转移到所述第二所有者集合的步骤包括以下步骤向所述多个数据库服务器发送一个刷新缓存的消息。121.根据权利要求118所述的方法,其中在所述通知所述多个数据库服务器的步骤之前执行以下步骤保存那些识别所述第一所有者集合、所述第二所有者集合以及指示所述数据项所有者正在转移的数据。122.根据权利要求118所述的方法,其中允许所述第一所有者集合以及所述第二所有者集合成员直接访问所述数据项的步骤包括以下步骤如果在被告知所述数据项正从所述第一所有者集合移动到所述第二所有者集合之前,所述多个数据库服务器中的某个特定数据库服务器开始了一个事务,则将会像所述第一所有者集合即为所述数据项所有者那样来对所述事务进行处理;以及如果在被告知所述数据项正从所述第一所有者集合移动到所述第二所有者集合之后,所述多个数据库服务器中的所述特定数据库服务器开始了一个事务,则将会像所述第二所有者集合即为所述数据项所有者那样来对所述事务进行处理。123.根据权利要求118所述的方法,其中共享磁盘锁定机制执行以下步骤允许所述第一所有者集合成员以及所述第二所有者集合成员直接访问所述数据项;以及只允许所述第二所有者集合成员直接访问所述数据项。124.一种计算机可读介质,其携带了一个或多个指令序列,用于管理多个可以直接访问数据库的节点所进行的数据库访问,其中一个或多个处理器执行一个或多个指令序列,以使一个或多个处理器执行以下步骤至少将所述数据库的第一部分划分为第一数据集,其中所述多个节点中的每个节点都准许直接访问所述数据集;以及至少将所述数据库的第二部分划分为第二数据集,其中只有所述多个节点的一个子集才准许直接访问所述数据集;其中,在不属于所述子集的节点被请求执行那些涉及所述第二数据集内部数据的操作时,这些不属于所述子集的节点将被配置成向归属于所述子集的节点发送请求。125.根据权利要求124所述的计算机可读介质,其中所述子集是一个单独节点;以及对于所述第二数据集的所有访问都是经由所述单独节点的。126.根据权利要求124所述的计算机可读介质,其中所述子集是一个第一子集,并且还包括指令,当一个或多个处理器执行这些指令时,将会使一个或多个处理器执行以下步骤至少将数据库的第三部分划分成一个第三数据集,只有所述多个节点的第二子集才准许直接访问所述数据集,其中所述第一子集不同于所述第二子集。127.根据权利要求126所述的计算机可读介质,其中所述多个节点中的至少一个节点既属于所述第一子集又属于所述第二子集。128.根据权利要求124所述的计算机可读介质,还包括指令,当一个或多个处理器执行这些指令时,将会使一个或多个处理器执行以下步骤改变归属于所述子集的节点。129.根据权利要求124所述的计算机可读介质,还包括指令,当一个或多个处理器执行这些指令时,将会使一个或多个处理器执行以下步骤响应于归属于所述子集的一个节点的故障,自动改变归属于所述子集的那些节点。130.根据权利要求124所述的计算机可读介质,其中所述数据库包括多个数据项,其中所述第一数据集包括所述多个数据项中的一个或多个数据项,并且还包括指令,当一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤改变所述多个数据项中归属于所述第一数据集的数据项。131.根据权利要求124所述的计算机可读介质,其中所述数据库包括多个数据项,其中所述第一数据集包括所述多个数据项中的一个或多个数据项,并且还包括指令,当一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤改变所述多个数据项中归属于所述第二数据集的数据项。132.根据权利要求124所述的计算机可读介质,其中所述第一数据集是一个第一所有权组,以及所述第二数据集是一个第二所有权组。133.根据权利要求124所述的计算机可读介质,其中所述子集是一个所有者集合。134.一种计算机可读介质,所述介质携带了一个或多个用于管理数据库访问的指令序列,其中所述数据库可以由多个数据库服务器进行访问,其中一个或多个处理器执行一个或多个指令序列,以使所述一个或多个处理器执行以下步骤至少将所述数据库的一部分划分为多个所有权组;将一个所有者集合指派给所述多个所有权组中的至少一个所有权组;以及允许在归属于每个所有权组所有者集合的数据库服务器上运行的进程直接访问每个所有权组内部的数据。135.根据权利要求134所述的计算机可读介质,还包括指令,当一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将一个所有者集合指派给所述多个所有权组中的每个所有权组。136.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤只允许那些在作为某个特定所有权组所有者集合成员的数据库服务器上运行的进程直接访问所述特定所有权组内部的数据。137.根据权利要求134所述的计算机可读介质,其中所述多个所有权组中的至少一个所有权组包括一个或多个表空间。138.根据权利要求137所述的计算机可读介质,其中所述一个或多个表空间之中的至少一个表空间是一个数据文件的集合。139.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将所述多个所有权组中的至少一个所有权组标记为无共享所有权组;向至少一个无共享所有权组指派一个来自所述多个数据库服务器之中的所有者;以及只允许每个无共享所有权组的所有者直接访问所述无共享所有权组内部的数据。140.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将所述多个所有权组中的至少一个所有权组标记为共享磁盘的所有权组;以及允许所述多个数据库服务器中的每一个直接访问那些标记为共享磁盘的所有权组的所有权组内部的数据。141.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将所述多个所有权组中的每一个所有权组标记为无共享所有权组或是共享磁盘的所有权组;以及从所述多个数据库服务器中为每个无共享所有权组指派一个单独的所有者。142.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将所述多个所有权组中的至少一个所有权组标记为多种类型的所有权组中的某种特定类型的所有权组。143.根据权利要求142所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤改变所标记的所有权组的类型。144.根据权利要求142所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将所述多个所有权组中的至少一个所有权组标记为所述多种类型的所有权组中的第一类型的所有权组;以及将所述多个所有权组中的至少一个所有权组标记为所述多种类型的所有权组中的第二类型的所有权组。145.根据权利要求144所述的计算机可读介质,其中所述第一类型的所有权组是一个无共享所有权组;以及所述第二类型的所有权组是一个共享磁盘的所有权组。146.根据权利要求145所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将所述多个所有权组中的每个所有权组都标记为无共享所有权组或是共享磁盘的所有权组。147.根据权利要求142所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤对所述多种类型的所有权组的至少一种类型的所有权组来说,仅仅为标记为至少一种类型的所有权组的每个所有权组提供了处于所有者集合的多个数据库服务器之中的一个数据库服务器。148.根据权利要求142所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤对于所述多种类型的所有权组的至少一种类型的所有权组来说,将所述多个数据库服务器中的每个数据库服务器都包括在了标记为至少一种类型的所有权组的每个所有权组的所有者集合之中。149.根据权利要求142所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤对于所述多种类型的所有权组的至少一种类型的所有权组来说,将所述多个数据库服务器中至少两个而少于全部的数据库服务器包括在了标记为所述至少一种类型的所有权组的每个所有权组的所有者集合之中。150.根据权利要求134所述的计算机可读介质,其中所述多个数据库服务器中的第一数据库服务器希望得到包括在指派给某个特定所有者集合的某个特定所有权组中的数据;如果所述第一数据库服务器包括在所述特定的所有者集合中,则运行在所述第一数据库服务器上的进程将会直接检索所述数据;以及如果所述第一数据库服务器并不包括在所述特定的所有者集合中,则运行在所述第一数据库服务器上的进程将会从所述多个数据库服务器中的第二数据库服务器请求和接收数据,其中所述第二数据库服务器包括在所述特定的所有者集合中。151.根据权利要求150所述的计算机可读介质,其中所述特定所有权组是一个共享磁盘的所有权组,所述特定所有者集合包括所述多个数据库服务器,并且运行在所述第一数据库服务器上的进程直接检索所述数据。152.根据权利要求150所述的计算机可读介质,其中所述特定所有权组是一个无共享所有权组,所述多个数据库服务器中的第二数据库服务器是所述特定所有者集合中的唯一的数据库服务器。153.根据权利要求150所述的计算机可读介质,其中所述特定所有权组是一个无共享所有权组,所述多个数据库服务器中的第一数据库服务器是所述特定所有者集合中的唯一的数据库服务器。154.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤从所述多个数据库服务器中向所述多个所有权组中的至少一个所有权组指派一个所有者;以及将至少一个所有权组的所有者从所述多个数据库服务器的第一数据库服务器重新指派到所述多个数据库服务器中的第二数据库服务器。155.根据权利要求154所述的计算机可读介质,其中所述至少一个所有权组是一个无共享所有权组。156.根据权利要求154所述的计算机可读介质,其中为所述至少一个所有权组重新指派所有者集合的步骤是响应于一个请求而被执行的。157.根据权利要求154所述的计算机可读介质,其中为所述至少一个所有权组重新指派所有者集合的步骤是响应于所述第一数据库服务器故障而被自动执行的。158.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤通过执行以下步骤而将某个特定所有权组从第一所有者集合转移到第二所有者集合命令所述多个数据库服务器停止创建所述特定所有权组内部新版本的数据;以及当所有经由所述第一所有者集合来访问所述数据的事务都已提交或是中断的时候,改变那些指示所述特定所有权组的所有权的数据,以便指示所述第二所有权组即为所述特定所有权组的所有者。159.根据权利要求158所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤响应于将所述特定所有权组从所述第一所有者集合转移到所述第二所有者集合时出现的故障,确定所述故障是否是在改变指示所述特定所有权组所有权的数据之前出现的;如果所述故障出现在改变指示所述特定所有权组所有权的数据之前,则将所述第一所有者集合恢复为所述特定所有权组的所有者;以及如果所述故障出现在改变指示所述特定所有权组所有权的数据之后,则将所述第二所有者集合保持为所述特定所有权组的所有者。160.根据权利要求134所述的计算机可读介质,其中在所述数据库中包括一个查询,其中所述查询与一个涉及第一所有者集合的执行计划相关联,并且还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤将某个特定所有权组从所述第一所有者集合转移到所述第二所有者集合;以及在将所述所有权组从所述第一所有者集合转移到所述第二所有者集合之后,产生一个涉及所述第二所有者集合的新的执行计划。161.根据权利要求134所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤通过执行以下步骤而将一个数据项从第一所有权组重新指派到第二所有权组禁止所述多个数据库服务器访问所述数据项;以及当访问所述数据项的所有事务都已提交或者中断的时候,改变指示所述数据项所属所有权组的数据,以便指示所述数据项属于所述第二所有权组。162.根据权利要求161所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤改变第一数据,以便指示所述数据项所属的所有权组;以及在改变所述第一数据之前改变第二数据,以便指示所述数据项所属的所有权组。163.根据权利要求162所述的计算机可读介质,其中所述第一数据处于一个控制文件之中,以及所述第二数据处于一个数据字典之中。164.根据权利要求162所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤响应于将所述数据项从所述第一所有权组重新指派到所述第二所有权组时出现的故障,确定所述故障是否是在改变所述第二数据之前发生的;如果所述故障发生在改变所述第二数据之前,则将所述数据项恢复到所述第一所有权组;以及如果所述故障发生在改变第二数据之后,则通过改变所述第一数据来完成所述数据项从所述第一所有权组到所述第二所有权组的重新指派。165.根据权利要求161所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤确定所述第二所有权组是否正在经历所有权变化;以及如果所述第二所有权组正在经历所有权变化,则将所述数据项标记为移动延迟。166.一种计算机可读介质,其携带了一个或多个指令序列,用于将数据项所有权从第一所有者集合移动到第二所有者集合,其中一个或多个处理器执行所述一个或多个指令序列,以使所述一个或多个处理器执行以下步骤向多个数据库服务器通知所述数据项正从所述第一所有者集合移动到所述第二所有者集合;在通知了所述多个数据库之后,允许所述第一所有者集合成员以及所述第二所有者集合成员直接访问所述数据项;检测所有经由所述第一所有者集合访问数据项的事务何时提交或者中断;以及在检测了所有经由所述第一所有者集合访问所述数据项的事务何时提交或者中断之后,执行以下步骤保存指示所述第二所有者集合即为所述数据项专有所有者的数据;以及只允许所述第二所有者集合中的成员直接访问所述数据项。167.根据权利要求166所述的计算机可读介质,其中检测所有经由所述第一所有者集合访问所述数据项的事务何时提交或中断的指令还包括指令,当一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤检测那些在所述通知步骤之前执行的事务何时提交或中断。168.根据权利要求166所述的计算机可读介质,其中向所述多个数据库服务器通知所述数据项正从所述第一所有者集合转移到所述第二所有者集合的指令还包括指令,当一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤向所述多个数据库服务器发送一个刷新缓存的消息。169.根据权利要求166所述的计算机可读介质,还包括指令,当所述一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤在通知所述多个数据库服务器之前,保存那些识别所述第一所有者集合、所述第二所有者集合以及指示所述数据项所有者正在转移的数据。170.根据权利要求166所述的计算机可读介质,其中允许所述第一所有者集合以及所述第二所有者集合成员直接访问所述数据项的指令还包括指令,当一个或多个处理器执行这些指令时,将会使所述一个或多个处理器执行以下步骤如果在被告知所述数据项正从所述第一所有者集合移动到所述第二所有者集合之前,所述多个数据库服务器中的某个特定数据库服务器开始了一个事务,则将会像所述第一所有者集合即为所述数据项所有者那样来对所述事务进行处理;以及如果在被告知所述数据项正从所述第一所有者集合移动到所述第二所有者集合之后,所述多个数据库服务器中的某个特定数据库服务器开始了一个事务,则将会像所述第二所有者集合即为所述数据项所有者那样来对所述事务进行处理。171.根据权利要求166所述的计算机可读介质,其中共享磁盘锁定机制执行以下步骤允许所述第一所有者集合成员以及第二所有者集合成员直接访问所述数据项;以及只允许所述第二所有者集合成员直接访问所述数据项。全文摘要至少一部分数据库(250)被划分成所有权组(230,232,234,236),其中每一个都被指派了一个或多个数据库服务器(208,210,212)作为所有者。指派为所有者(s208,s210,s121)的数据库服务器(208,210,212)被看作是这个所有权组中全部数据项的拥有者。就是说它们被允许在所有权组中直接访问数据项,而其他数据库服务器则不准许直接访问这些数据项。一个数据库系统中包括一个或多个保存了数据库(250)的永久存储设备(214,216),以及运行在多个可以直接访问永久存储设备(214,216)的节点(202,204,206)上的多个数据库服务器(208,210,212)。至少一部分数据库(250)被划分成了多个所有权组(230,232,234,236),其中每个所有权组都被指派了一个所有者集合。只有在归属于一个所有者集合的数据库服务器上运行的进程才准许直接访问这个所有权组内部的数据。文档编号G06F11/00GK1505788SQ01822844公开日2004年6月16日申请日期2001年6月28日优先权日2001年6月28日发明者詹弗兰科·普措卢,詹弗兰科普措卢申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1