Utiliza????o de comandos do sistema operacional com os procedimentos do sistema de congelar e descongelar para realizar c??pias de seguran??a em linha

Normalmente, estes procedimentos s??o utilizados para acelerar a opera????o de c??pia envolvida na c??pia de seguran??a em linha. Neste cen??rio, o Derby n??o realiza a opera????o de c??pia. ?? utilizado o procedimento SYSCS_UTIL.SYSCS_FREEZE_DATABASE para bloquear o banco de dados, e depois realizada a c??pia do diret??rio do banco de dados utilizando comandos do sistema operacional.

Por exemplo, como o comando tar do UNIX utiliza rotinas de c??pia de arquivo do sistema operacional, e o procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE utiliza chamada de E/S do Java, com sincroniza????o interna adicional para permitir que ocorram atualiza????es durante a c??pia de seguran??a, o comando tar pode gerar c??pias de seguran??a mais rapidamente que o procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE.

Para utilizar comandos do sistema operacional para realizar c??pias de seguran??a em linha, ?? chamado o procedimento do sistema SYSCS_UTIL.SYSCS_FREEZE_DATABASE. O procedimento do sistema SYSCS_UTIL.SYSCS_FREEZE_DATABASE coloca o banco de dados em um estado onde este pode ser copiado com seguran??a. Ap??s o banco de dados ter sido copiado, ?? utilizado o procedimento do sistema SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE para continuar trabalhando com o banco de dados. Somente ap??s SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE ter sido utilizado, as transa????es poder??o escrever novamente no banco de dados. As opera????es de leitura podem prosseguir enquanto o banco de dados estiver "congelado."

Nota: Para garantir uma c??pia de seguran??a do banco de dados consistente, o Derby dever?? bloquear os aplicativos que tentarem escrever no banco de dados congelado, at?? que a c??pia de seguran??a esteja completa e o procedimento do sistema SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE seja chamado.

O exemplo a seguir demonstra como os procedimentos de congelar e descongelar s??o utilizados para envolver o comando de c??pia do sistema operacional:

public static void backUpDatabaseWithFreeze(Connection conn)
        throws SQLException
{
Statement s = conn.createStatement();
s.executeUpdate(
    "CALL SYSCS_UTIL.SYSCS_FREEZE_DATABASE()");
// Copiar o diret??rio do banco de dados durante este intervalo
s.executeUpdate(
    "CALL SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE()");
s.close();
}
Conceitos relacionados
Utiliza????o do procedimento de c??pia de seguran??a para realizar c??pia de seguran??a em linha