Mensagem: -242 Could not open database table (informix.cnnfrps)
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