IP Library Granted Patent US 9,639,429
Granted Patent B2
US 9,639,429 · App. 14/274,614 · Granted May 2, 2017

Creating validated database snapshots for provisioning virtual databases

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,639,429
App. No.
14/274,614
Granted
May 2, 2017
Kind
B2
Abstract

Virtual databases are provisioned using point-in-time copies of a source database. Transaction logs received from the source database are applied to a point-in-time copy of the source database to create recovery milestones comprising database blocks that can be used to provision virtual databases. The recovery milestones are created in advance of receiving a request to provision a virtual database. Each recovery milestone is validated to determine that a consistent database snapshot can be created using the recovery milestone. If a problem is identified that prevents creation of a consistent database snapshot, the problem is fixed before creating the next recovery milestone. In response to receiving a request to provision a virtual database corresponding to a point in time, a recovery milestone is identified and transaction logs applied to the recovery milestone to create a database snapshot corresponding to the requested point in time.

Claims (66)

1. A method for pre-provisioning validated database snapshots, the method comprising:

receiving a plurality of point-in-time copies of a source database, the plurality of point-in-time copies received based on a first predefined schedule;

storing a plurality of database blocks associated with the plurality of point-in-time copies on a storage system;

receiving transaction logs corresponding to transactions executed in the source database;

creating a plurality of recovery milestones based on a second predefined schedule, wherein the recovery milestones are created at a frequency higher than a frequency at which point-in-time copies of the source database are received, each recovery milestone comprising database blocks corresponding to a state of the source database at a point in time, wherein one or more database blocks are shared across two or more recovery milestones, the creating comprising:

creating a first recovery milestone by applying transaction logs to the plurality of database blocks associated with a point-in-time copy of the source database, and

creating one or more subsequent recovery milestones by applying transaction logs to database blocks of the first recovery milestone or by applying transaction logs to database blocks of another recovery milestone created based on the first recovery milestone;

receiving a request to provision a virtual database representing a state of the source database at a first point in time;

identifying a recovery milestone based on the first point in time; and

provisioning the requested virtual database based on the identified recovery milestone, the virtual database configured to provide access to database blocks associated with the recovery milestone to a target system.

2. The method of claim 1 , wherein identifying the recovery milestone based on the first point-in-time comprises

responsive to the first point in time matching the point in time of a particular recovery milestone, using the particular recovery milestone as the identified recovery milestone.

3. The method of claim 1 , wherein responsive to the first point in time not matching point in times of any of the recovery milestones, identifying the recovery milestone comprises selecting a recovery milestone with a point in time closest to and occurring prior to the first point in time, and wherein provisioning the requested virtual database comprises:

updating the database blocks of the identified recovery milestone by applying transaction logs to database blocks of the identified recovery milestone; and

provisioning the requested virtual database using the updated database blocks.

4. The method of claim 3 , further comprising:

creating a new recovery milestone based on the updated database blocks corresponding to the virtual database.

5. The method of claim 1 , further comprising:

validating the recovery milestone created to determine whether the recovery milestone can be used to create a consistent snapshot of the source database.

6. The method of claim 5 , wherein validating the recovery milestone comprises:

identifying a problem associated with creation of a recovery milestone; and

responsive to identifying the problem, taking actions to fix the problem in advance of the request to create a virtual database based on the recovery milestone.

7. The method of claim 6 , wherein the actions for fixing the problem comprise, receiving a recent version of a vendor library and using the recent version of the vendor library for creating the recovery milestone.

8. The method of claim 1 , wherein the source database performs logging for a set of tables and disables logging for tables outside the set of tables, the method further comprising:

responsive to the provisioned virtual database receiving a query based on one or more tables outside the set of tables, disallowing the query.

9. A method for pre-provisioning validated database snapshots, the method comprising:

receiving a plurality of point-in-time copies of a source database, the plurality of point-in-time copies received based on a first predefined schedule;

storing a plurality of database blocks associated with the plurality of point-in-time copies on a storage system;

receiving transaction logs corresponding to transactions executed in the source database; and

creating a plurality of recovery milestones based on a second predefined schedule, wherein the recovery milestones are created at a frequency higher than a frequency at which point-in-time copies of the source database are received, each recovery milestone comprising database blocks corresponding to a state of the source database at a point in time, wherein one or more database blocks are shared across two or more recovery milestones, and wherein a recovery milestone is created in advance of receiving a request for creation of a virtual database for the point-in-time of the recovery milestone, the creating comprising:

creating a first recovery milestone by applying transaction logs to the plurality of database blocks associated with a point-in-time copy of the source database, and

creating one or more subsequent recovery milestones by applying transaction logs to database blocks of the first recovery milestone or by applying transaction logs to database blocks of another recovery milestone created based on the first recovery milestone.

10. The method of claim 9 , further comprising:

receiving request to create a virtual database representing a state of the source database at a first point in time;

responsive to the first point in time matching point in time of a recovery milestone, selecting the matching recovery milestone; and

provisioning the requested virtual database based on the database blocks of the selected recovery milestone.

11. The method of claim 9 , further comprising:

receiving request to create a virtual database representing a state of the source database at a first point in time;

responsive to the first point in time not matching point in times of any of the recovery milestones, selecting a recovery milestone with a point in time closest to and occurring prior to the requested point in time; and

provisioning the requested virtual database based on the database blocks of the selected recovery milestone.

12. The method of claim 9 , wherein creating each recovery milestone further comprises:

validating the recovery milestone created to determine whether the recovery milestone can be used to create a consistent snapshot of the source database.

13. The method of claim 12 , wherein validating the recovery milestone comprises:

