用于并发数据库管理系统表操作的方法和设备的制作方法

文档序号:6419299阅读:170来源:国知局

专利名称::用于并发数据库管理系统表操作的方法和设备的制作方法
技术领域
:本发明涉及以这卸载和装入数据库表的处理。本发明尤其涉及增加数据库表卸载和装入的速度的并行处理技术的应用。本发明更进一步涉及在对称多处理(SMP)环境中应用于卸载和装入数据库表的并行处理技术。
背景技术
:现代数据库管理系统日益受到保存更大的数据存储量的要求。此外,由于数据库的增大,现代数据库内的结构越来越复杂。一般来说,数据库以表格形式保存数据,每个表保存一或多行相关数据。例如,一个基本数据库表可以保存多个,例如,具有属于一团体的个人的名称、社会保险号、地址和电话的行。当该团体增加新成员时该数据库增大,而当包括成员的附加信息时该数据库不但增大而且还变得复杂。例如,更大更复杂的数据库除了保存以上信息外,还可以保存可能为图形格式的、示出俱乐部成员的居住地的地图。通过包括工作单位地址和示出工作单位地点的附加图形体图,该数据库再增加大小和复杂度。通过保存的数据库其它表或行指针,还可能增加该数据库表的复杂度。例如,指向在另一表中保存的一组同事的指针,指向邻近团体成员的指针,或指向可以保存附加成员数据的任意多项的指针。常规的数据库管理系统(DBMS)通过分配存储块来提供建造数据库表的空间。一旦定义了表,DBMS就会分配存储相关数据行所必需的存储块。例如,如果一个表将建造成含有100,000行,并且该表的行被限定为使得每一存储块可以装下100行,那么DBMS就会分配1,000块来建造该表。DBMS系统一般以邻接的存储块组分配存储块。一个邻接的被分配的存储块组通常称为一个盘区。一般来说,各个盘区的大小是变化的。使用上述示例,DBMS可以利用1,000个存储块构成的单一盘区、500个存储块构成的2个盘区或盘区大小的其它组合,来分配所需要的1,000个存储块以便建造该表。一旦分配了所需要的存储块,就在利用这些分配的存储块的表的行中存储数据。在建造数据库之后,可以添加附加数据给该表,并且该DBMS会按需要分配附加的存储块。例如,如果用户给该表添加250行,使用以上参数,则需要分配附加的3个存储块。在建造数据库之后,也可以删除数据库中的信息。此时,行删除通过使用SQL发生以删除表中的行。例如,用户可以从存储块1删除50行、从存储块20删除40行和从存储块60删除30行。当发生这种情况时,会使得在该表中存在比保存出现在该表中的数据所需的存储块更多的存储块。此外,该数据库内的数据会被更新。例如,使用上述数据库表,还没有参加工作的团体成员可以在保存他/她的名称、地址、社会保险号和电话号码的分配表中占有一行。在参加工作时,该行将更新为包括工作单位地址和相关信息的行。但是,如果作为更新的结果添加实质性的信息量,那么原来的行可能没具有足够数据存储块来保存更新的信息。当一行被更新并且原来的行没具有足够空间保存全部更新的信息时,发生行移动。当这种情况发生时,行被移动到有更多空间的存储位置,并且在原来的行驻留的存储块中放一指针,该指针设置成指向移往的行的存储位置。如果表存在实质性更新并且没有足够的空间分配给原来的行,则引起大量行移动。在一个存储块时常没有足够的空间保存更新的行。在这种情况下,该行被移往和原来的行驻留的地方完全不同的存储块,在原来的行的位置放一指向该不同的存储块中的更新的行的指针。行移动的时候,引起被称为存储碎片现象。存储碎片引起数据库信息的检索时间大大增加,原因是除了读取存储块外,还必须读取和解释指针。在行移动到另一存储块时,为了检索行的具体信息,必须读取至少两个存储块(包含指针的存储块和包含移动的和被破成存储碎片的行)。数据库表中的其它结构型的改变也会引起存储碎片和相关的效率问题(例如,行链接)。数据库管理员(DBA)经常会对提供关于表的条件的信息的DBMS表进行分析。例如,数据库管理员可能察看关于删除的行的数量的信息以便弄清有关于有多少个存储块保存着删除的行的效率信息。作为另一个示例,数据库管理员可能察看表的多少行已经由其它处理进行了移动和被破成存储碎片了。如果出现很多存储碎片,则指示可以更有效地分配存储块大小和行空间,并且在进行的表数据检索效率低。出现这种情况时,数据库管理员可能会决定重建该表。在创建表时,DBA通过设置自由存储块的百分率(PCTFREE)或使用过的存储块的百分率(PCTUSED),作出一个关于数据库表的结构的判定。当DBMS用行或表信息装填每一存储块时,它会保留至少等于百分率PCTFREE的一个自由存储块的百分率。DBA依据如何使用数据库表来设置PCTFREE变量。例如,如果表要经常更新,那么会设立附加PCTFREE,以便有足够的空间用来允许任何必要的行移动发生在同一存储块内。如以上所讨论的那样,统一存储块中的行移动不会使得表变成存储碎片。移动过但未变成存储碎片的行以读取单一存储块检索,而不用像移动过的行变成存储碎片时出现的那样,进行读取存储块、解释指针和读取第二存储块(或更多的存储块)的繁琐处理。因此,适当的PCTFREE设置使得虽然可以修改数据库表,但DBMS性能保持不变。PCTUSED是允许DBA控制DMBMS表的结构的另一参数。DBMS防止附加行放到存储块中,除非那一存储块的百分率降低到PCTUSED之下。PCTUSED在这样一种意义下不同于PCTFREE,即虽然如果存在更新则存储块可以用,但它不能用于插入新行,除非存储块中用过的百分率低于PCTUSED。涉及大量OLTP活动(插入、更新和删除)的DBMS表随着时间的推移,可能会经历行移动、存储碎片、行链接等。此外,在第一次建造时各种数据库表可能不需要具有适当的设置(例如PCTFREE、PCTUSED),或者数据库表的要求发生变化,导致表的附加移动、删除或存储碎片。而这又导致数据检索性能和空间使用恶化。DBA会执行分析以确定该表是否有效地存储着数据。结果,可能确定出来一个或多个DBMS表在存储和检索数据方面效率低下。重新组织(重建)该表是解决该问题的一个解决方案。为了得到最大的性能,需要将该表重建(即,将数据卸载到辅助空间并重建该表的新实例)。这种处理避免了很多上面提到的不必要的影响,原因是变成存储碎片的行以无存储碎片的方式卸载和存储在重建表中。结构良好的数据库使得有效地使用磁盘空间。它们需要更少的存取时间、减少了正常处理所需的时间、并且给用户提供了更好的响应时间。即使Oracle和其它现代数据库系统使用有效的数据安排逻辑,随着时间的推移,正常活动也会引起磁盘上的数据的实际配置降级,并且增加空间需求。这导致为了执行表扫描、数据库备份和其它功能,需要使用过多空间和额外的时间。部分空页和未使用的盘区空间提供给额外的空间使用。此外,如果非顺序的行和盘区交错问题不周期性地解决,那么它们会严重降低性能。保证数据库保持高效(增加生产率)的一种方法是有规律地对数据库的数据进行重新组织。目前,有用于重新组织DBMS表的产品。但是,即使用自动重新组织工具,数据库表的重新组织也可能需要大量的时间。执行重新组织所需要的时间对需要数据库存取的商店的收入和生产率具有实质性的影响。例如,当数据库离线时,某些商店可能受到大约一小时$100,000的损失(例如参见1997年12月的Oracle杂志,“ReorgsinaNon-StopShop”)。因此,执行重新组织的效率和速度的任何改进都会增加竞争力和收益率。发明概述本发明人已经实现了提供完全并行的、支持数据库卸载和装入的操作的需要,其中的操作会增加执行表卸载和表装入之一或两者的任何数据库操作的速度。因此,本发明的目的是提供允许并行数据库表卸载的并行处理技术。本发明的另一目的是提供一种在对称多处理(SMP)环境中利用并行处理技术卸载和装入数据库表的方法。本方面进一步的目的是提供一种方法,用于在数据库并行卸载和装入中避免产生瓶颈。本发明的更进一步的目的是通过利用本发明的并行处理技术,增加执行数据库表的重新组织的速度。这些和其它目的通过执行数据库表的并行卸载的方法实现,该方法包括步骤运行多个线程来处理该数据库表;分配每个数据库表与所述线程对应;以及通过对应的线程的一种处理卸载各自数据库表。该方法允许表卸载处理利用对称多处理环境以明显地改善数据库表的卸载速度。本发明包括表数据的并行装入的方法,包括将数据装入到数据库表的步骤,该方法还包括步骤确定用于将数据装入到数据库表的X个线程;创建X个临时表,每个临时表对应于一组存储在输出目录中的数据;运行用于装入每个临时表的SQL*LOADERTM处理;以及借助对应的SQL*LOADERTM处理,以将存储在对应输出目录中的数据装入每个临时表。附图的简要描述当本发明的一个完整的评价以及本发明所附带的很多优点通过下列联系附图考虑的详细描述,变得更容易明白时,它们将容易获得,其中图1是图解数据库快速卸载/装入(PDL)程序的流程图;图2是图解非并发数据库卸载程序的迭代性质的流程图;图3是图解适用于根据本发明的数据库表的并发装入和卸载的高级处理的流程图;图4是在单个输出盘上执行并行处理的说明;图5是根据本发明使用多个输出盘执行并行处理的说明;图6是根据本发明的保存数据库表和输出目录的多个存储装置的说明;图7是图解根据本发明的输出(卸载)处理的流程图;图8是根据本发明的目标表属性页的说明;图9图解根据本发明的并行查询表也;图10是图解根据本发明的并行装入处理的流程图;图11图解根据本发明的具有并行输出阶段和并行直接装入的并发表重新组织;图12是图解适用于根据本发明的卸载/装入处理的安全/故障恢复系统的流程图;以及图13是图解根据本发明的高级表名称和装入处理的流程图。本发明的详细描述在TS重新组织中的并发卸载/装入选择本发明人开发出了一套新的并发卸载/装入方法。这套方法将在PlatinumTSREORG2.1.0版中引入以增强表空间(tablespace)的重新组织速度的卸载/装入选择中利用。以前,在TSREORG(TS改组)最快的重新组织表空间的方式是与并行直接装入选择协作使用快速卸载。现在参考附图,其中在整个附图文件中,相同的参考号指的是同一或对应的部分,更具体地说,其图1是图解数据库快速卸载/装入程序的流程图。在步骤100中,单个快速卸载处理卸载每个表,步骤100a、…、110n图解被利用来装入表的并行直接装入。图2是详细描述快速卸载的流程图。在步骤200中,在表上执行快速卸载。快速卸载从表中读取和存储数据。在步骤210中,确定是否将卸载数据库中的下一个表,并重复该处理直到卸载完每个表为止。如图1和图2的处理所说明的那样,在并行直接装入中,同时只能对一个表工作时,在卸载时使用一个单一处理而在装入时使用多个SQL*LOADERTM(一个Oracle实用程序)处理卸载这些表。例如,当卸载包含大量表的表空间时,TSREORG在处理下一表之前必须等待一个表被完全卸载。图3是图解本发明的并发装入和卸载选择,它使用户能够利用多处理器机器并发地卸载(步骤300)和装入(步骤305)多个表。这种方法在表空间既包含大表又包含小表时特别有效。在TSREORG卸载和装入一个大表的同时,还可以同时卸载和装入几个小表。本发明的原理也可以推广到多个索引和/或约束的并发建造。本发明的并发卸载/装入处理最好在具有下列特征的计算和数据库环境中实践(1)对称多处理计算环境—合适的计算硬件包含多个处理器并且必须安装在一个对称多处环境中。主机的对称处理能力越高,潜在的性能就越高。多处理器计算机的一种类型是对称多处理计算机。SMP计算机通常具有2至16个处理器,它们全部共享该计算机的单一存储器资源和共享的存储装置。SMP的能力依赖于可用的处理器的数量。有更多的处理器,则本发明允许并行地执行更多的查询和装入。(2)跨越多个磁盘划分的数据文件——卸载重新组织的表空间的数据文件必须存储在不同的物理磁盘上。这个要求是从本发明的并发卸载/装入处理获得全部利益所必需的。(3)在磁盘上定义输出目录——用于并发卸载/装入选择处理的多个线程将少于或等于输出目录的数量。这些目录最好当驻留在多个独立的物理磁盘上时利用。由于物理存储磁盘的受到限制的带宽,即使具有高SMP能力和高效的并行操作,数据移动也可能经历涌塞,或断续速度的降低。在物理磁盘不能快速适应有多个CPU产生的同时读和写请求时,发生SMP的几个限制之一。中断数据的另一个来源是磁盘争用,在并行处理中更是如此。当多个处理试图存取和改变数据库时,磁头每次只能服务于一个处理的请求,而导致别的操作等待。两个处理想同时存取同一磁盘的情况称为磁盘争用。磁盘争用导致数据阻塞或涌塞。由于并行处理使用多个CPU在存储器和磁盘之间移动数据,因此定义多个磁盘以便这多个CPU能够快速移动数据而又不中断或等待是非常重要的。消除涌塞的一种方式是通过将数据分划成多个磁盘。分划数据是跨越多个磁盘驱动器进行物理地撤布数据、以降低磁盘I/O带宽的和磁盘争用的限制作用的处理。你所定义(分划)用于数据输出的磁盘越多,那么降低I/0涌塞越多,这产生更快速的并行操作。图4说明使用一个输出盘的并行处理。即使服务器的查询协调器将该查询断开成两个隔开的操作,磁头每次也只能服务于一个扫描请求,而引起别的操作等待或涌塞。在这个示例中,单一盘的I/O限制抵消了服务器的并行操作特征的目的。解决这一问题依赖于恰当的磁盘分配。图5说明了恰当的磁盘分配和使用多个输出盘(分划过的数据)的并行处理的一个实施例。该并行处理同时而不是一个处理等待另一个处理地运行。在TSREORG中使用并发线程本发明的并发装入/卸载处理利用多个定义的线程,这些线程确定多个将要在同一时间进行卸载/装入的表。换句话说,并发线程的数量等于卸载和装入阶段中TSREORG运行的处理数量。每一个处理在一个表上工作。所定义的线程数量由多个输出目录数限制。图6图解了具有三个隔开的磁盘的SMP计算环境310a、310b和310c。每个磁盘都存储数据文件并且都具有输出目录320a、320b和320c。在所图解的环境中,并发装入/卸载将为每个卸载表定义三个线程(每个输出目录一个)。并发卸载阶段图7是图解本发明的并发卸载阶段的流程图。在步骤400中,确定了在当前计算环境中利用的线程数。将要利用的线程数是用户借助GUI或其它输入装置提供的。但是线程数也限制为最大等于驻留在多个独立的磁盘驱动器上的输出目录的数量。例如,现在TSREORG利用目标表属性页进入、改变或删除在表空间改组期间为卸载数据和其它输出文件指定位置的输出目录路径(参见图8)。在表空间改组的输出阶段,改组实用程序从表空间卸载数据描述语言(DDL)和表数据,并将其输出到指定的目录。输出用的主目录路径是在改组期间为卸载的DDL和数据指定位置的目录路径。目标表属性页也被利用来进行下列工作添加主输出目录。删除主输出目录。修改主输出目录。如果在改组实用程序正在卸载数据的同时,输出目录中没有足够的空间可用或者输出文件的大小达到了ulimit,那么改组实用程序将余下的数据输出到下一个指定的输出目录。如果没有指定另一个输出目录,那么TSREORG将不执行重新组织。这去掉了在大多数UNIX平台上通用的2G字节限制。既然压缩数据不能分离,本方法就不能应用于压缩输出方法(下文描述)。在步骤410中,TSREORG运行与所定义的线程数同样多的快速卸载处理。这被称为第一快速卸载处理集。在步骤420中,给每个处理指定一个表。每个快速卸载处理由对应的线程执行,和将指定的表卸载到独立的输出目录之一中(步骤430)。为了在其上卸载数据的目录上进行搜索,每个线程度检查所有输出目录并选择可以容纳创建的输出文件的最小可用目录。这样的方法称为为输出目录寻找最佳适配。一旦线程找到了最佳适配目录,就要求那个目录的权利,因此下一个线程必须选择另一个。在其它应用使用同一文件系统上的空间的情况下,线程不得装入其全部数据到其所选的最佳适配目录。如果发生这种事,改组实用程序将输出文件分成多个输出文件,并试图将其写到另一个输出目录上。如果不存在替换的输出目录,或者磁盘满,则线程终止并且其余的线程之一卸载其余的数据。用户可以估算用户输出文件的大小,以便在输出目录中为这些文件分配足够的空间。为了估算输出文件的大小,将对象的当前分配单元除以将要被利用的线程数。改组实用程序利用如图9所示的并行查询表属性页,以便和对象的任何现有并行参数一起填这些域。例如,如果表使用并行参数是初次创建或修改,则该表的并行参数可能存在。这些参数保留在表的数据描述语言(DDL)和数据目录中。如果一个对象的并行参数已经存在,则改组实用程序自动将数据查询分离,并且用户不必在并行查询表属性页中指定值。否则,改组实用程序根据并行查询表属性页中的参数集分离该查询。对于本发明的全部优点,输出目录的数量等于或大与线程数量。此外,每个输出目录应该驻留在隔开的磁盘上以避免磁盘I/O涌塞。如以上所讨论的那样,因为有同时向同一磁盘写(卸载)的一个以上的处理的可能性,如果在同一磁盘上放了一个以上的输出目录,则可能发生I/O涌塞。当第一组线程的第一快速卸载处理完成时,TSREORG检查该处理是否成功地终止(步骤440),如果是,则运行卸载下一个表的下一个快速卸载处理(步骤470)。按这种方式,由在各自的线程中执行的处理卸载每个表。每个线程是独立的,因此,如果一个线程具有一分配给大表的处理,那么其它处理在运行关于下一个表的处理之前、不必等待到该大处理完成。否则,如果在表卸载期间发生问题,TSREORG显示处理失败的原因以及工作登记文件格式的最终的快速卸载登记文件(步骤450)。使用TSREORG的内部程序卸载发生过问题的表。这个卸载程序不作为一个独立的处理运行,因此必须在TSREORG能够继续其余表的并发卸载之前完成。一旦成功地卸载了所有表,就结束该卸载处理。还可以采用性能指计(估计的或交互式的)来显示卸载/装入操作的速度和被耗用的磁盘空间量。一旦卸载处理结束,TSREORG继续表空间重新组织的下一步,那是表空间的其它对象的输出(步骤485)其它对象的输出包括包含全部索引、触发器、约束和主键或唯一键(除了表和族以外的每个)的用于存储表空间的DDL的文件的创建。最后,TS重新组织在载卸载表上执行删除(步骤490),然后执行将被卸载的数据装入到新的表空间的并发装入(步骤495)。并发装入阶段在删掉全部表空间对象之后,TSREORG开始重新组织的装入(输入)阶段。在图10的流程中图解了并发装入阶段。在步骤600中,TSREORG通过创建表以存储数据来开始装入阶段。TSREORG依次创建和指定的线程数量同样多个表。载卸载阶段,指定的线程数量等于线程的数量。在创建了第一组表之后,TSREORG同时运行用于装入每个对应表的数据的SQL*LOADERTM处理。所运行的处理的数量等于线程数量,每个SQL*LOADERTM处理装入一个对应表的数据,从输出目录读取表数据并将该数据装入到对应的表中(步骤610)。改组应用程序使用输出文件中的DDL重建对象,以消除存储碎片并优化存储参数。改组应用程序调整并行线程中的多个CPU,以便将将该数据装入回对象,导致重新组织表空间。在这些处理结束后,TSREORG检查该数据是否成功地装入回表以及插入的行数是否正确(步骤620)。如果装入期间发生错误或由SQL*LOADERTM插入的行数不正确,那么TSREORG自动切换到内部TSREORG装入函数,以便在继续下一表之前顺序装入数据(步骤630)。如果SQL*LOADERTM处理没有错误存在,或者在内部装入无错误地终止之后,TSREORG创建下一个表(步骤650),并且依旧并发地运行的另一个SQL*LOADERTM处理,以便装入这个表的数据(重复步骤610)。如在图11图所示的并发表重新组织中图解的那样,并发直接装入调用多个CPU同步地将输出文件装入回对象的数据文件,其中的每个CPU执行独立的SQL*LOADERTM会话。当SQL*LOADERTM写这些数据文件时,改组应用程序使用最佳配合法,该方法选择那些具有足够空间来容纳引入数据的分划目录。然后,该改组应用程序继续在所选择的目录列表中使用最佳配合法,并且选择可以容纳线程的全部引入数据的最小数据文件。每个线程装入其数据到尽可能多的数据文件的自由空间中。如果在装入阶段发生了致命错误,或者重新组织工作由于任何原因取消或删除,那么失败的工作变成了需要恢复的工作。如图12所示,在工作已经失败后(步骤1105),TSREORG自动跳过在失败之前已经成功地创建和装入的所有表(步骤1110),并且只并行装入不存在的表或没有装完的表(步骤1115)。如图13所示,在装入阶段,TSREORG首先借助临时名称创建表(步骤1300)。在该数据已经重新装入之后,该临时表被重新命名为表原来的名称(步骤1320)。最后,创建关于该表的主约束和索引(步骤1330)。这使得TSREORG认识在失败之前未完成输入的表,并删掉全部临时表和重新开始对那些表的装入(参见图11的处理1115A)。当使用并发卸载/装入选项时,TSREORG自动选择选项在所有表创建之后创建所有索引/约束。在成功地创建所有表和将它们的数据重新装入到这些表之后,创建该表空间的这些索引和约束。TSREORG中的并发索引创建并发索引创建是可以用在表中或者表空间重新组织中、以便在重新组织期间增加索引创建速度的一个选项。在常规表或表空间重新组织中,在表创建并且数据装入回该表之后一个接一个地创建索引。在表空间改组,用户可以选择并发索引创建选项。在这种情况下,TSREORG将并发地创建索引(缺省行为是顺序索引创建)。这将允许TSREORG收集一个输出文件中的所有索引和约束,并且当已经创建了表空间的所有表(在表空间重新组织情况下)时,或重新组织的表(在重新组织表的情况下)开始并发地创建这些索引和约束。当选择这一选项时,在索引/约束创建阶段用户必须指定将用作并发地运行的处理数量的线程数量。当关于索引的输入阶段开始时,TSREORG运行与指定的线程数量相同的索引创建处理。当完成第一组线程的第一索引处理时,运行下一个索引创建处理,并且在其它线程结束后类似地运行后续索引创建处理,直到创建完全部索引和约束为止。如果在一个索引或约束创建时发生错误,那么TSREORG登记该错误并将失败的索引的DDL写入一个文件。然后用户可以手工编辑和纠正问题。本发明已经参考与Oracle数据库相联系的实现,并且用该实现的术语进行了描述。但是所描述的这些处理可以等效地应用于其它数据库产品和客户数据库安装。例如,可以利用另一个能够读取存储在输出目录的表数据和装入数据到新表空间的程序,代替利用Orcle应用程序SQL*LOADERTM。本发明可以方便地使用根据本发明公开的原理编程的常规通用或特别的数字计算机或微处理器实现,就如计算机领域的普通技术人员所明白的那样。就如软件领域的普通技术人员所明白的那样,基于本发明的公开的原理,熟练的程序员可以很容易地制作适当的软件编码。本发明还可以通过制作成具体的集成电路或通过互连常规元件电路的适当网络实现,就如本领域的普通技术人员所明白的那样。本发明包括在其上/中存储指令的介质(媒体)的计算机程序产品,这种介质(媒体)可以用于编程计算机以执行本发明的处理。存储介质可以包括,但不限于包括软盘、光盘、DVD、CD-ROM、微型驱动器和磁光盘在内的任何类型的磁盘,ROM,RAM,EPROM,EEPROM,DRAM,VRAM,快闪存储装置,磁或光卡,毫微级系统(nanosystem)(包括分子存储器IC),或者适合于存储指令和/或数据的任何类型的媒体或装置。本发明包括存储在任何一个计算机可读介质(媒体)上的软件,用于控制通用/特殊计算机或微处理器的硬件,以及用于使这种计算机或微处理器能够与人类用户或利用本发明的成果的其它机制交互。这样的软件可以包括,但不限于装置驱动器、操作系统、数据库引擎和产品以及用户应用程序。最后,这样的计算机可读媒体还包括软件,用于按上述执行本发明。包括在通用/特殊计算机或微处理器的可程程序(软件)中的是用于实现本发明的理论的软件模块,它包括但不限于用户输入和关于并行处理的多个线程的确定的检索、运行线程、卸载数据库表、确定成功、初始化内部重新组织处理、输出数据库对象、压缩卸载数据、监视本发明的处理以及利用表装入实用程序和根据本发明的处理的结果的显示、存储或通信设置并发装入环境。显然,可以按照上述理论对本发明进行多处修改和该变。因此,应该理解,在附属的权利要求的范围之内,本发明可以不象这里具体描述的那样实现。权利要求1.一种卸载数据库表的方法,该方法包括步骤运行多个线程来处理该数据库表;分配所述数据库表的各自一个与所述线程对应;以及通过对应的线程的处理卸载各自数据库表。2.根据权利要求1的方法,其中所述运行步骤包括步骤检索由用户输入的线程数X;识别位于多个独立的保存所述数据库表的存储装置上的输出目录数;将X限制为所识别到的输出目录的数;以及利用X作为所述线程数。3.根据权利要求2的方法,其中所述存储装置是磁盘驱动器。4.根据权利要求1的方法,其中所述卸载步骤包括步骤从各自数据库表读取数据块并将读取的数据块存储到输出目录。5.根据权利要求4的方法,其中所述卸载步骤还包括步骤确定所述读取和存储步骤成功结束;以及(1)如果所述确定成功的步骤指示未结束,则停止每个所述线程,(2)在该表上执行内部TS重新组织。6.根据权利要求1的方法,还包括步骤重复所述分配和卸载步骤,直到卸载完每个数据库表。7.根据权利要求1的方法,还包括步骤输出相关于每个所述表的其它对象;以及删掉所述表。8.一种装入数据到数据库表的方法,该方法包括步骤确定用于将数据装入到数据库表的X个线程;创建X个临时表,每个临时表对应于一组存储在输出目录中的数据;与每个线程一起运行SQL*Loader处理,用于装入每个临时表;以及借助对应的SQL*LOADERTM处理,以将存储在对应输出目录中的数据装入每个临时表。9.根据权利要求8的方法,还包括步骤确定用于各自数据库表的装入步骤的成功;以及如果所述装入步骤未成功,则执行步骤(1)如果所述确定成功的步骤指示未结束,则停止每个所述线程,(2)在该表上执行内部TS重新组织。10.根据权利要求8的方法,还包括创建、运行和装入直到装入每个表的步骤。11.根据权利要求8的方法,还包括步骤在所述装入步骤中确认失误,并执行步骤(1)确认不成功地装入的表;以及(2)在不成功地装入的表上执行内部TS重新组织。12.根据权利要求8的方法,其中所述确定步骤包括步骤检索由用户输入的线程数;确定输出目录数;以及设立等于少于被检索的线程数的线程数和输出目录数。13.一种在其中存储有计算机指令的计算机可读介质,当所述计算机指令装入计算机时,引起计算机执行步骤运行多个线程来处理数据库表;给对应的所述线程各自分配一个所述数据库表;通过对应的线程的处理卸载每个对应数据库表。14.根据权利要求13的计算机可读介质,其中所述运行步骤包括步骤识别位于多个独立的保存所述数据库表的存储装置上的输出目录数X;以及利用X作为所述线程数。15.根据权利要求14的计算机可读介质,其中所述存储装置是磁盘驱动器。16.根据权利要求13的计算机可读介质,其中所述卸载步骤包括步骤从各自数据库表读数据块并将读取的数据块存储到输出目录。17.根据权利要求16的计算机可读介质,其中所述卸载步骤还包括步骤确定所述读取和存储步骤成功结束;以及(1)如果所述确定成功的步骤指示未结束,则停止每个所述线程,(2)在该表上执行内部TS重新组织。18.根据权利要求13的计算机可读介质,还包括步骤重复所述分配和卸载步骤,直到卸载完每个数据库表。19.根据权利要求13的计算机可读介质,还包括步骤输出相关于每个所述表的其它对象;以及删掉所述表。20.一种在其中存储有计算机指令的计算机可读介质,当所述计算机指令装入计算机时,引起计算机执行步骤确定用于将数据装入到数据库表的X个线程;创建X个临时表,每个临时表对应于一组存储在输出目录中的数据;运行SQL*Loader处理,用于装入每个临时表;以及借助对应的SQL*LOADERTM处理,以将存储在对应输出目录中的数据装入每个临时表。21.根据权利要求20的计算机可读介质,其中所述存储于其上的计算机指令在被装入计算机时,还引起计算机执行步骤确定用于各自数据库表的装入步骤的成功;以及如果所述装载步骤不成功,则执行步骤(1)如果所述确定成功的步骤指示未结束,则停止每个所述线程,(2)在该表上执行内部TS重新组织。22.根据权利要求20的计算机可读介质,其中所述存储于其上的计算机指令在被装入计算机时,还引起计算机执行重复所述创建、运行和装入直到装入每个表的步骤。23.根据权利要求20的计算机可读介质,其中所述存储于其上的计算机指令在被装入计算机时,还引起计算机执行步骤在所述装入步骤中确认失误,并执行步骤(1)确认不成功地装入的表;(2)在不成功地装入的表上执行内部TS重新组织。24.根据权利要求20的计算机可读介质,其中所述确定步骤包括步骤检索由用户输入的线程数;确定输出目录数;以及设立等于少于被检索的线程数的线程数和输出目录数。25.一种用于卸载保存在系统中的数据库表的设备,包括用于运行多个线程来处理该数据库表的部件;用于分配所述数据库表的各自一个与所述线程对应的部件;以及用于通过对应的线程的处理卸载各自数据库表的部件。26.根据权利要求25的设备,其中用于运行的所述部件还包括用于检索由用户输入的线程数的部件;27.根据权利要求25的设备,其中用于运行的所述部件还包括用于将运行的线程数限制为定位于所述系统的独立存储装置上的输出目录的数的部件。28.根据权利要求25的设备,其中用于卸载的所述部件包括从各自数据库表读取数据块并将读取的数据块存储到与对应的线程有关输出目录。29.根据权利要求25的设备,还包括用于重复地分配各自的数据库表给对应的线程和卸载每个各自的表直到卸载完全部所述数据库表的部件。30.一种卸载数据库表的设备,包括运行装置,被配置成初始化多个线程来处理所述数据库表;分配器,被配置成给每个所述数据库表分配对应的被运行的所述线程;以及卸载器,被安装在每个对应的线程上,每个各自的卸载器被配制成用于卸载分配的数据库表到卸载器的对应线程。31.根据权利要求30的设备,其中运行装置包括用户接口,配制成检索来自用户的运行的线程数;以及限制装置,被配制成限制运行的线程数为位于所述系统的多个独立的存储装置上的输出目录数。32.根据权利要求30的设备,其中每个各自的卸载器包括读取装置,该读取装置被配制成读取在分配给与各自的卸载器相同的线程的表内保存的数据块;写入装置,该写入装置被配置成存储读取的数据块到对应于与各自卸载器同样的线程的输出目录。33.根据权利要求30的设备,其中所述分配器分配一数据库表给每个所述线程,并且在一个所述线程结束时分配另一个所述数据库表给结束了的线程,直到每个数据库表都分配过为止。34.根据权利要求32的设备,还包括装入器,在每个数据库表都被卸载后,装入并在每个所述线程上执行,每个装入器被配置成,读取存储在输出目录中的数据块,以及在新表空间保存数据块。全文摘要通过运行相当于位于多个独立的、保存数据库表的存储装置(310)上的输出目录(320)的数目个线程(400)来卸载数据库表。给每个线程分配一个数据库表以卸载(420)。从每个数据库表卸载的数据被存储在对应的输出目录(320)中。通过从每个表读取数据块并存除该数据登记到输出目录(320)中来从每个数据库表中卸载该数据。每个线程都由对称多处理(SMP)环境中的独立处理管理。重复该处理直到卸载完每个数据库表为止。然后,通过首先创建相当于线程数目个临时表(600),接着读取一组存储在输出目录(320)中的数据并存储该数据到临时表来将该数据装入数据库表。文档编号G06F9/46GK1331817SQ99814739公开日2002年1月16日申请日期1999年11月24日优先权日1998年11月25日发明者罗西塔·米尔扎德申请人:电脑联合想象公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1