Typically, these procedures are used to speed up the copy operation involved
in an online backup. In this scenario, does not perform the copy operation for you. You use the SYSCS_UTIL.SYSCS_FREEZE_DATABASE procedure
to lock the database, and then you explicitly copy the database directory by using
operating system commands.
For example, because the UNIX tar command uses operating system
file-copying routines, and uses
the IBM Application Developer Kit file-copying routines, the tar command might provide
faster backups than the SYSCS_UTIL.SYSCS_BACKUP_DATABASE procedure.
To use operating system commands for online database backups, call the SYSCS_UTIL.SYSCS_FREEZE_DATABASE system
procedure. The SYSCS_UTIL.SYSCS_FREEZE_DATABASE system procedure
puts the database into a state in which it can be safely copied. After the
database has been copied, use the SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE system
procedure to continue working with the database. Only after SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE has
been specified can transactions once again write to the database. Read operations
can proceed while the database is "frozen."
To ensure a consistent backup of the database, might
block applications that attempt to write to a frozen database until the
backup is completed and the SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE system
procedure is called.
The following example demonstrates how the freeze and unfreeze procedures are used to surround an operating system copy command:
public static void backUpDatabaseWithFreeze(Connection conn)
throws SQLException
{
Statement s = conn.createStatement();
s.executeUpdate(
"CALL SYSCS_UTIL.SYSCS_FREEZE_DATABASE()");
//copy the database directory during this interval
s.executeUpdate(
"CALL SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE()");
s.close();
}