responsive to determining that a set of transaction logs corresponding to the recovery milestone are corrupted, determining that the recovery milestone is invalid.

14. The method of claim 12 , wherein validating the recovery milestone comprises:

responsive to the determining that the recovery milestone is invalid, executing steps to identify a defect resulting in creation of the invalid recovery milestone and executing steps to fix the defect.

15. The method of claim 9 , wherein the source database performs logging for a set of tables and disables logging for tables outside the set of tables, the method further comprising:

responsive to the provisioned virtual database receiving a query based on one or more tables outside the set of tables, disallowing the query.

16. A computer program product having a non-transitory computer-readable storage medium storing computer program modules configured to execute on a computer processor, the computer program modules comprising instructions for:

receiving a plurality of point-in-time copies of a source database, the plurality of point-in-time copies received based on a first predefined schedule;

storing a plurality of database blocks associated with the plurality of point-in-time copies on a storage system;

receiving transaction logs corresponding to transactions executed in the source database;

creating a plurality of recovery milestones based on a second predefined schedule, wherein the recovery milestones are created at a frequency higher than a frequency at which point-in-time copies of the source database are received, each recovery milestone comprising database blocks corresponding to a state of the source database at a point in time, wherein one or more database blocks are shared across two or more recovery milestones, the creating comprising:

creating a first recovery milestone by applying transaction logs to the plurality of database blocks associated with a point-in-time copy of the source database, and

creating one or more subsequent recovery milestones by applying transaction logs to database blocks of the first recovery milestone or by applying transaction logs to database blocks of another recovery milestone created based on the first recovery milestone;

receiving a request to provision a virtual database representing a state of the source database at a first point in time;

identifying a recovery milestone based on the first point in time; and

provisioning the requested virtual database based on the identified recovery milestone, the virtual database configured to provide access to database blocks associated with the recovery milestone to a target system.

17. The computer program product of claim 16 , wherein identifying the recovery milestone comprises, selecting a recovery milestone with a point in time closest to and occurring prior to the requested point in time and wherein provisioning the requested virtual database comprises:

applying transaction logs to the database blocks of the identified recovery milestone to create a database snapshot corresponding to the requested point in time; and

provisioning the requested virtual database comprising the database blocks of the database snapshot created.

18. The computer program product of claim 16 , wherein validating the recovery milestone comprises:

responsive to determining that a set of transaction logs corresponding to the recovery milestone are corrupted, determining that the recovery milestone is invalid; and

responsive to the determining that the recovery milestone is invalid, executing steps to identify a defect resulting in creation of the invalid recovery milestone and executing steps to fix the defect.

19. The computer program product of claim 16 , wherein the source database performs logging for a set of tables and disables logging for tables outside the set of tables, the computer program modules further comprising instructions for:

responsive to the provisioned virtual database receiving a query based on one or more tables outside the set of tables, disallowing the query.

Assignments (17)
SECURITY INTEREST Recorded Apr 7, 2026
From: PERFORCE SOFTWARE, INC.; DELPHIX CORP.; AKANA, INC.; ROGUE WAVE SOFTWARE, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 075368/0968 →
RELEASE OF SECURITY INTEREST Recorded Apr 7, 2026
From: CORTLAND CAPITAL MARKET SERVICES, AS COLLATERAL AGENT
To: ROGUE WAVE SOFTWARE, INC.; AKANA, INC.; GLIFFY, INC.; DELPHIX CORP.
Reel/Frame 075365/0519 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded May 24, 2024
From: DELPHIX CORP.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 067528/0384 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded May 17, 2024
From: DELPHIX CORP.
To: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT
Reel/Frame 067453/0344 →
RELEASE OF SECURITY INTEREST Recorded Mar 22, 2024
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
To: DELPHIX CORP.
Reel/Frame 066869/0540 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 060738/0578 →
RELEASE OF SECURITY INTEREST Recorded Aug 5, 2022
From: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
To: DELPHIX CORP.
Reel/Frame 060737/0201 →
SECURITY INTEREST Recorded Aug 5, 2022
From: DELPHIX CORP.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 060734/0591 →
SECURITY INTEREST Recorded Jan 10, 2020
From: DELPHIX CORP.
To: HERCULES CAPITAL, INC., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 051482/0043 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 9, 2020
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: DELPHIX CORP.
Reel/Frame 051532/0264 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SCHEDULE TO REMOVE APPLICATION NUMBERS 10025528 AND 10083196, AND REPLACE WITH PATENT NUMBERS 10025528 AND 10083196 PREVIOUSLY RECORDED ON REEL 047169 FRAME 0863. ASSIGNOR(S) HEREBY CONFIRMS THE AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT. Recorded Jan 6, 2020
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 051485/0422 →
CORRECTIVE ASSIGNMENT TO CORRECT THE SCHEDULE TO REMOVE APPLICATION NUMBERS 10025528 AND 10083196, AND REPLACE WITH PATENT NUMBERS 10025528 AND 10083196 PREVIOUSLY RECORDED ON REEL 047016 FRAME 0544. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jan 6, 2020
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 051485/0438 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 9, 2019
From: DELPHIX CORP.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 050673/0234 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047169/0863 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 1, 2018
From: SILICON VALLEY BANK
To: DELPHIX CORP.
Reel/Frame 047169/0901 →
SECURITY INTEREST Recorded Oct 1, 2018
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 047016/0544 →
SECURITY INTEREST Recorded Feb 28, 2017
From: DELPHIX CORP.
To: SILICON VALLEY BANK
Reel/Frame 041398/0119 →