Utiliza????o do procedimento de c??pia de seguran??a para realizar c??pia de seguran??a em linha

O procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE ?? utilizado para criar a c??pia de seguran??a do banco de dados em um local especificado.

O procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE recebe como argumento uma cadeia de caracteres representando o local onde ser?? armazenada a c??pia de seguran??a do banco de dados. Normalmente ?? fornecido o caminho completo para o diret??rio de c??pia de seguran??a (os caminhos relativos s??o interpretados como sendo relativos ao diret??rio corrente, e n??o ao diret??rio derby.system.home).

Por exemplo, para especificar o local de c??pia de seguran??a c:/minhascopias/2005-06-01 para um banco de dados que se encontra aberto no momento, deve ser utilizada a seguinte declara????o (s??o utilizadas barras inclinadas para frente como separadores do caminho nos comandos SQL):

CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE('c:/minhascopias/2005-06-01')

O procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE() coloca o banco de dados em um estado no qual este pode ser copiado com seguran??a, depois copia o diret??rio de banco de dados original por completo (incluindo os arquivos de dados, arquivos de log de transa????o em linha e os arquivos jar) para o diret??rio de c??pia de seguran??a especificado. Os arquivos que n??o est??o dentro do diret??rio de banco de dados original (por exemplo, derby.properties) n??o s??o copiados.

O exemplo a seguir mostra como fazer a c??pia de seguran??a de um banco de dados em um diret??rio cujo nome reflete a data corrente:

public static void backUpDatabase(Connection conn)throws SQLException
{
// Obter a data de hoje como como uma cadeia de caracteres:
java.text.SimpleDateFormat dataHoje =
   new java.text.SimpleDateFormat("yyyy-MM-dd");
String diretorioCopia = "c:/minhascopias/" +
   dataHoje.format((java.util.Calendar.getInstance()).getTime());

CallableStatement cs = conn.prepareCall("CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE(?)");
cs.setString(1, diretorioCopia);
cs.execute();
cs.close();
System.out.println("c??pia de seguran??a colocada no diret??rio "+diretorioCopia);
}

Para um banco de dados cuja c??pia de seguran??a foi realizada em 2005-06-01, os comandos anteriores copiariam o banco de dados corrente para o diret??rio com o mesmo nome em c:\minhascopias\2005-06-01.

As transa????es n??o efetivadas n??o aparecem na c??pia de seguran??a do banco de dados.

Nota: N??o devem ser feitas c??pias de seguran??a de bancos de dados diferentes, mas com mesmo nome, no mesmo diret??rio de c??pia de seguran??a. Se j?? existir um banco de dados com o mesmo nome no diret??rio de c??pia de seguran??a, ?? assumido como sendo uma vers??o antiga e sobrescrito.

O procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE emitir?? uma mensagem de erro se existirem opera????es n??o registradas (unlogged) na mesma transa????o do procedimento de c??pia de seguran??a.

Caso exista no sistema, quando a c??pia de seguran??a iniciar, opera????es n??o registradas em andamento em outras transa????es, este procedimento ficar?? bloqueado at?? que estas transa????es completem, antes de realizar a c??pia de seguran??a.

O Derby converte, automaticamente, as opera????es n??o registradas para o modo registrado, quando estas s??o iniciadas quando a c??pia de seguran??a est?? em andamento (exceto as opera????es que fazem manuten????o de arquivos jar de aplicativos no banco de dados). Os procedimentos que instalam, substituem e removem arquivos jar no banco de dados s??o bloqueados quando a c??pia de seguran??a est?? em andamento.

Se n??o for desejado que a c??pia de seguran??a fique bloqueada at?? que as opera????es n??o registradas em outras transa????es completem, deve ser utilizado o procedimento SYSCS_UTIL.SYSCS_BACKUP_DATABASE_NOWAIT. Esse procedimento emite um erro logo no in??cio da c??pia de seguran??a caso existam transa????es em andamento com opera????es n??o registradas, em vez de aguardar estas transa????es completarem.

Conceitos relacionados
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