O impacto em seu banco
As estruturas do banco de dados colocadas em memória compartilhada das releases 10.1B e superiores, são maiores que nas releases anteriores. Em particular, apontadores compartilhados agora são 64bits tanto para a versão 32bits quanto para a versão 64bits. Como resultado, algumas estruturas de dados bastante numerosas, tais como cabeçalhos do buffer do banco de dados e entradas da tabela de lock, consomem consideravelmente mais memória agora.
Mesmo que as alterações na releas 10.1B e superiores tragam vantagens indiscutíveis, alguma atenção deve ser dada a: se você tem um sistema 32bits e atualiza a release do OpeEdge, você pode encontrar alguns erros quando inicia o processo server do banco, ou quando processos client conectam no modo self-service, porque segmentos compartilhados maiores não podem ser alocados dentro do espaço de endereçamento disponível. A tabela a seguir identifica problemas em potencial que podem ocorrer e suas soluções:
|
Problema
|
Solução
|
|
O banco não inicia o server porque as estruturas do banco não cabem mais na memória compartilhada
No log do banco as mensagens apresentadas na saída padrão:
The data space of the process is not enough for the shm segment (1176)
|
Reduza o valor do parâmetro –B em 10% caso você esteja próximo ao limite máximo de memória compartilhada para o sistema oepracional e o valor do –B é grande. Continue reduzindo os valores dos parâmetros que utilizam a memória compartilhada até que o banco inicie.
|
|
O servidor inicia, mas os clients não conseguem conectar em modo self-service. Isto pode ser causado por falta de espaço de endereçamento contíguo livre, combinado com um tamanho de segmento padrão maior.
Ou
Um cliente que conecta a vários bancos no modo self-service pode não mais conseguir. Isto pode ocorrer em virtude de segmentos maiores.
No log do banco as mensagens apresentadas na saída padrão:
Unable to attach shared memory “segment name” error ##. (1720)
|
Reduza o valor do parâmetro –shmsegsize. Quando o espaço de endereçamento possui vários pequenos buracos, o sistema operacional pode ser capaz de encontrar os buracos existentes. Isto é caracaterístico do Windows, onde são mapeados .dll´s num modo tal que não existe grandes quantidades de espaço de endereçamento. O problema é parecido a preencher uma caixa com blocos de madeira de tamanhos variáveis. Blocos de tamanho menor são mais fáceis de encaixar.
|
|
Pode ocorrer um conflito entre grandes bibliotecas de procedures compartilhadas(que são mapeadas em um único segmento de memória contíguo), e grandes segmentos de memória compartilhados pelo server.
|
Reduza o valor do parâmetro –shmsegsize.
|
Com este post encerramos a série referenciando a configuração de tamanho de segmentos de memória compartilhada.