# US 11,030,058 B2 · Restoring archived object-level database data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,030,058 B2
- Document ID: US11030058B2
- Status: Granted
- Kind: B2
- Application number: 16/235,212
- Filed: 2018-12-28
- Published: 2019-07-11
- Granted: 2021-06-08
- Earliest claimed: 2015-01-21
- Assignees: Commvault Systems, Inc.
- Applicants: Commvault Systems, Inc.
- Inventors: Paramasivam Kumarasamy; Brahmaiah Vallabhaneni; Rahul S. Pawar; Henry Wallace Dornemann; Jun H. Ahn; Amey Vijaykumar Karandikar; Amit Mitkar; Muthusamy Senthilnathan; Satish Chandra Kilaru
- Web page: https://patentgrep.com/patent/US11030058B2

## CPC

- G06F 3/065: {Replication mechanisms}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0643: {Management of files}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/14: Error detection or correction of the data by redundancy in operations (error detection or correction of the data by redundancy in hardware G06F11/16)
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1458: {Management of the backup or restore process}
- G06F 11/1464: {for networked environments}
- G06F 11/1469: {Backup restoration techniques}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS], H04L67/1097)}
- G06F 11/3476: {Data logging (G06F11/14, G06F11/2205 take precedence)}
- G06F 16/113: {Details of archiving (lifecycle management in storage systems G06F3/0649; point-in-time backing up or restoration of persistent data G06F11/1446)}
- G06F 16/1727: {Details of free space management performed by the file system (saving storage space on storage systems G06F3/0608; management of blocks in storage devices G06F3/064)}
- G06F 16/1827: {Management specifically adapted to NAS (management of storage area networks [SAN] G06F3/067)}
- G06F 16/184: {implemented as replicated file system}
- G06F 16/214: {Database migration support}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- G06F 16/2358: {Change logging, detection, and notification (replication G06F16/27)}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/275: {Synchronous replication}
- G06F 2201/80: Database-specific techniques
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

According to certain aspects, a system may include a data agent configured to: process a database file residing on a primary storage device(s) to identify a subset of data in the database file for archiving, the database file generated by a database application; and extract the subset of the data from the database file and store the subset of the data in an archive file on the primary storage device(s) as a plurality of blocks having a common size; and at least one secondary storage controller computer configured to, as part of a secondary copy operation in which the archive file is copied to a secondary storage device(s): copy the plurality of blocks to the secondary storage devices to create a secondary copy of the archive file; and create a table that provides a mapping between the copied plurality of blocks and corresponding locations in the secondary storage device(s).

## Claims

### Claim 1

A system for removing and restoring database data, the system comprising:
one or more computing devices comprising computer hardware configured to:
process a database file residing on one or more first storage devices to identify a subset of data in the database file for archiving, the database file generated by a database application executing on the one or more computing devices;
copy the subset of the data from the database file to a first volume, wherein the first volume is organized as a plurality of volume blocks having a volume block size;
delete the subset of the data from the database file;
create a snapshot of the first volume comprising the copied subset of data; and
divide the snapshot into a plurality of blocks having a common size; and
at least one secondary storage controller computer comprising hardware and residing in a secondary storage subsystem, the at least one secondary storage controller computer configured to:
receive the plurality of blocks over a network connection;
copy the plurality of blocks to one or more secondary storage devices to create a secondary copy of the plurality of blocks;
create a table that provides a mapping between the copied plurality of blocks and corresponding locations in the one or more secondary storage devices;
receive a request from the one or more computing devices to restore a database block from the one or more secondary storage devices in the secondary storage subsystem, wherein the request is initiated by the one or more computing devices in response to intercepting a read operation by the database application to access one or more database blocks that have been removed; and
in response to receiving the request to restore the database block:
access the table to determine location of the database block in the one or more secondary storage devices; and
restore the requested database block from the one or more secondary storage devices to primary storage subsystem.

### Claim 2 (depends on 1)

The system of claim 1, wherein one or more computing devices is further configured to store the subset of data in an archive file on the one or more first storage devices; wherein the archive file is organized as one or more database blocks and wherein a block of the plurality of blocks includes multiple database blocks.

### Claim 3 (depends on 2)

The system of claim 2, wherein the archive file is deleted from the primary storage subsystem subsequent to creation of the secondary copy of the archive file.

### Claim 4 (depends on 1)

The system of claim 1, wherein the table includes a file offset for location of each copied plurality of blocks in the secondary storage subsystem.

### Claim 5 (depends on 4)

The system of claim 4, wherein:
the one or more computing devices is further configured to:
intercept a read operation by the database application to access one or more database blocks;
determine an offset of the one or more database blocks accessed by the read operation;
identify a block that corresponds to the offset; and
send a request to the at least one secondary storage controller computer to restore the identified block from the one or more secondary storage devices in the secondary storage subsystem.

### Claim 6 (depends on 5)

The system of claim 5, further comprising
a database archive server executing on a second computing device that is different from the one or more computing devices on which the database application executes,
the database archive server including a staging memory, and
wherein the at least one secondary storage controller computer is configured to restore the requested database block at least in part by storing the requested database block in the staging memory of the database archive server and forwarding the stored database block in the staging memory to at least one of one or more primary storage devices in the primary storage subsystem associated with the one or more computing devices.

