É recomendável importar o banco de dados antes de depurar um procedimento armazenado para evitar este problema.
Quando estiver depurando um Procedimento Armazenado SQL em um banco de dados local, é possível receber o número de erro SQL1224N:
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N Um agente do banco de dados não pôde ser iniciado para atender um pedido ou foi encerrado devido a um encerramento do sistema de banco de dados ou a um comando force. SQLSTATE=55032
Isto ocorre devido a um problema no kernel do Linux (kernel do Linux Bugzilla erro 351). As instruções a seguir são uma solução alternativa que utiliza o método de conexão TCPIP do DB2 (como um auto-retorno) em vez de CLI (Interface de Nível de Chamada). Este procedimento permitirá que o depurador utilize o mesmo alias de banco de dados utilizado anteriormente:
As etapas 2 a 7 abaixo requerem que você efetue login como o proprietário da instância do DB2.
db2set db2comm
Se a saída não contiver a palavra-chave tcpip, será necessário digitar o seguinte comando para atualizar a variável de registro db2comm para incluir tcpip:
db2set db2comm=<nomes de protocolos existentes>,tcpip
A variável de registro db2comm determina qual gerenciador de conexão do protocolo será ativado quando o gerenciador de banco de dados for iniciado. Você pode configurar esta variável para vários protocolos de comunicação, separando as palavras-chave com vírgulas, por exemplo, db2set db2comm=tcpip,appc.
É necessário emitir novamente o comando db2start para iniciar os gerenciadores de conexão para os protocolos especificados pelo parâmetro de registro db2comm. Como iniciaremos o DB2 na etapa 7 abaixo, isso não é necessário agora.
.Para verificar a configuração atual de SVCENAME, digite o seguinte comando:
db2 get dbm cfg | grep -i svcename
Se precisar atualizar a configuração de SVCENAME, digite o seguinte comando:
db2 update dbm cfg using svcename <nome do serviço de conexão>
em que <nome do serviço de conexão> faz distinção entre maiúsculas e minúsculas e deve corresponder ao nome da porta de serviço colocada em /etc/services (por exemplo, db2 update dbm cfg using svcename db2c_db2inst1).
A atualização da configuração do gerenciador de banco de dados não será efetivada até que o próximo comando db2start seja emitido. Isso será feito na etapa 7 abaixo.
db2 catalog tcpip node <nome_do_nó> remote <nome_do_host> server <nome do serviço de conexão>
em que,
Para verificar se o comando catalog funcionou corretamente, emita o seguinte comando:
db2 list node directory
Uma saída de amostra deste comando é (as linhas em branco foram removidas para legibilidade):
Diretório do Nó Número de entradas no diretório = 1 Entrada 1 do nó: Nome do nó = MYNODE Comentário = Protocolo = TCPIP Nome do host = 127.0.0.1 Nome do serviço = db2c_db2inst1
por exemplo,db2 catalog db WAS as WASLOOP db2 uncatalog db WAS db2 catalog db WASLOOP as WAS at node MYNODE
Notas:
Saída de amostra para as etapas 5a a 5c
Antes da etapa 5a, já foi criado um banco de dados local denominado WAS. O comando db2 list db directory tem uma saída semelhante à seguinte:
Diretório de Banco de Dados do Sistema Número de entradas no diretório = 1 Entrada 1 do banco de dados: Alias de banco de dados = WAS Nome do banco de dados = WAS Diretório do banco de dados local = /home/ctsui Nível de release do banco de dados = 9.00 Comentário = Tipo de entrada de diretório = Indireto Número do nó do catálogo = 0
Após a etapa 5a, db2 list db directory terá uma saída semelhante à seguinte:
Diretório de Banco de Dados do Sistema Número de entradas no diretório = 2 Entrada 1 do banco de dados: Alias de banco de dados = WAS Nome do banco de dados = WAS Diretório do banco de dados local = /home/ctsui Nível de release do banco de dados = 9.00 Comentário = Tipo de entrada de diretório = Indireto Número do nó do catálogo = 0 Entrada 2 do banco de dados: Alias de banco de dados = WASLOOP Nome do banco de dados = WAS Diretório do banco de dados local = /home/ctsui Nível de release do banco de dados = 9.00 Comentário = Tipo de entrada de diretório = Indireto Número do nó do catálogo = 0
Após a etapa 5b, db2 list db directory terá uma saída semelhante à seguinte:
Diretório de Banco de Dados do Sistema Número de entradas no diretório = 1 Entrada 1 do banco de dados: Alias de banco de dados = WASLOOP Nome do banco de dados = WAS Diretório do banco de dados local = /home/ctsui Nível de release do banco de dados = 9.00 Comentário = Tipo de entrada de diretório = Indireto Número do nó do catálogo = 0
Após a etapa 5c, db2 list db directory terá uma saída semelhante à seguinte:
Diretório de Banco de Dados do Sistema Número de entradas no diretório = 2 Entrada 1 do banco de dados: Alias de banco de dados = WAS Nome do banco de dados = WASLOOP Nome do nó = MYNODE Nível de release do banco de dados = 9.00 Comentário = Tipo de entrada de diretório = Remoto Número do nó do catálogo = -1 Entrada 2 do banco de dados: Alias de banco de dados = WASLOOP Nome do banco de dados = WAS Diretório do banco de dados local = /home/ctsui Nível de release do banco de dados = 9.00 Comentário = Tipo de entrada de diretório = Indireto Número do nó do catálogo = 0
Para verificar se o comando catalog db funcionou corretamente, emita os dois seguintes comandos (e veja a saída de amostra abaixo):
db2 connect to wasloop db2 connect to was
em que db2 connect to wasloop deve imprimir as informações de conexão e db2 connect to was deve fornecer SQL1403N.
Saída de amostra de db2 connect to wasloop:
Informações de Conexão com o Banco de Dados Diretório de Banco de Dados do Sistema Servidor de banco de dados = DB2/6000 6.1.0 ID de autorização SQL = CTSUI Alias de banco de dados local = WASLOOP
Saída de amostra de db2 connect to was:
Informações de Conexão com o Banco de Dados Diretório de Banco de Dados do Sistema Servidor de banco de dados = DB2/6000 6.1.0 ID de autorização SQL = CTSUI Alias de banco de dados local = WAS
db2 update dbm cfg using authentication client
Para verificar se o comando funcionou corretamente, exiba a nova configuração com o seguinte comando:
db2 get dbm cfg
Saída de amostra:
.... Autenticação do gerenciador de banco de dados (AUTHENTICATION) = CLIENT ....
db2stop db2start
Nota: Pode ser necessário utilizar db2stop force para fechar todas as conexões com o banco de dados ativas.
por exemplo,db2 attach to MYNODE user myid using mypasswd db2 drop db WAS