Patent Publication Number: US-9892001-B2

Title: Customizing backup and restore of databases

Description:
BACKGROUND 
     The disclosure relates in general to backup and restore of databases and more specifically to customizing backup and restore of databases. 
     Databases are often used to store data used by an enterprise. In case of disasters, the database may lose information that is critical to the enterprise. For example, the hard disk on which the database is stored may get corrupted and become unreadable. The data loss can also occur due to human error. For example, a system administrator may perform an operation that either deletes or updates data incorrectly. 
     Databases typically allow the data stored in the database to be backed up. Furthermore, the database can be restored from a backup of the database. Backups are periodically performed in databases that are constantly updated. In case the database becomes corrupt or there is loss of data for some reason, an earlier version of the database can be restored provided the database was backed up. 
     However, databases used by several applications can be so large that taking backups and restore can require very large amount of storage and takes very long time to process. As a result, backups of these large databases may not be performed very frequently by system administrators. If database backups are not performed frequently, a restored database may have a much older version of data compared to the data that was lost and significant amount of information may be lost upon restore. As a result conventional backup and restore techniques are incapable of handling the sizes of data encountered in several databases. 
     SUMMARY 
     Embodiments allow database systems to perform partial backups and restores of databases storing database objects. In response to a backup command, the database system backs up a first data set comprising one or more database objects. The database system receives an alter backup command that modifies the data set to be backed up by subsequent backup commands. The alter backup command identifies one or more database objects and specifies whether these objects should be included or excluded in subsequent backups. In response to subsequent backup commands, the database system backups up a data set that differs from the first data set in accordance with the alter command. 
     For example, assume that the first data set backs up a particular database object and the alter backup command specifies that the database object should be excluded from subsequent backups. The database system excludes the database object from subsequent backups. Accordingly, the data sets backed up by subsequent backup commands differ from the first data set since they do not include the database object. 
     In some embodiments, the backup command identifies one or more database objects that do not exist in the database system. These objects are backed up in accordance with the alter backup command whenever they are created in the database system. For example, the alter backup command may specify that a database object should be included in backups even though the database object does not exist in the database system at the time of execution of the alter backup command. However, the database system includes or excludes this database object in accordance with the alter command, whenever the database object is created in the database system. 
     In some embodiments, the alter backup command specifies certain criteria for a database object indicating that the database object should be processed in accordance with the alter backup command if the criteria is satisfied. The database system evaluates the criteria during backup operations and includes or excludes the database object in accordance with the alter backup command if the criteria is satisfied. If the criteria associated with the database object is not satisfied, the database system ignores the instruction provided in the alter backup command. 
     The features and advantages described in the specification are not all inclusive and, in particular, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows the overall system environment for performing partial backups and restores, in accordance with an embodiment of the invention. 
         FIG. 2  shows the architecture of database system for performing partial backups and restores, in accordance with an embodiment of the invention. 
         FIG. 3  shows a flowchart illustrating a process for executing an alter backup command, in accordance with an embodiment. 
         FIG. 4  shows a flowchart illustrating a process for performing a partial backup after executing an alter backup command, in accordance with an embodiment. 
     
    
    
     The figures depict various embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein. 
     System Environment 
       FIG. 1  shows the overall system environment for performing partial backups and restores, in accordance with an embodiment of the invention. The system environment shown in  FIG. 1  comprises one or more database systems  100 , one or more client devices  105 , and a network  110 . The client devices  105  interact with the database systems  100  via the network  110 . A particular database system  100  may interact with another database system  100  via the network  110  (A letter after a reference numeral, such as “ 130   a ,” indicates that the text refers specifically to the element having that particular reference numeral, while a reference numeral in the text without a following letter, such as “ 130 ,” refers to any or all of the elements in the figures bearing that reference numeral.) 
     The database system  100  can be a relational or a non-relational database, for example, an object-oriented database, document-oriented database, hierarchical database, network database, XML database, and so on. The database system  100  stores data in data store  120 . In an embodiment, the data stored in the data store  120  is represented in a relational format. Other embodiments may store data in the data store  120  in other (non-relational) formats. For example, the database system  100  may store semi-structured data or unstructured data in the data store  120 . 
     In an embodiment, the database system  100  executes on a server class computer with large memory, storage, and processing capacity compared to devices, for example, client device  105 . Users and applications may communicate with the database system  100  by using standard interfaces, for example SQL (structured query language) via ODBC/JDBC (open database connectivity/Java database connectivity). 
     The database system  100  performs backup of the data stored in data store  120  in response to user requests and stores the output of the backup in a backup store  130 . Although  FIG. 1  shows the backup store  130  within the database system  100 , other configurations may use an external storage for storing the backup output, for example, a tape storage. In other configurations, the backup store  130  may be on a different computing device, for example, another server. Storing the backup output on a separate server from the server executing the database system  100  provides access to the backup data in case there is a complete failure of the server running the database system  100  and the data on the database system  100  cannot be accessed. 
     The backup output can be transmitted from one database system  100  to another database system  100 . For example, the backup output can be transmitted via the network  110  from backup store  130   a  of database system  100   a  to backup store  130   b  of database system  100   b . The backup output transmitted to backup store  130   b  can be restored in the data store  120   b  of the database system  100   b . If the backups of database system  100   a  are regularly transmitted to database system  100   b , the database system  100   b  can be used as a standby system for use in case of failure of database system  100   a . Typically backup operations are scheduled and are executed on a regular basis. 
     The client devices  105  are computing devices that execute client software, e.g., a web browser or built-in client application, to interact with the database system  100  via a network  110 . In an embodiment, users or applications use client device  105  to send database queries via network  110  to a database system  100 . The database system  100  executes the database queries and computes a result set based on the received database query. The database system  100  sends the result set back to the client device  105  that requested the information. 
     A database system  100  maintains one or more database objects that are stored in the data store  120 . An example, of a database object is a database table or a database schema. A database table stores data as multiple records (corresponding to rows of the table). A database table may comprise multiple columns, each column representing a particular type of attribute of a record of the table. A database schema is a named set of database objects, for example, a set of database tables. A database system  100  may store one or more schemas, for example, to represent data for different applications. Multiple database objects may be related to each other. 
     The database system  100  may execute a full backup or an incremental backup. A full backup stores either the entire data of the database or a set of entire database objects stored in the database. An incremental backup stores only changes made to the database (or changes made to the selected database objects) and new database objects added to the database since a previous backup command. The previous backup command may be a full backup command or an incremental backup command. A database administrator may perform a full backup followed by a series of incremental backups. The database may be restored by performing a restore of the full backup, followed by restore of the series of incremental backup outputs. The use of the term backup herein implies either one of full backup or incremental backup unless specifically mentioned. 
     The database system  100  also supports various types of commands that can be sent by a user. A command may be used to make changes to the configuration of the database system  100  or to request the database system  100  to perform certain action. For example, a user can send a backup/restore command to execute a backup/restore operation on the database system  100 . Typically, commands are executed by a privileged user, for example, a database administrator or a system administrator. 
     Note that the terms “client” or “client device,” as used herein may refer to software providing respective functionality, to hardware on which the software executes, or to the entities operating the software and/or hardware, as is apparent from the context in which the terms are used. For example, a client device  105  may execute business intelligence software or analytic tools that interact with a database system. In one embodiment, the client device  105  can be a personal computer (PC), a desktop computer, a laptop computer, a notebook, a tablet PC executing an operating system, for example, a Microsoft Windows-compatible operating system (OS), Apple OS X, and/or a Linux distribution. In another embodiment, the client device  105  can be any device having computer functionality, such as a personal digital assistant (PDA), mobile telephone, smartphone, etc. In an embodiment, a client of the database system  100  can be another process, for example, a web server that serves queries from remote devices. 
     The interactions between the client device  105  and the database system  100  are typically performed via a network  110 , for example, via the internet. The network  110  enables communications between the client device  105  and the database system  100 . In one embodiment, the network  110  uses standard communications technologies and/or protocols. In another embodiment, the entities can use custom and/or dedicated data communications technologies instead of, or in addition to, the ones described above. Depending upon the embodiment, the network  110  can also include links to other networks such as the Internet. 
     System Architecture 
       FIG. 2  shows the architecture of a database system for performing partial backups and restores, in accordance with an embodiment of the invention. The database system  100  comprises a query processor  250 , a command processor  220 , a metadata store  260 , a data store  120 , a backup manager  230 , and a restore manager  240 . In alternative configurations, different and/or additional modules can be included in the system. Furthermore, functionality indicated herein as being performed by a particular module may be performed by other modules than those indicated herein. 
     The metadata store  260  stores metadata describing the database, for example, various database objects stored in the database including tables, indexes, functions, and so on, and the relations between these objects. The metadata store  260  stores metadata describing the backup data set that is backed up by subsequent backup commands. In an embodiment, the metadata store  260  stores one or more system tables that store the information describing the backup data set. The system table may include records describing various database objects that are either included or excluded from a subsequent backup command. 
     The command processor  220  executes commands received by the database system  100 . A command may provide instructions to the database system  100  to create a database object, for example, to create a database table, a database schema, and so on. The commands request specific actions to be performed by the database system  100 . For example, a client device  105  may send a command to the database system  100  to perform a backup. Similarly, a client device  105  may send a command to the database system  100  to perform restore from a backup file. Embodiments of the invention allow a command to alter the data set that is backed up by subsequent backup commands. For example, the command to alter the data set backed up by subsequent backup commands is called the “ALTER BACKUP” command. 
     The backup manager  230  performs operations related to performing backups of the database. A backup may be a full backup or an incremental backup. The backup manager  230  retrieves the information describing the backup dataset from the metadata store  260  to determine the backup data set to be backed up. The backup manager  230  determines the backup data set and stores it in the backup store  130 . In an embodiment, the backup manager  230  generates a backup file that stores the output of the backup command. The backup manager  230  stores the backup file in the backup store  130 . Embodiments allow performing a partial backup of the database that stores only a subset of the data set of the database. The subset of the database that is backed up is determined based on alter backup commands executed by the command processor  220 . Embodiments allow a partial incremental backup that stores only the changes to the subset of the data set that occurred in the database since a previous backup. 
     The backup manager  230  ensures that the integrity and consistency of the set of database objects that are backed up is preserved when backups are performed in spite of alter backup commands that may be executed in between the backup commands by the command processor  220 . For example, assume that the command processor  220  executes an alter backup command that excludes a particular object (say object X) from backups (for example, by executing “ALTER BACKUP DROP TABLE X”). Subsequently, the backup manager  230  performs one or more incremental backups (with object X excluded). Subsequently, the command processor  220  receives another alter backup command that includes the object X in subsequent backups (for example, by executing “ALTER BACKUP ADD TABLE X”). If the subsequent backup request is to perform an incremental backup of the database, the backup manager  230  obtains a full copy of the object X from the database even though the backup manager  230  may obtain only incremental copies for other database objects being backed up. This is so because the object X was not backed up during the previous incremental backup and performing subsequent incremental backups is likely to leave the object in an inconsistent state. Accordingly, the backup manager  230  ensures the integrity and consistency of the database objects that are backed up. 
     Furthermore, a database object may include other database objects. For example, a database schema may include one or more database tables. Similarly, a database table may include one or more segments. If the command processor  220  executes an alter backup command that includes or excludes a database object from subsequent backups, and the database object includes a set of other database objects, the backup manager  230  performs backups of the set of database objects in accordance with the alter backup command. For example, assume that the command processor  220  executes an alter backup command that excludes schema S1 comprising tables T1, T2, and T3 from subsequent backups (for example, “ALTER BACKUP DROP SCHEMA S1”). The backup manager  230  ensures that tables T1, T2, and T3 are excluded from subsequent full or incremental backups. For example, if the backup manager  230  receives a request to perform a full backup, the backup manager  230  performs a full backup of the objects included in S1, i.e., T1, T2, and T3. On the other hand, if the backup manager  230  receives a request to perform an incremental backup, the backup manager  230  performs an incremental backup of the objects included in S1, i.e., T1, T2, and T3. 
     The query processor  250  processes queries received by the database system. Processing a query may comprise parsing the query, generating an execution plan for the query, and executing the query. In an embodiment, one or more database queries may be executed to determine the backup dataset that is being backed up by the backup manager  230 . 
     The restore manager  240  restores the database from a given backup file. The restore manager  240  analyzes the content of a backup file to determine the database objects to be restored from the backup file. The restore manager  240  also determines from the backup file whether the restore is from the output of an incremental backup or the output of a full backup. If the restore is from an output of a full backup, the restore command restores the full content of each database object from the backup file. In some embodiments, if the database object is already present in the database while the restore manager  240  is performing a restore from a full backup, restore manager  240  throws an error or logs a warning message. Alternatively, the restore manager  240  may replace the existing database object with the new database object obtained from the backup file. 
     Partial Backup 
     Following is the syntax backup command that support partial backup according to an embodiment.
         BACKUP DATABASE database_name   [none|FULL|INCREMENTAL|PARTIAL|PARTIAL INCREMENTAL]   [INTO ‘repository_name’|‘default’]       

     The backup command provides the option to specify whether the backup is full backup, incremental backup, partial backup, or partial incremental backup. The backup command optionally allows the user to specify a name of a repository (‘repository_name’) in which the backup output is stored. For example, a storage system file may be a repository in which the output of a backup is stored. An example of usage of the above backup command is “BACKUP DATABASE dbname PARTIAL INCREMENTAL repos1” that requests the database system  100  to backup a database named dbname by performing a partial incremental backup and store the results in repository repos1. 
     The syntax of a restore command according to an embodiment is as follows.
         RESTORE DATABASE database_name   [FROM ‘repository_name’|‘default’]       

     The restore command specifies the name of the database to which the data is being backed up and the name of a repository (‘repository_name’) from where the database should be restored. Both backup and restore commands support using a default repository name. 
     The syntax of an alter backup command according to an embodiment is as follows.
         ALTER BACKUP   [ADD|DROP]   &lt;DB_OBJECT_TYPE&gt;   ‘dbObjectName’*       

     The alter backup command allows a user to specify whether certain database objects should be included or excluded from subsequent backups. The above command is executed after connecting to a particular database. The above command is specified as a DDL (data definition language) statement. The DB_OBJECT_TYPE specifies the type of database object that is specified by the alter backup command. Examples of database object types specified by the alter backup command include database schemas, database tables, segments of tables (if the database represents a database table as one or more segments), and so on. The dbObjectName refers to specific names of database objects of the type DB_OBJECT_TYPE. 
     An example of a particular alter backup command is “ALTER BACKUP ADD SCHEMA ‘S1’, ‘S2’”. This command specifies that database objects S1 and S2 of type SCHEMA should be included in subsequent executions of backup command. As a result, subsequent backup commands will include S1 and S2 schema objects. If “ALTER BACKUP ADD SCHEMA ‘S3’, ‘S4’” is executed subsequent to execution of the above alter backup command, schemas S3 and S4 will also be included in subsequent backups. Accordingly, the data set stored by a backup command depends on previous executions of the alter backup commands. 
     Another example of alter backup command is “ALTER BACKUP DROP SCHEMA ‘S3’”. As a result of execution of this command, schema S3 will be excluded from subsequent backups (both full backups and incremental backups). If the above two alter backup commands that add S1, S2 and S3, S4 were executed before the alter backup commands that drops schema S3, the data set that is backed up by subsequent backup commands would include S1, S2, and S4 based on the execution of these commands. 
     The alter backup command can specify other types of database objects to be excluded or included from backups, for example, database tables. An example of alter command using database tables is “ALTER BACKUP ADD TABLE ‘T1’, ‘T2’”. This backup command specifies that tables T1 and T2 should be included in subsequent backups. Similarly, “ALTER BACKUP DROP TABLE ‘T2’” may be executed to exclude table T2 from subsequent backups. 
     In some embodiments a special token is used to identify all the database objects of a particular type that have not been specified by previously executed of alter backup commands. For example, if a user executes “ALTER BACKUP ADD SCHEMA ‘S1’ ‘S2’”, the special token ‘ ’ that represents an empty string refers to all schema objects of the database other than S1 and S2 (as well as other schemas that may have been specified by previously executed alter backup commands). Accordingly, schemas S1, and S2 and all the remaining schema objects of the database will be included in subsequent backups. However, if “ALTER BACKUP DROP SCHEMA ‘S3’” is subsequently executed, schema S3 will be excluded from subsequent backups. 
     In some embodiments, the alter backup command can identify sets of database objects by using regular expressions. For example, assume that the database system  100  includes database objects objectX1, objectX2, objectX3, objectY1, objectY2, and objectY3. The alter backup command can identify a set of objects using regular expressions based on names of the database objects. For example, assuming the above database objects are tables, the command “ALTER BACKUP ADD TABLE objectX*” will include tables objectX1, objectX2, objectX3 in subsequent backups, command “ALTER BACKUP ADD TABLE objectY*” will include objectY1, objectY2, and objectY3 in subsequent backups, and “ALTER BACKUP ADD TABLE object*” will include objects objectX1, objectX2, objectX3, objectY1, objectY2, and objectY3. Other examples of regular expressions that can be specified include regular expression “objectX[1-2]” to identify objectX1 and objectX2, regular expression “object?2” to identify objectX2 and objectY2, and so on. 
     In an embodiment, an “ALTER BACKUP RESET” command may be executed to reset the previous history of the alter backup commands. Accordingly all database objects identified to be excluded/included by previous alter backup commands are removed from the metadata describing the data set to be backed up. This allows a user to build a new backup data set for being backed up by subsequent backup commands using a new set of alter backup commands. 
     In an embodiment, an alter backup command specifies database objects that do not exist in the database system. For example, the alter backup command may specify that table Tx should be included in backup although table Tx does not exist in the database system  100 . In this situation, the backup manager  230  ignores the reference to the table Tx (or any other type of database object) as long as the database object is absent from the database system  100 . However, as soon as the database object specified in created in the database system  100 , the backup manager  230  determines whether to exclude or include the database object from subsequent backups based on the alter backup command that was previously executed. As a result, a user can specify whether a database object should be included or excluded from a backup in advance of the creation of the database object. 
     In some embodiments, the alter backup command allows users to specify an optional database query for a database object that determines a subset of the database object to be excluded/included in subsequent backups. The database query may be an SQL query that selects a subset of data of the database object. For example an alter backup command can specify “ALTER BACKUP ADD TABLE ‘T1&#39;SELECT col1, col2 FROM T1’”. Accordingly the query ‘select col1, col2, from T1’ specifies the subset of table T1 that is included in subsequent backups. Accordingly, if table T1 has four columns col1, col2, col3, and col4, the backup manager  230  will include only two columns col1 and col2 in subsequent backups. This ability allows users to skip columns that may be large from being stored in the backup each time the database is backed up. 
     As another example, the user can specify a subset of records of the table being backed up in the alter backup command. For example, the backup command can specify “ALTER BACKUP ADD TABLE ‘T1’SELECT*FROM T1 WHERE T1.client_name=‘xyz’”. Accordingly, the backup manager  230  will include in subsequent backups, rows from table T1 that satisfy the WHERE clause of the database query, i.e., rows for which the value of column ‘client_name’ of table T1 is ‘xyz.’ This feature allows users to backup data selectively instead of entire data set of the table or database object included in the backup. 
     In some embodiments, the alter backup command allows users to specify a criteria that must be satisfied in order to include or exclude the database object in accordance with the alter backup command. For example, the backup command can specify “ALTER BACKUP ADD TABLE ‘T1’ IF (sysdate( )&gt;‘01/12/2014’)”. Accordingly, backup manager  230  will include table T1 in subsequent backups only if the condition (sysdate( )&gt;‘01/12/2014’) is satisfied. Assuming that the function call sysdate( ) evaluates to the current date, the backup manager  230  will include table T1 in subsequent backups provided they are executed after the specified date ‘01/12/2014’. 
     The alter backup command can also specify whether to include/exclude certain database objects for the duration of certain time interval. For example, the criteria for determining whether a database object is included/excluded can be if the value of sysdate( ) is in a particular range. Similarly, the alter backup command can specify whether to include/exclude certain database objects until a given date or time. For example, the criteria for determining whether a database object is included/excluded can be if the value of sysdate( ) is less than a particular value. 
     The alter backup command can also specify whether to include/exclude certain database objects if the objects satisfy certain size criteria. For example, the alter backup command can specify that a table should be excluded (or included) from a backup if the size of the table (or the number of rows of the table) exceed(s) (or is below) a threshold value. 
     The criteria for determining whether a database objects should be included/excluded may comprise an expression based on a system parameter values that can be set by a user, for example, a database administrator. Accordingly, the database administrator can specify when certain database objects are included/excluded in backups by changing the values of the system parameter. For example, the alter backup command may specify that table T1 should be excluded from backups if, (system_parameter (‘optimize_backups’)=‘TRUE’). Accordingly, a system administrator could set the value of parameter ‘optimize_backups’ to be FALSE by default, thereby causing backup manager  230  to include table T1 in backups by default. However, if needed, the database administrator may modify the value of the parameter ‘optimize_backups’ to be TRUE, thereby causing the backup manager  230  to exclude table T1 from subsequent backups. Later the database administrator can modify the value of parameter ‘optimize_backups’ to be FALSE, thereby causing the backup manager  230  to include table T1 in subsequent backups 
       FIG. 3  shows a flowchart illustrating a process for executing an alter backup command, in accordance with an embodiment. The metadata store  260  stores  310  backup metadata describing backup data sets to be backed up using backup commands. The backup metadata may be stored in one or more database tables. The backup metadata may specify one or more database objects that are included/excluded from subsequent backups. For example, the system table describing the backup metadata may identify a specific database object and store a value indicating whether the database object is included or excluded from subsequent backups. 
     The command processor  220  receives  320  an alter backup command. The command processor  220  parses the alter backup command. The alter backup command identifies one or more database objects and specifies whether each object should be included or excluded from subsequent backups. The command processor  220  identifies the various database objects identified in the alter backup command. The command processor  220  also determines whether the alter backup command specifies inclusion or exclusion of each database objects. 
     The command processor  220  modifies  330  the backup metadata stored in metadata store  260  based on the information specified in the alter command received. For example, the command processor  220  stores in the backup metadata, information identifying each database object specified in the alter command and information indicating whether the database object should be included or excluded in subsequent backup commands as specified in the alter backup command. If the backup metadata stores information describing a database object based on a previous alter backup command, the execution of the current alter command overwrites the information previously stored in the metadata store  260 . For example, based on a previous alter backup command, if the metadata store  260  stores information indicating that a database object should be excluded from subsequent backups and the current alter backup command specifies that the same database object should be included in subsequent backups, the cpms updates the metadata store  260  based on the current (i.e., latest) alter backup command to specify that the database object should be included in subsequent backups. 
     The command processor  220  subsequently receives  340  a partial backup command. The partial backup command is a backup command that specifies an option indicating the backup is a partial backup. The partial backup command may request a full backup or an incremental backup. For example, a partial backup command may be specified as “BACKUP DATABASE db1 PARTIAL INCREMENTAL” indicating that a partial incremental backup needs to be performed. 
     The command processor  220  executes  350  the partial backup command received  340  to perform a partial backup based on the metadata stores in the metadata store  260 . Accordingly, the command processor  220  executes  350  the partial backup command in accordance with the alter backup command executed as well as other alter backup commands previously executed. The details of the step  350  are further provided in  FIG. 4  as follows. 
     If multiple alter backups are executed specifying the same set of database objects or overlapping sets of database objects, the specification of the last alter backup command is effective in the backup metadata of the metadata store  260 . For example, if an alter backup command adds database table t1 to the backup and a subsequent alter backup command drops the database table t1 from the backup, the backup metadata specifies that the table t1 should be excluded from subsequent partial backups. Furthermore, if a subsequent alter backup command adds the table t1 back to the backup data set, the metadata store  260  stores information indicating that the table t1 should be included in subsequent partial backups. 
       FIG. 4  shows a flowchart illustrating a process for performing a partial backup after executing an alter backup command, in accordance with an embodiment. The backup manager  230  performs the steps of the partial backup process in response to receiving  340  the backup command as shown in  FIG. 3 . The backup manager  230  processes the backup metadata stored in metadata store  260  to determine the database objects to be backed up. 
     The backup manager  230  determines a set of database objects to be backed up based on the backup metadata stored in the metadata store  260 . The backup manager  230  identifies any database objects to be included in the set of database objects according to the backup metadata of the metadata store  260 . These include objects specified using the ADD option of the alter backup command. The backup manager  230  includes  410  these database objects in the set of database objects to be backed up. If a alter backup command was executed with the ADD option and with the special token identifying all the remaining database objects, the backup manager  230  includes  410  all the remaining objects to the set of the database objects. However, the backup manager  230  excludes  420  from the set of database objects to be backed up, any database objects identified by the backup metadata for exclusion. 
     If a database object is specified in the backup metadata stored in the metadata store  260  but does not exist in the database, the backup manager  230  ignores the database object. As a result, if the database object gets created when the backup manager  230  executes the backup command, the backup manager  230  considers the database object based on the instructions in the backup metadata. Accordingly, database objects specified by the alter backup commands that do not exist when the alter command is executed get processed appropriately (in accordance with the alter backup command) whenever they are created in the database. 
     The backup manager  230  checks if a database object specified in the backup metadata is associated with criteria specifying when the alter backup semantics should become effective. If the backup manager  230  determines that a criteria is specified with a database object, the backup manager  230  evaluates the criteria to determine whether the database object should be included/excluded from the backup in accordance with the alter backup command. If the backup manager  230  criteria is satisfied, for example, the condition of the criterion evaluates to a true value, the backup manager  230  exclude/includes the database object in accordance with the backup metadata. However if backup manager  230  determines that the criteria is not satisfied, the backup manager  230  ignores the specification of the backup instructions as per the backup metadata. For example, if the backup metadata specifies that a database object should be included in the backup, if a particular condition is true, and the condition evaluates to false, the backup manager  230  will not include the database object in the backup (assuming that the database objects was not required to be included in the backup for other reasons, for example, other alter backup commands). 
     The backup manager  230  checks if any of the database objects to be included/excluded are associated with database queries specifying the subset of data of the database object to be included/excluded. The backup manager  230  invokes the query processor  250  to execute  430  these queries so as to determine the complete data set that needs to be backed up. The backup manager  230  performs  440  the backup of the data set that is identified. 
     The restore manager  240  performs partial restore process based on a repository created by a backup process. The restore command specifies a name identifying a repository storing the output of a backup. The repository stores information describing the dataset that was backed up by the corresponding backup. For example, the repository identifies the database objects that were backed up. The restore operation determines whether the request to restore is for a full or incremental backup. The restore operation restores the database objects identified by the backup repository. 
     In one embodiment the techniques disclosed herein are implemented using a system that is separate from the database system. For example, the processes described herein may be implemented using an application or a system running on a server separate from the database. Accordingly, the system executing the processes described herein (for example, the processes illustrated in  FIGS. 3 and 4 ) receives backup requests and forwards the requests to the target database. 
     The system also processes alter backup requests and maintains backup metadata based on the requests. In some embodiments, the system stores the backup metadata describing the data sets to be backed up by subsequent backups. In other embodiments, the system stores the metadata in a database but sends appropriate DML (data manipulation language) statements to add/update the metadata in accordance with embodiments of inventions described herein. For example, the system generates appropriate insert/update statements to maintain the metadata tables storing the backup metadata information. 
     The system retrieves the backup metadata information from the database storing the metadata and identifies the backup dataset that needs to be backed up by the database. The system sends information describing the appropriate backup dataset to the database system for execution. For example, the system may send a backup command listing the database objects to be backed up in response to a backup command. 
     ALTERNATIVE APPLICATIONS 
     The foregoing description of the embodiments of the invention has been presented for the purpose of illustration; it is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Persons skilled in the relevant art can appreciate that many modifications and variations are possible in light of the above disclosure. 
     Some portions of this description describe the embodiments of the invention in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work effectively to others skilled in the art. These operations, while described functionally, computationally, or logically, are understood to be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Furthermore, it has also proven convenient at times, to refer to these arrangements of operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combinations thereof. 
     Any of the steps, operations, or processes described herein may be performed or implemented with one or more hardware or software modules, alone or in combination with other devices. In one embodiment, a software module is implemented with a computer program product comprising a computer-readable medium containing computer program code, which can be executed by a computer processor for performing any or all of the steps, operations, or processes described. 
     Embodiments of the invention may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, and/or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a tangible computer readable storage medium or any type of media suitable for storing electronic instructions, and coupled to a computer system bus. Furthermore, any computing systems referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability. 
     Finally, the language used in the specification has been principally selected for readability and instructional purposes, and it may not have been selected to delineate or circumscribe the inventive subject matter. It is therefore intended that the scope of the invention be limited not by this detailed description, but rather by any claims that issue on an application based hereon. Accordingly, the disclosure of the embodiments of the invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.