Patent ID: 9558077
Date: 2017-01-31
CPC Classifications: G06F

Claim:
1. A method of recovering data and rebuilding indexes for a database stored in non-transitory storage, the method comprising: a) accessing image copies, stored in the non-transitory storage using at least one processor, as recovery bases; b) accessing a range of post-backup updates stored in the non-transitory storage that must be re-applied to data from the image copy recovery bases in order to reconstruct the database; c) without regard to step “b)”, reading data pages to be recovered from the image copy recovery bases into objects in memory; d) concurrently with step “c)”, retrieving, into memory, all log records from the post-backup updates applicable to the data pages to be recovered and sorting the retrieved log records by object, data page number and timestamp; e) as the data pages to be recovered are read into the objects in step “c)”, applying the sorted log records to their respective data pages, in timestamp order, until all of the sorted log records have been applied to all of their respective data pages; f) as the applying of the respective sorted log records to the data pages in step “e)” completes for individual data pages and concurrently with the performing of step “e)” with respect to specific data pages for which the applying is not yet complete, extracting and sorting index keys, from the individual data pages for which the applying is complete, until all the index keys have been extracted from all the individual data pages and sorted; g) concurrently with step “f)” and on an individual recovered page basis, writing the recovered individual data pages, for which the extraction of the index keys is complete, into the database in the non-transitory storage; h) when all index keys have been extracted and sorted from all of the recovered individual data pages, initiating a rebuild of database indexes using the sorted index keys; and i) when the database indexes have been rebuilt using the sorted index keys, writing the rebuilt indexes to the non-transitory storage without regard to whether step “g)” has completed.