No Capítulo 8."Recuperando um Banco de Dados", a seguinte seção sobre a utilização da função E/S suspensas foi incluída e atualizada:
db2inidb é uma nova ferramenta enviada com o DB2 que pode fazer a recuperação de falha e pôr um banco de dados em estado de avanço pendente.
E/S Suspensas suporta disponibilidade contínua de sistema por proporcionar implementação integral para tratamento de espelhamento dividido online, ou seja, dividir um espelhamento sem desligar o banco de dados. Se um cliente não tem condições de fazer backups online ou offline em um grande banco de dados, backups ou cópias de sistema podem ser feitas a partir de um espelhamento utilizando-se E/S suspensas e espelhamento dividido.
E/S suspensas evita que o disco grave para assegurar que o espelhamento dividido de um banco de dados seja consistente. Todas as operações de bancos de dados, além de restaurarem e fazerem backup online, devem funcionar normalmente enquanto o banco de dados está suspenso. Entretanto, algumas operações podem interromper-se durante a tentativa de apagar páginas sujas do conjunto de buffers ou acrescentar buffers ao registro. Essas operações devem reiniciar normalmente assim que as E/S do banco de dados forem reiniciadas. É importante que as E/S do banco de dados sejam reiniciadas a partir da mesma conexão de que elas foram originalmente suspensas. Caso contrário, uma tentativa subseqüente de conexão pode interromper-se se exigir a limpeza de páginas sujas do conjunto de buffers para o disco.
O espelhamento de um banco de dados envolve principalmente copiar o conteúdo integral do diretório do banco de dados. É também necessário copiar o diretório de registro e quaisquer contêineres de área de tabela, se não estiverem localizados no diretório do banco de dados. Como o banco de dados espelhado é dependente desses caminhos de diretório, os caminhos para os quais esses diretórios são copiados devem ser idênticos aos do sistema principal. Isso implica que a instância deve também ser a mesma. Como resultado dessa dependência, não é possível espelhar um banco de dados no mesmo sistema que o principal, a não ser que a nova opção "relocate" da ferramenta db2inidb seja utilizada.
O propósito da opção "relocate" é realocar um banco de dados em um determinado sistema, utilizando a arquivo de configuração especificado. Isso pode envolver alterar o diretório interno do banco de dados, nomes do diretório de contêiner e do diretório de registro, alterar o nome da instância e alterar o nome do banco de dados. Assumindo-se que o diretório do banco de dados, diretórios de contêiner e diretório de registro foram espelhados com sucesso nos diferentes caminhos de diretório no mesmo sistema que o banco de dados principal, a ferramenta db2inidb pode ser utilizada juntamente com a opção "relocate" para atualizar os caminhos internos do banco de dados espelhado. Um cenário de utilização com essa opção pode ser encontrado abaixo.
Dependendo de como os dispositivos de armazenamento estão sendo espelhados, as utilizações de db2inidb irão variar. As seguintes utilizações assumem que todo o banco de dados está espelhado, consistentemente através do sistema de armazenamento.
Em um ambiente com vários nós, a ferramenta db2inidb deve ser executada em cada partição antes que a imagem dividida possa ser utilizada a partir de qualquer uma das partições. A ferramenta db2inidb pode ser executada em todas as partições simultaneamente.
O objetivo aqui é ter um clone do banco de dados principal para ser utilizado somente para leitura. O seguinte procedimento descreve como um banco de dados clone pode ser feito:
db2 set write suspend for database
db2 set write resume for database
Após executar o comando, o banco de dados principal deve voltar ao estado normal.
db2start
db2inidb database_name AS SNAPSHOT
Você também pode utilizar esse processo para fazer um backup offline, mas se restaurado no banco de dados principal, esse backup não pode ser utilizado para avançar, porque a cadeia de registros não será igual.
Como o banco de dados espelhado (em espera) está continuamente avançando através dos registros, novos registros que estejam sendo criados pelo banco de dados principal estão constantemente sendo recuperados do sistema principal. O seguinte procedimento descreve como um espelhamento dividido pode ser utilizado como um banco de dados de espera:
db2 set write suspend for database
db2 set write resume for database
db2inidb database_name AS STANDBY
O seguinte procedimento descreve como utilizar o banco de dados espelhado como uma imagem de backup para restaurar no banco de dados principal:
db2start
db2inidb database_name AS MIRROR
O seguinte procedimento descreve como utilizar a opção "relocate" da ferramenta db2inidb para espelhar um banco de dados no mesmo sistema que um banco de dados principal. O exemplo assume que o banco de dados será utilizado sob uma nova instância.
db2 set write suspend for database
db2 set write resume for database
DB_NAME=<name>,<optional new name> DB_PATH=<primary db dir path>,<mirrored db dir path> INSTANCE=<primary instance>,<mirror instance> LOG_DIR=<primary db log dir>,<mirrored db log dir> CONT_PATH=<primary db container #1 path>,<mirrored db container #1 path> ... CONT_PATH=<primary db container #n path>,<mirrored db container #n path> NODENUM=<node #>
db2start
db2inidb database_name as STANDBY relocate using config_file