IBM DB2 9.7, não é possível aumentar os valores LOGFILSIZ ou LOGPRIMARY

1

Estou usando o banco de dados IBM DB2 9.7 LUW. Meus valores atuais de configuração do banco de dados para o log circular são os seguintes:

LOGFILSIZ: 1024
LOGPRIMARY: 13
LOGSECONDARY: 15

Eu recebo o erro de que os logs de transação estão cheios, portanto, preciso aumentar o tamanho do log. Eu tentei com o seguinte:

LOGFILSIZ: 4000
LOGPRIMARY: 10
LOGSECONDARY: 20

Eu também reiniciei o banco de dados. O LOGSECONDARY foi alterado para 20, mas o LOGFILSIZ permaneceu em 1024 e LOGPRIMARY permaneceu em 13.

Estou mudando os valores corretos para o meu problema e por que os valores não mudam mesmo que eu reiniciei o banco de dados?

    
por user1340582 24.04.2014 / 13:44

2 respostas

1

Você está alterando os parâmetros corretos, mas parece que você não reiniciou o banco de dados, o que explicaria porque o LOGSECOND entrou em vigor imediatamente, mas LOGPRIMARY e LOGFILSIZ ainda não foram alterados. Você pode ver quais são os valores atuais e adiados (pendentes) para esses parâmetros de configuração com o comando GET DATABASE CONFIGURATION FOR <yourdb> SHOW DETAIL . Eu suspeito que você verá que os valores diferidos para LOGPRIMARY e LOGFILSIZ são 10 e 4000, respectivamente.

A maneira mais fácil de garantir que você reciclar completamente um banco de dados DB2 é parar e reiniciar a instância inteira (usando os comandos db2stop force e db2start ). Depois disso, você pode, opcionalmente, ativar o banco de dados usando a instrução ACTIVATE DATABASE .

Você não precisa encerrar toda a instância do DB2, no entanto. Para reiniciar corretamente um banco de dados DB2, é necessário desativá-lo (isto é, fazer com que o banco de dados desaloque toda a memória atribuída a ele). Você faria isso matando todas as conexões com o banco de dados (usando a instrução FORCE APPLICATION ) e, em seguida, (se necessário) emitindo a instrução DEACTIVATE DATABASE . Você pode verificar se o banco de dados está completamente parado emitindo o comando LIST ACTIVE DATABASES - se o banco de dados não estiver na lista retornada, ele será interrompido.

Qualquer nova conexão com o banco de dados depois disso (ou ACTIVATE DATABASE ) fará com que o DB2 inicie o banco de dados em questão, ponto no qual alocará os arquivos de log com os novos parâmetros.

    
por 24.04.2014 / 21:39
1

Você deve certificar-se de que as alterações sejam efetivas no disco e na memória. Você pode verificar isso usando o comando db2pd (lançado com a versão 8.2) ou usando o comando GET DATABASE CONFIGURATION como mencionado por Ian acima.

A principal diferença é que o comando db2pd não requer uma conexão com o banco de dados, onde GET DATABASE CONFIGURATION PARA dbname SHOW DETAIL requer uma conexão (observe a cláusula SHOW DETAIL, isso requer uma conexão - não o comando padrão GET DATABASE CONFIGURATION FOR dbname)

db2pd -d nome_bd dbcfg | egrep 'LOGFILSIZ | LOGPRIMARY | LOGSECOND'

Isso listará os três valores abaixo -

Description                             Memory Value                Disk Value
Log file size (4KB)                         (LOGFILSIZ) = 1024                       4000
Number of primary log files                (LOGPRIMARY) = 13                         10
Number of secondary log files               (LOGSECOND) = 20                         20

Você pode notar que as alterações LOGSECOND são efetivas no disco e na memória imediatamente, enquanto as outras 2 requerem uma reinicialização do BD para que a alteração seja efetiva na memória - e, portanto, para o DB realmente tê-la em uso. / p>

E para reiniciar, você pode seguir a ordem padrão - desativar DB, encerrar a instância, emitir uma limpeza de recursos, iniciar a instância e depois ativar o DB e verificar se os valores acima são iguais no disco e na memória.

  • db2 desativar db dbname
  • db2stop
  • ipclean -a
  • db2start
  • db2 activate db dbname
por 02.06.2014 / 11:30