Algumas vezes me deparei com ambientes de produção onde o Informix não executava nenhuma comando administrativo no UNIX, ao rodar algum comando administrativo recebia a mensagem abaixo:
shared memory not initialized for INFORMIXSERVER 'demo_on'
A primeira coisa que alguem diria é que a variavel INFORMIXSERVER não está setada corretamente, isto também é verdade, porém após checar minha variável de ambiente constatei que o ambiente estava ok.
Nestes casos algumas vezes o DBA preferiu efetuar um bounce na instância e o ambiente voltou ao normal, porém foi necessário entender o porque isto ocorreu, nenhum gestor gosta de ter este tipo de resolução de problema.
Vamos a explicação do problema:
Após o Informix inicializar a shared memory o mesmo cria um arquivo de configuraçao em $INFORMIXDIR/etc chamado infos.dbservername , onde dbservername é o nome da sua instância.
Esse arquivo contém informações básicas para que alguns comandos administrativos (onstat, onmode, oncheck) possam fazr um attach na shared memory, sem esse arquivo não é possivel identificar a SHMKEY que foi gerada na inicialização.
Como vizualizar o arquivo de configuração?
ls -las $INFORMIXDIR/etc/.infos*
Para visualizar o conteudo:
onstat -g pos
Agora vem o conhecimento perdido, e para recriar o arquivo sem ter que reinicializar a instancia?
onmode -R
Quando este arquivo é removido?
Ahhhh , buena pregunta!! Quando tem alguém alterando configuração de servicos (/etc/services) ou fazer limpeza no file-system para recuperar espaço livre.
Caso você queira saber se realmente o problema é arquivo de configuração execute um trace no onstat:
strace onstat -
open("/opt/IBM/informix/etc/.infos.demo_on", O_RDONLYO_LARGEFILE) = -1 ENOENT (No such file or directory)access("/opt/IBM/informix/msg/en_us/0333/olutil.iem", R_OK) = 0close(3) = 0
No linux usamos o strace, em Aix costumo usar o truss, lembre-se de um post anterior que eu falei sobre alocação da shared memory, o IDS na inicialização faz o calculo da SHMKEY através dò cálculo (SERVERNUM * 65536) + shmkey , se o arquivo está lá é bom se a shared memory ainda está alocada , pode ser através do comando ipcs.
Este post me faz lembrar dos anos de Telesp Celular, velhos e bons tempos, mais pra frente irei postar algo sobre conexões IPC Stream Pipe (rodando em Tru64 dava pra fazer magia negra).
Hasta Luego!
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.