### Claim 7 (depends on 6)

The system of claim 6, wherein the secondary copy of the plurality of blocks is provided as a file system in a user interface of the database archive server and the one or more database blocks in the read operation are accessed through the file system.

### Claim 8 (depends on 1)

The system of claim 1, wherein the processing of the database file is performed pursuant to a storage policy associated with the database file.

### Claim 9 (depends on 1)

The system of claim 1, wherein the one or more computing devices is configured to copy the subset of the data from the database file and store the subset of the data at least in part by instructing the database application to copy the subset of the data and create the secondary copy.

### Claim 10

A system for archiving and restoring database data, the system comprising:
one or more computing devices comprising computer hardware configured to:
process a database file residing on one or more first storage devices to identify a subset of data in the database file for archiving, the database file generated by a database application executing on a client computing device comprising computer hardware;
copy the subset of the data from the database file and store the subset of data in an archive file on the one or more first storage devices,
wherein the archive file is contained within a first volume that is organized as a plurality of volume blocks having a volume block size,
wherein the archive file is organized as one or more database blocks, wherein a block of the plurality blocks includes multiple database blocks;
delete the subset of the data from the database file;
create a snapshot of the first volume; and
divide the snapshot into a plurality of blocks having a common size; and
at least one secondary storage controller computer comprising hardware and residing in a secondary storage subsystem, the at least one secondary storage controller computer configured to:
receive the plurality of blocks over a network connection;
copy the plurality of blocks to one or more secondary storage devices to create a secondary copy of the plurality of blocks;
create a table that provides a mapping between the copied plurality of blocks and corresponding locations in the one or more secondary storage devices;
receive a request from a data agent to restore an archived database block from the one or more secondary storage devices in the secondary storage subsystem, wherein the request is initiated by the data agent in response to intercepting a read operation by the database application to access one or more database blocks that have been archived;
in response to receiving the request to restore the archived database block:
access the table to determine location of the archived database block in the one or more secondary storage devices; and
restore the requested archived database block from the one or more secondary storage devices to primary storage subsystem.

### Claim 11

A method of removing and restoring database data, the method comprising:
using one or more computing devices comprising computer hardware:
processing a database file residing on one or more first storage devices to identify a subset of data in the database file for archiving, the database file generated by a database application executing on a client the one or more computing devices;
copying the subset of the data from the database file to a first volume, wherein the first volume is organized as a plurality of volume blocks having a volume block size;
deleting the subset of the data from the database file;
creating a snapshot of the first volume comprising the copied subset of data; and
dividing the snapshot into a plurality of blocks having a common size; and
using a secondary storage controller computer comprising hardware and residing in a secondary storage subsystem, the secondary storage controller computer:
receiving the plurality of blocks over a network connection;
copying the plurality of blocks to one or more secondary storage devices to create a secondary copy of the plurality of blocks;
creating a table that provides a mapping between the copied plurality of blocks and corresponding locations in the one or more secondary storage devices;
receiving a request from the one or more computing devices to restore a database block from the one or more secondary storage devices in the secondary storage subsystem, wherein the request is initiated by the one or more computing devices in response to intercepting a read operation by the database application to access one or more database blocks that have been removed;
in responding to the request to restore the database block:
accessing the table to determine the location of the database block in the one or more secondary storage devices; and
restoring the requested database block from the one or more secondary storage devices to primary storage subsystem.

### Claim 12 (depends on 11)

The method of claim 11, wherein one or more computing devices is further configured to store the subset of data in an archive file on the one or more first storage devices; wherein the archive file is organized as one or more database blocks and wherein a block of the plurality of blocks includes multiple database blocks.

### Claim 13 (depends on 12)

The method of claim 12, wherein the archive file is deleted from the primary storage subsystem subsequent to creation of the secondary copy of the archive file.

### Claim 14 (depends on 11)

The method of claim 11, wherein the table includes a file offset for location of each copied plurality of blocks in the secondary storage subsystem.

### Claim 15 (depends on 11)

The method of claim 11, wherein:
the one or more computing devices is further configured to:
intercept a read operation by the database application to access one or more database blocks;
determine an offset of the one or more database blocks accessed by the read operation;
identify a block that corresponds to the offset; and
send a request to the secondary storage controller computer to restore the identified block from the one or more secondary storage devices.

### Claim 16 (depends on 15)

The method of claim 15, further comprising
a database archive server executing on a second computing device that is different from the one or more computing devices on which the database application executes,
the database archive server including a staging memory, and wherein the at least one secondary storage controller computer is configured to restore the requested block at least in part by storing the requested block in the staging memory of the database archive server and forwarding the stored block in the staging memory to at least one of the one or more primary storage devices in the primary storage subsystem associated with the one or more computing devices.

### Claim 17 (depends on 16)

The method of claim 16, wherein the secondary copy of the plurality of blocks is provided as a file system in user interface of the database archive server and the one or more database blocks in the read operation are accessed through the file system.

### Claim 18 (depends on 11)

The method of claim 11, wherein the processing of the database file is performed pursuant to a storage policy associated with the database file.

### Claim 19 (depends on 11)

The method of claim 11, further comprising copying the subset of the data from the database file and store the subset of the data blocks at least in part by instructing the database application to copy the subset of the data and create the secondary copy.
