O tools é uma ferramenta desenvolvida para criar, atualizar e validar a estrutura do banco de dados da aplicação. Sua execução se dá por linha de comando, ao iniciar o executável de .bat em Windows e .sh em sistemas Linux.
A execução do tools é essencial sempre que houver troca de versão da aplicação ou necessidade de garantir que o banco esteja compatível com a estrutura esperada.
Cada versão da aplicação possui sua própria versão do Tools, sendo necessário executar a versão do Tools correspondente a versão da aplicação na qual deseja compatibilizar o banco de dados.
A pasta do tools por padrão fica no diretório de versão do SFA, que se localiza no caminho: ?:\ws\install\versoes\[ambiente]\[versão]\tools
Os diretórios do tools possuem a seguinte estrutura:
Recomendamos manter a última versão executada do tools dentro do diretório ?:\ws\tools\[ambiente], para facilitar futuras manutenções.
Conexão com banco de dados: Para configurar a conexão com o banco de dados do tools, edite o arquivo hibernate.properties. Segue abaixo a estrutura do arquivo de configuração, lembrando que o exemplo abaixo é uma configuração para o PostgreSQL, sendo necessário ajustar o driver e o dialect em caso de utilizar outra SGBD.
Executável do Tools: Pode ser necessário configurar o executável do tools SIM3GTools (.bat ou .sh).
Windows: Valide se o caminho do comando cd está consistente com o diretório do tools e se o endereço do java está correto. Também recomendamos um aumento da quantidade de memória para execução do processo. A memória é definida no parâmetro “-Xmx” por padrão o mesmo vem com 512M configurado, o ideal é aumentar para 3G, deixando o parâmetro como “-Xmx3G”. Segue abaixo a estrutura do executável.
O Tools possui diversas opções de ações diferentes, seguem abaixo todas as opções disponíveis, com orientações sobre o uso e observações importantes.
Uso: Não executar. Procedimento utilizado apenas em versões muito antigas do SFA. Não é mais suportado e não deve ser utilizado.
Opção 2 – Gerar log SQL das alterações
Uso: Quando não é possível executar o Tools diretamente no banco de dados, por exemplo, por falta de permissões. Gera um arquivo .sql com as alterações necessárias na base, para execução manual posterior por um usuário com permissão.
Opção 3 – Aplicar alterações à base de dados
Uso: Executa automaticamente as alterações listadas no log gerado pela opção 2. Inclui tentativas de exclusão (DROP) de objetos e adição de constraints NOT NULL. Pode gerar erros caso a base já possua dados que impeçam essas alterações.
Opção 4 – Verificar integridade da base
Uso: Valida a estrutura do banco de dados. Ao final, gera um arquivo fix.sql na raiz da pasta do Tools.Esse script deve ser executado manualmente no banco, analisando e corrigindo possíveis erros identificados.
Opção 5 – Atualizar ou adicionar scripts padrão do sistema
Uso: Insere ou atualiza registros essenciais para o funcionamento do SFA. Inclui parâmetros, configurações e dados-base como tabela, tempo, tipocampo, entre outros.
Opção 6 – Migrar versão do Tools sem NOT NULL e sem DROPs (Depreciada)
Uso: Não executar. Procedimento utilizado apenas em versões muito antigas do SFA. Não é mais suportado e não deve ser utilizado.
Opção 7 – Aplicar alterações à base de dados sem NOT NULL e sem DROPs
Uso: Estrutura toda a base conforme a versão da aplicação definida no arquivo hibernate.properties, sem aplicar constraints NOT NULL e sem remover tabelas. Minimiza o risco de perda de dados existentes.
Opção 8 – Gerar log SQL dos scripts padrão
Uso: Similar à opção 2, mas voltada para os scripts padrão do sistema. Gera um arquivo .sql com as alterações necessárias para execução manual, quando não é possível rodar o Tools diretamente no banco.
Opção 9 – Criar backups de tabelas de configuração
Uso: Cria backups das seguintes tabelas, com nome no formato NOMETABELA+DATAHORAATUAL:parametro, regra, perfilacessoregra, perfilacesso.
Opção 10 – Validar e corrigir Sequences e WsVersao
Uso: Corrige problemas em sequences e no campo wsversao que podem impedir inserções na aplicação, especialmente após um restore da base.
Opção 11 – SIM3Gmp – Gerar log SQL das alterações (Depreciada)
Uso: Não utilizar.Criada para o produto Sim3GMP, atualmente descontinuado.
Opção 12 – SIM3Gmp – Aplicar alterações à base de dados (Depreciada)
Uso: Não utilizar. Criada para o produto Sim3GMP, atualmente descontinuado.
Opção 14 – Sair
Uso: Encerra o Tools corretamente. Recomendado sempre após finalizar qualquer operação.
Opção 15 – Verificar integridade da base e aplicar correções
Uso: Combina a verificação de integridade da opção 4 com a execução automática do fix.sql. Equivalente à relação opção 3 em relação à opção 2.
Opção 18 – Atualizar ou adicionar scripts customizados (cliente)
Uso: Atualiza ou insere scripts específicos para versões customizadas da aplicação ou para o módulo pedidoengine.
Seguem abaixo recomendações de roteiro de opções a serem executadas.
Migração de Versão
Recomendado: Opção 3 - Opção 7 - Opção 15 - Opção 5 - Opção 18 - Opção 4
Versões SVN / Git < 8.2.5
Recomendado: Opção 7 > Opção 4 (executar fix.sql manualmente) > Opção 5
Versões Git >= 8.2.5 e < 8.3.9
Recomendado: Opção 7 > Opção 15 > Opção 5
Versões Git >= 8.3.9
Recomendado: Opção 7 > Opção 15 > Opção 5 > Opção 18
Para analisar o log de execução, acesse o diretório logs disponível na pasta do tools e então abra o arquivo tools.log. Dentro dele fica o registro completo de toda a execução do tools, sendo possível validar as ações realizadas e erros que podem ter ocorrido durante a execução
Para uma execução segura do Tools, recomendamos que sejam parados os serviços do SFA que acessam o banco de dados (WildFly, Sincronização, Integração) e então seja reiniciado o banco de dados, para garantir que processos persistentes não travem a execução.
Caso deseje realizar o processo com o banco ativo, com o comando abaixo é possível verificar se existem processos persistentes no banco de dados, que podem travar a execução do Tools:
select pid, datname, backend_start, wait_event_type, state, query from pg_catalog.pg_stat_activity where datname = 'nome_do_banco' order by state;
Para encerrar esses processos, utilize o comando abaixo:
SELECT pg_terminate_backend(pid);