Dúvida ou Incidente

Mensagem: -242 Could not open database table (informix.cnnfrps)


Solução

Para solução da mensagem será necessário identificar qual processo e usuário que esta travando uma tabela;


No exemplo abaixo simulamos travamento da tabela "cofilial" e serão descritos os processos para identificar o travamento e finalizar a sessão caso necessário;


1-Acesse o via dbaccess o banco sysmaster;


dbaccess sysmaster



2-Execute o select abaixo:


select * from syslocks where waiter is not null


O processo que for apresentado como owner refere-se ao dono, é o usuário que está bloqueando outro usuário, o processo que for apresentando como waiter é o que está bloqueado aguardando a liberação.


3-Execute o comando abaixo no servidor banco de dados, substituindo "owner" pelo numero do processo identificado no passo anterior no caso 323;


onstat -g ses 323 > lockfilial.txt


Ao editar o arquivo será apresentado o "pid no caso 939 conforme exemplo abaixo;



Entre os dados que serão apresentado você pode obter o "pid" para obter mais detalhes e se necessário matar o processo.


4-Execute no servidor de aplicação o comando abaixo substituindo o "pid" pelo numero do pid identificado no passo anterior para obter mais detalhes sobre o processo:


ps -aux | grep pid


Exemplo:

ps -aux | grep 939



No exemplo acima foi identificado que o usuário informix esta realizando no CADA0220 um alteração e deixou a tela aberta travando demais processo;


Neste cenário a orientação finalizar alteração e finalizar o processo;


5-Se necessário matar a sessão execute no servidor de banco o comando abaixo substituindo o owner pelo numero da sessão.


onmode -z owner


Exemplo:

onmode -z 323


6-Se for necessário matar o processo, execute no servidor de aplicação o comando abaixo substituindo o "pid" pelo numero do pid.


kill -15 pid


Exemplo:

kill -15 939