In a large distributed database system, traditional SQL (structured query language) backup and restore can be used for data protection. However, there are drawbacks. An on-disk copy of the backup of the full database is needed, which requires as much storage as the database being backed up. In addition, periodic backup of the transaction log is required for lower recovery point objective (RPO). Moreover, the recovery time objective (RTO) is poor because any restore operation, regardless of the data size involved, will need to have the full backup restored followed by applying a sequence of transaction log backup files. The process can be very time-consuming and labor-intensive, and the backup is stored in a binary format that is not directly queriable.
The following presents a simplified summary in order to provide a basic understanding of some novel embodiments described herein. This summary is not an extensive overview, and it is not intended to identify key/critical elements or to delineate the scope thereof. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
The disclosed architecture is a cost-competitive approach that eliminates the need for on-disk full backups of data. Storage is optimized by retaining only those changes that have occurred, in a separate table. Thus, the architecture provides for incremental recovery of incremental changes in a relational database (e.g., SQL). The architecture provides improved recovery time and recovery point objectives. By using the incremental capture of changed data (e.g., in an XML format), the capability is provided to capture schema changes, query the incrementally captured data and efficiently restore user data to an earlier point-in-time state and with no downtime.
Changes (e.g., insert, update and delete operations) are tracked (e.g., continuously) by a set of triggers and the incrementally captured changed rows are inserted in a data capture table (a differential change “delta” table) according to a format (e.g., XML). The format is self-describing and contains the schema for the row inside the format.
Data rollback decompacts the incremental changes of the appropriate rows from the data capture table to an earlier point in time, and then overwrites the rows to production data. Insert operations are optimized to not create rows in the data capture table, but to maintain change tracking information (e.g. coordinate universal time (UTC) of insertion) in the base tables.
To the accomplishment of the foregoing and related ends, certain illustrative aspects are described herein in connection with the following description and the annexed drawings. These aspects are indicative of the various ways in which the principles disclosed herein can be practiced and all aspects and equivalents thereof are intended to be within the scope of the claimed subject matter. Other advantages and novel features will become apparent from the following detailed description when considered in conjunction with the drawings.
The disclosed architecture provides the capability to efficiently capture “before-image” (incremental) data changes and change tracking information of data operations, and then to use the changes and information to efficiently rollback update/delete/insert operations. The before-image data is data to which changes have been made, but before that changed data has been processed to overwrite the production data. The storage space for the incremental data is a small fraction of the space utilized for full and transaction log backups. Moreover, the time to rollback update/delete/insert operations from a data capture table is small relative to the time to restore from full and transaction log backups.
As used herein, a table is a logical relation that employs a partitioning key that controls partitioning across servers, and also employs a clustering key that controls the ordering of rows within a server. A table group is a set of tables with the same partitioning key. A row group is a set of rows in a table group having the same partitioning key value. The row group is on exactly one server, but may not be clustered. Each table group can be distributed across nodes. Each storage node is assigned ranges (partitions) of key values, and each partition is replicated for durability.
The before-image data can be persisted in a XML (extensible markup language) format that contains the self-describing schema of the rows. Hence, the solution works for schema evolution. Additionally, the before-image data can be persisted in the same partition (e.g. table group), and thus, is highly available. Moreover, the before-image retention policy is managed and maintained automatically and the before-image data can be queried via traditional relational languages such as TSQL (transact structured query language (SQL)).
The before-image is chosen rather than the after-image so that the changes can be applied backwards from the current data inside the partition (Undo instead of Redo), and thus, eliminates the need for a full partition backup to save storage space.
Reference is now made to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. It may be evident, however, that the novel embodiments can be practiced without these specific details. In other instances, well known structures and devices are shown in block diagram form in order to facilitate a description thereof. The intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter.
The incremental change data 104 and the tracking information 114 are stored in the table 118 in a human-readable format (e.g., XML-extensible markup language) that includes a self-describing schema of rows in the table 118. The incremental change data 104 and the tracking information 114 are stored in the table 118 in the same transaction as the data 108 is committed to the database. The incremental change data 104 is persisted in a same partition (partition 110) in which the data 108 resides. The incremental change data 104 is highly available and searchable according to a query language. The table 118 includes a history of changes of incremental change data 104. The changes are associated with at least one of time a data operation occurred, time a transaction occurred, or time of row creation.
The incremental change data 104 and the tracking information 114 are stored in the table 118 in a human-readable format that includes a self-describing schema of rows from the base table 108. The incremental change data 104 and the tracking information 114 are stored in the table 118 in the same transaction as the 108 data is committed to the database. The incremental change data 104 is persisted in the partition 110 in which the data 108 resides, is highly available, and is searchable using a query language. The table 118 includes a history of changes of incremental change data. The changes are associated with the time a data operation occurred (a data operation timestamp), the time a transaction occurred (a transaction timestamp), and the time of row creation (a coordinated universal time-UTC).
The system 200 can further comprise a retention policy component 204 that facilitates the creation and application of retention policies to the incremental change data 104 and associated tracking information 114 and, a rollback component 206 for restoring state of the data 108 to a previous point in time.
The system 300 can be considered as two distinct applications interfacing with the table group 302. A backup service 306 installs the data capture and tracking table(s), the triggers 202 (e.g., SQL Update and Delete triggers), and adds three tracking columns to the base tables. These additional columns are utilized to track Insert operations. These components backup the data for the table group. A restore tool 308 allows a user to restore a previous state of table group 302 to staging database 310.
To perform the backup function, triggers 202 are installed for the Delete and Update operations on every table in each table group. The triggers 202 capture the changes made on the base row and insert a record into the data capture and tracking table 304. These values can then be inserted back, or restored, into the original database or staging database from the data capture and tracking table 304. When restoring, the record closest in time to the requested restore time is obtained and the change is applied back to the base row. In this way, actions made upon the database can be undone, within a set time frame, by the owners of the database.
The trigger captures the change made to the base row and inserts the before-image (incremental change data) into a data capture and tracking table 304 maintained by the system. The table 304 serves as the history of changes that is used to rollback (restore) operations. The data capture and tracking table 304 is persisted in the same table group as user data, so the table 304 is highly available with multiple copies. Moreover, since the before-image is in an XML format, it is easily queriable.
The capture and change tracking table 304 is where data from the base table is stored before changes become permanent (overwritten on the production data). There is one active capture and change tracking table 304 per partition per table group. The columns consist of XML versions of the base table data, and the UTC and DBTS tracking columns to aid in restore operations, and other metadata related to both backup and restore. When Update and Delete operations are performed on the base table, the corresponding triggers (Delete trigger 404 and Update trigger 406) fire and copy the old data into the capture and change tracking table 304.
There is a view 408 on the capture and change tracking table 304. The triggers (404 and 406) refer to this view 408 as an indirection to the most recent (active) capture and change tracking table. The capture and change tracking table 304 cannot be referenced directly because its actual name changes during cleanup of old capture and change tracking tables.
An information table can be provided that stores schema versions of the base tables. This is useful for tracking schema changes that span a restore operation. The backup service 306 installs all above components, and also cleans the old (expired) capture and change tracking tables.
Restore stored procedures (procs) 410 restore the partition to a previous state based on a given UTC time. The procedures 410 are installed along with the other components. One proc restores a row group and the other proc restores a whole partition.
When a restore operation is performed, the three columns are utilized to track the order of previous Insert, Delete, and Update operations. These columns have default values that are filled in upon each Insert, Delete, and Update operation. The default value for each column calls a function (an intrinsic) that fills in the correct values automatically during the Insert, Delete, or Update operation.
The TX DBTS allows entries in the base table and the capture and change tracking table 304 to be sorted and grouped by transactions. This uses an intrinsic that returns the DBTS of the individual operation's current transaction. On the server, this intrinsic stores the current DBTS for the entire transaction and then increments the DBTS. Any operation in a given transaction will have the same DBTS value when this intrinsic is called. Any other DBTS reference will return the incremented, current non-transactional DBTS value.
The OP DBTS exposes the order of each operation, and uses an intrinsic that returns the current DBTS and increments the DBTS. This is different for every entry in the base table because each Insert operation calls the intrinsic via the default value for the column.
The UTC timestamp is the current UTC time of the Insert operation that created the row. This timestamp used to aid in restore operations. Users can choose a UTC date or time to which the restore is desired. Restore determines the actual restore point based on the DBTS values using the UTC timestamp as a guide. This is utilized to restore the database to a consistent transactional state.
The Insert operation is tracked in the base table using columns that are added to the base table by the system. These columns store a sequence number for the operation, the UTC time of the operation as measured at the primary replica of the partition, and a transaction identifier. (These three fields are also added to the data capture table.) No rows are inserted into the data capture table for Insert operations. This optimization reduces the storage requirements at the cost of a slight increase in complexity of the rollback logic.
During rollback, the last committed state of a row (which has been saved in the data capture table) before the requested rollback time is used to overwrite the base row.
There is no trigger for an Insert operation. When an insertion is made into a backed up base table, no information is stored in the capture and change tracking table. The default values for the three additional columns are filled in automatically. This new data allows the restore operation to account for, and order, Insert operations.
To back up the data during an Update or Delete operation, triggers are installed by the backup service 306 for the relevant base tables. On an Update or Delete operation to the base table, the triggers store an XML representation of the pre-Update or pre-Delete base table row (without the three tracking columns). This captures the data for backup, and also the “schema” of the database. Secondly, it stores the partition key. Insert trigger-based DBTS entries do not alter the base table. Without the backup service 306 running, the triggers continue to store changed data into the capture and change tracking table 304.
The view 408 on the capture and change tracking table 304 is used so that when new capture and change tracking tables are made for a given partition within a row group, and the name of the table itself changes, the triggers do not have to change.
Both the Update and Delete triggers insert the necessary backup data into an installed view. Whenever creating a new capture and change tracking table, with a new name based on its expiration date, the view is recreated to point to the new table.
The backup service 306, on initialization, reads information from configuration files, which files contain information on each database that is going to be backed up by the capture and change tracking table. The service 306 then sets up the capture and change tracking tables and triggers for the table groups. The service 306 then schedules two operations: a check for base table schema changes and upgrades, and, the cleanup of the capture and change tracking tables.
To restore a partition (e.g., table group) or a row group to a particular point in time, the restore tool 308 calls one or more stored procedures 410 that install during backup service initialization or after a schema change. One procedure restores every table in the entire partition. Another procedure restores a row group within that partition. The procedures take an argument for the desired point-in-time to restore.
With respect to achieving transactional consistency, during a restore (rollback) operation, there is the potential to create an inconsistent state if the desired restore point falls in the middle of a stored (backed up) transaction. For each stored change to the database, the transaction start DBTS and operation DBTS are stored for each operation in a transaction.
An intrinsic TX_START_DBTS( ) is exposed that returns the DBTS of the first operation in the current transaction. If no operation had been performed by this transaction before this intrinsic is called, @@DBTS is incremented and the value recorded in the transaction record.
With respect to transaction start times, observe that rolling back some of a given transaction operation, while leaving other operations of the same transaction behind, may be undesirable. Consider a system in which there are many transactions running at any given time, and each of those transactions modifies more than one row. Every value of DBTS may be in the middle of some transaction. Thus, for no value of DBTS will roll back of all operations later than this value be a correct answer. Thus, using DBTS of the operation as the sole criteria is limited.
The ability is provided to roll back operations that belong to transactions that have already started rolling back. In support thereof, a transaction identifier is stored with the records. Furthermore, the transaction identifier is unique across failovers. A DBTS has this property and is guaranteed to move forward in failovers. Hence, the transaction start DBTS is a candidate for this need.
Consider the following timeline for transactions T1, T2, and T3.
Now, restore to DBTS=28. Since transaction T2 has committed by then, and transaction T1 has not, X is restored to 2. However, to accomplish this, note that the transaction T1 update occurs after the transaction T2 update, and yet the transaction T1 start-time is earlier than the transaction T2 start-time. Thus, more than the transaction start time is needed to solve this problem.
Columns are employed in the main table and in the capture and change tracking table in order to optimize for an insert-heavy workload. The disclosed architecture does not involve writing a second row on inserts (or even having a trigger execute).
With respect to configuring backup policy, a key customer visible policy parameter is specified in a policy file.
A retention period determines how long the data is available for recovery. This basically governs the duration for which tracking data will be kept in the data capture and tracking table. Old data in the data capture table can be lazily deleted by the system.
The rollback procedure is executed as a rollback command that takes as parameters the row group to be rolled back and the UTC time to roll the row group back to. (A row group is a set of rows which have the same [partition] key values.) The command is capable of overwriting production data to the state that existed at the specified rollback time. A variation of the command can roll back multiple row groups to a point in time. The command can be extended in various other ways, as well.
Included herein is a set of flow charts representative of exemplary methodologies for performing novel aspects of the disclosed architecture. While, for purposes of simplicity of explanation, the one or more methodologies shown herein, for example, in the form of a flow chart or flow diagram, are shown and described as a series of acts, it is to be understood and appreciated that the methodologies are not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation.
As used in this application, the terms “component” and “system” are intended to refer to a computer-related entity, either hardware, a combination of software and tangible hardware, software, or software in execution. For example, a component can be, but is not limited to, tangible components such as a processor, chip memory, mass storage devices (e.g., optical drives, solid state drives, and/or magnetic storage media drives), and computers, and software components such as a process running on a processor, an object, an executable, module, a thread of execution, and/or a program. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers. The word “exemplary” may be used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Referring now to
The computing system 800 for implementing various aspects includes the computer 802 having processing unit(s) 804, a computer-readable storage such as a system memory 806, and a system bus 808. The processing unit(s) 804 can be any of various commercially available processors such as single-processor, multi-processor, single-core units and multi-core units. Moreover, those skilled in the art will appreciate that the novel methods can be practiced with other computer system configurations, including minicomputers, mainframe computers, as well as personal computers (e.g., desktop, laptop, etc.), hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like, each of which can be operatively coupled to one or more associated devices.
The system memory 806 can include computer-readable storage such as a volatile (VOL) memory 810 (e.g., random access memory (RAM)) and non-volatile memory (NON-VOL) 812 (e.g., ROM, EPROM, EEPROM, etc.). A basic input/output system (BIOS) can be stored in the non-volatile memory 812, and includes the basic routines that facilitate the communication of data and signals between components within the computer 802, such as during startup. The volatile memory 810 can also include a high-speed RAM such as static RAM for caching data.
The system bus 808 provides an interface for system components including, but not limited to, the system memory 806 to the processing unit(s) 804. The system bus 808 can be any of several types of bus structure that can further interconnect to a memory bus (with or without a memory controller), and a peripheral bus (e.g., PCI, PCIe, AGP, LPC, etc.), using any of a variety of commercially available bus architectures.
The computer 802 further includes machine readable storage subsystem(s) 814 and storage interface(s) 816 for interfacing the storage subsystem(s) 814 to the system bus 808 and other desired computer components. The storage subsystem(s) 814 can include one or more of a hard disk drive (HDD), a magnetic floppy disk drive (FDD), and/or optical disk storage drive (e.g., a CD-ROM drive DVD drive), for example. The storage interface(s) 816 can include interface technologies such as EIDE, ATA, SATA, and IEEE 1394, for example.
One or more programs and data can be stored in the memory subsystem 806, a machine readable and removable memory subsystem 818 (e.g., flash drive form factor technology), and/or the storage subsystem(s) 814 (e.g., optical, magnetic, solid state), including an operating system 820, one or more application programs 822, other program modules 824, and program data 826.
The one or more application programs 822, other program modules 824, and program data 826 can include the entities and components of the system 100 of
Generally, programs include routines, methods, data structures, other software components, etc., that perform particular tasks or implement particular abstract data types. All or portions of the operating system 820, applications 822, modules 824, and/or data 826 can also be cached in memory such as the volatile memory 810, for example. It is to be appreciated that the disclosed architecture can be implemented with various commercially available operating systems or combinations of operating systems (e.g., as virtual machines).
The storage subsystem(s) 814 and memory subsystems (806 and 818) serve as computer readable media for volatile and non-volatile storage of data, data structures, computer-executable instructions, and so forth. Computer readable media can be any available media that can be accessed by the computer 802 and includes volatile and non-volatile internal and/or external media that is removable or non-removable. For the computer 802, the media accommodate the storage of data in any suitable digital format. It should be appreciated by those skilled in the art that other types of computer readable media can be employed such as zip drives, magnetic tape, flash memory cards, flash drives, cartridges, and the like, for storing computer executable instructions for performing the novel methods of the disclosed architecture.
A user can interact with the computer 802, programs, and data using external user input devices 828 such as a keyboard and a mouse. Other external user input devices 828 can include a microphone, an IR (infrared) remote control, a joystick, a game pad, camera recognition systems, a stylus pen, touch screen, gesture systems (e.g., eye movement, head movement, etc.), and/or the like. The user can interact with the computer 802, programs, and data using onboard user input devices 830 such a touchpad, microphone, keyboard, etc., where the computer 802 is a portable computer, for example. These and other input devices are connected to the processing unit(s) 804 through input/output (I/O) device interface(s) 832 via the system bus 808, but can be connected by other interfaces such as a parallel port, IEEE 1394 serial port, a game port, a USB port, an IR interface, etc. The I/O device interface(s) 832 also facilitate the use of output peripherals 834 such as printers, audio devices, camera devices, and so on, such as a sound card and/or onboard audio processing capability.
One or more graphics interface(s) 836 (also commonly referred to as a graphics processing unit (GPU)) provide graphics and video signals between the computer 802 and external display(s) 838 (e.g., LCD, plasma) and/or onboard displays 840 (e.g., for portable computer). The graphics interface(s) 836 can also be manufactured as part of the computer system board.
The computer 802 can operate in a networked environment (e.g., IP-based) using logical connections via a wired/wireless communications subsystem 842 to one or more networks and/or other computers. The other computers can include workstations, servers, routers, personal computers, microprocessor-based entertainment appliances, peer devices or other common network nodes, and typically include many or all of the elements described relative to the computer 802. The logical connections can include wired/wireless connectivity to a local area network (LAN), a wide area network (WAN), hotspot, and so on. LAN and WAN networking environments are commonplace in offices and companies and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network such as the Internet.
When used in a networking environment the computer 802 connects to the network via a wired/wireless communication subsystem 842 (e.g., a network interface adapter, onboard transceiver subsystem, etc.) to communicate with wired/wireless networks, wired/wireless printers, wired/wireless input devices 844, and so on. The computer 802 can include a modem or other means for establishing communications over the network. In a networked environment, programs and data relative to the computer 802 can be stored in the remote memory/storage device, as is associated with a distributed system. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.
The computer 802 is operable to communicate with wired/wireless devices or entities using the radio technologies such as the IEEE 802.xx family of standards, such as wireless devices operatively disposed in wireless communication (e.g., IEEE 802.11 over-the-air modulation techniques) with, for example, a printer, scanner, desktop and/or portable computer, personal digital assistant (PDA), communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, news stand, restroom), and telephone. This includes at least Wi-Fi (or Wireless Fidelity) for hotspots, WiMax, and Bluetooth™ wireless technologies. Thus, the communications can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wire networks (which use IEEE 802.3-related media and functions).
Referring now to
The environment 900 also includes one or more server(s) 904. The server(s) 904 can also be hardware and/or software (e.g., threads, processes, computing devices). The servers 904 can house threads to perform transformations by employing the architecture, for example. One possible communication between a client 902 and a server 904 can be in the form of a data packet adapted to be transmitted between two or more computer processes. The data packet may include a cookie and/or associated contextual information, for example. The environment 900 includes a communication framework 906 (e.g., a global communication network such as the Internet) that can be employed to facilitate communications between the client(s) 902 and the server(s) 904.
Communications can be facilitated via a wire (including optical fiber) and/or wireless technology. The client(s) 902 are operatively connected to one or more client data store(s) 908 that can be employed to store information local to the client(s) 902 (e.g., cookie(s) and/or associated contextual information). Similarly, the server(s) 904 are operatively connected to one or more server data store(s) 910 that can be employed to store information local to the servers 904.
What has been described above includes examples of the disclosed architecture. It is, of course, not possible to describe every conceivable combination of components and/or methodologies, but one of ordinary skill in the art may recognize that many further combinations and permutations are possible. Accordingly, the novel architecture is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
Number | Name | Date | Kind |
---|---|---|---|
4714995 | Materna | Dec 1987 | A |
5140685 | Sipple | Aug 1992 | A |
5335343 | Lampson | Aug 1994 | A |
5440735 | Goldring | Aug 1995 | A |
5452445 | Hallmark | Sep 1995 | A |
5553279 | Goldring | Sep 1996 | A |
5577240 | Demers | Nov 1996 | A |
5581754 | Terry | Dec 1996 | A |
5603024 | Goldring | Feb 1997 | A |
5603026 | Demers | Feb 1997 | A |
5613113 | Goldring | Mar 1997 | A |
5671407 | Demers | Sep 1997 | A |
5701480 | Raz | Dec 1997 | A |
5778350 | Adams | Jul 1998 | A |
5796999 | Azagury | Aug 1998 | A |
5799321 | Benson | Aug 1998 | A |
5819272 | Benson | Oct 1998 | A |
5940826 | Heideman | Aug 1999 | A |
6279032 | Short | Aug 2001 | B1 |
6397352 | Chandrasekaran | May 2002 | B1 |
6401120 | Gamache | Jun 2002 | B1 |
6401136 | Britton | Jun 2002 | B1 |
6438558 | Stegelmann | Aug 2002 | B1 |
6463532 | Reuter | Oct 2002 | B1 |
6477629 | Goshey et al. | Nov 2002 | B1 |
6615256 | van Ingen | Sep 2003 | B1 |
6671821 | Castro | Dec 2003 | B1 |
6701345 | Carley | Mar 2004 | B1 |
6769074 | Vaitzblit | Jul 2004 | B2 |
6845384 | Bamford | Jan 2005 | B2 |
6874071 | Olstad | Mar 2005 | B2 |
6938084 | Gamache | Aug 2005 | B2 |
6959323 | Tzeng | Oct 2005 | B1 |
6970876 | Hotti | Nov 2005 | B2 |
6978396 | Ruuth | Dec 2005 | B2 |
6985956 | Luke | Jan 2006 | B2 |
7107419 | Ghemawat et al. | Sep 2006 | B1 |
7206805 | McLaughlin | Apr 2007 | B1 |
7222141 | Zondervan et al. | May 2007 | B2 |
7249280 | Lamport | Jul 2007 | B2 |
7251669 | Arora | Jul 2007 | B1 |
7290056 | McLaughlin | Oct 2007 | B1 |
7334154 | Lorch | Feb 2008 | B2 |
7403901 | Carley | Jul 2008 | B1 |
7409460 | Li | Aug 2008 | B1 |
7434096 | Callaway | Oct 2008 | B2 |
7478400 | Banerjee | Jan 2009 | B1 |
7483922 | Edlund | Jan 2009 | B1 |
7555516 | Lamport | Jun 2009 | B2 |
7558883 | Lamport | Jul 2009 | B1 |
7565433 | Lamport | Jul 2009 | B1 |
7600221 | Rangachari | Oct 2009 | B1 |
7603354 | Ljungqvist | Oct 2009 | B2 |
7617414 | Becker et al. | Nov 2009 | B2 |
7620680 | Lamport | Nov 2009 | B1 |
7650533 | Saxena et al. | Jan 2010 | B1 |
7657887 | Kothandaraman | Feb 2010 | B2 |
7685171 | Beaverson et al. | Mar 2010 | B1 |
7698465 | Lamport | Apr 2010 | B2 |
7711825 | Lamport | May 2010 | B2 |
7725446 | Huras | May 2010 | B2 |
7774469 | Massa | Aug 2010 | B2 |
7856502 | Lamport | Dec 2010 | B2 |
7890551 | Benelisha | Feb 2011 | B2 |
7930274 | Hwang | Apr 2011 | B2 |
8005888 | Lamport | Aug 2011 | B2 |
8010550 | Duffy | Aug 2011 | B2 |
8024714 | Duffy | Sep 2011 | B2 |
8073897 | Lamport | Dec 2011 | B2 |
8086566 | Edlund | Dec 2011 | B2 |
20020161889 | Gamache | Oct 2002 | A1 |
20020165724 | Blankesteijn | Nov 2002 | A1 |
20030084038 | Balogh | May 2003 | A1 |
20030093443 | Huxoll | May 2003 | A1 |
20030105761 | Lagerman | Jun 2003 | A1 |
20030115429 | Olstad et al. | Jun 2003 | A1 |
20030172195 | Jonkers | Sep 2003 | A1 |
20030182328 | Paquette | Sep 2003 | A1 |
20030225760 | Ruuth | Dec 2003 | A1 |
20040083225 | Gondi | Apr 2004 | A1 |
20040098425 | Wiss | May 2004 | A1 |
20040148289 | Bamford | Jul 2004 | A1 |
20040158549 | Matena | Aug 2004 | A1 |
20040205414 | Roselli | Oct 2004 | A1 |
20050080801 | Kothandaraman | Apr 2005 | A1 |
20050138081 | Alshab et al. | Jun 2005 | A1 |
20050149609 | Lamport | Jul 2005 | A1 |
20050198106 | Lamport | Sep 2005 | A1 |
20050240633 | Krishnaswamy et al. | Oct 2005 | A1 |
20050262097 | Sim-Tang | Nov 2005 | A1 |
20050283373 | Lamport | Dec 2005 | A1 |
20050283644 | Lorch | Dec 2005 | A1 |
20050283659 | Lamport | Dec 2005 | A1 |
20060036896 | Gamache | Feb 2006 | A1 |
20060090095 | Massa | Apr 2006 | A1 |
20060129575 | Lee et al. | Jun 2006 | A1 |
20060136781 | Lamport | Jun 2006 | A1 |
20060168011 | Lamport | Jul 2006 | A1 |
20060173693 | Arazi et al. | Aug 2006 | A1 |
20070027937 | McGrattan et al. | Feb 2007 | A1 |
20070100739 | Cui et al. | May 2007 | A1 |
20070130226 | Banerjee et al. | Jun 2007 | A1 |
20070143299 | Huras | Jun 2007 | A1 |
20070260644 | Ljungqvist | Nov 2007 | A1 |
20080034251 | Singhal | Feb 2008 | A1 |
20080098045 | Radhakrishnan et al. | Apr 2008 | A1 |
20080120298 | Duffy | May 2008 | A1 |
20080120299 | Duffy | May 2008 | A1 |
20080209145 | Ranganathan | Aug 2008 | A1 |
20080222159 | Aranha | Sep 2008 | A1 |
20080235245 | Huras | Sep 2008 | A1 |
20090064160 | Larson | Mar 2009 | A1 |
20090070330 | Hwang | Mar 2009 | A1 |
20090119351 | Edlund | May 2009 | A1 |
20090144220 | Feng | Jun 2009 | A1 |
20090172142 | Hanai | Jul 2009 | A1 |
20090222498 | Lu et al. | Sep 2009 | A1 |
20090313311 | Hoffmann | Dec 2009 | A1 |
20100005124 | Wagner | Jan 2010 | A1 |
20100011035 | Adkins et al. | Jan 2010 | A1 |
20100017495 | Lamport | Jan 2010 | A1 |
20100106753 | Prabhakaran | Apr 2010 | A1 |
20100281005 | Carlin | Nov 2010 | A1 |
20110178984 | Talius | Jul 2011 | A1 |
Entry |
---|
“15 Backup and Recovery”, Oracle Database Concepts, 10g Release 1 (10.1), Part No. B10743-01, retrieved at <<http://download.oracle.com/docs/cd/B12037—01/server.101/b10743/backrec.htm>>, 2003. |
“Application Plugin Module (APM)”, Netvault, BakBone Software, retrieved at <<http://webmail.quesse.it/it/backup/download/OFM—Plugin—Module.pdf>>, 2001. |
U.S. Appl. No. 12/688,921, Non-Final Rejection dated Oct. 12, 2011, 9 pages. |
U.S. Appl. No. 12/688,921, Amendment dated Jan. 7, 2012, 12 pages. |
U.S. Appl. No. 12/688,921, Final Rejection dated Apr. 24, 2012, 11 pages. |
U.S. Appl. No. 12/688,921, Amendment dated Jul. 24, 2012, 12 pages. |
U.S. Appl. No. 12/688,921, Non-Final Rejection dated Aug. 17, 2012, 12 pages. |
U.S. Appl. No. 12/688,921, Amendment dated Nov. 12, 2012, 13 pages. |
U.S. Appl. No. 12/688,921, Final Rejection dated Feb. 11, 2013, 15 pages. |
U.S. Appl. No. 12/688,921, Amendment dated May 8, 2013, 14 pages. |
“Oracle Database High Availability Features and Products”, Oracle Database High Availability Overview, 11g Release 1 (11.1), Chapter 2, Dec. 2009, retrieved at <<http://download.oracle.com/docs/cd/B28359—01/server.111/b28281/hafeatures.htm#HAOVW144>>, 66 pages. |
“MySQL Cluster Features”, Retrieved at <<http://www.mysql.com/products/database/cluster/features.html>> on Dec. 16, 2009, 4 pages. |
Number | Date | Country | |
---|---|---|---|
20110191299 A1 | Aug 2011 | US |