Árvore de páginas

Objetivo

Atualizar a versão do sistema possibilitando o acompanhamento dos status da atualização em tempo real.

A aplicação irá atualizar a base de dados, arquivos executáveis e bibliotecas do sistema.


Caminho

TOTVS Supermercados Atualiza - Linha RMS – UPD00003.


Pré-Requisitos e Restrições

  • A ferramenta está disponível à partir da SP 36 da release 12.1.27.
  • A versão mínima para usar a ferramenta é 12.27.34.
  • A ferramenta deve ser executada em um sistema operacional homologado.
  • É necessário ter o .Net Framework v4.8 ou superior instalado.
  • É necessário ter o Oracle Client com o arquivo tnsnames.ora configurado.
  • É necessário que o owner tenha privilégio ao dicionário de dados do Oracle (“select any dictionary” ou "select_catalog_role").
  • É desejável que o owner tenha privilégio para encerramento de sessões (“alter system kill”).
    • Como alternativa, caso não seja adicionado o privilégio, pode ser criada uma procedure para que alguns recursos do produto consigam realizar o encerramento de sessões. Ver documentação sobre Servidor de Banco de Dados para exemplo da procedure e mais informações.
  • É necessário que o usuário tenha permissão para ler/escrever no diretório ao qual os arquivos serão substituídos.

Passo a passo

No primeiro acesso, será exibida uma mensagem informando que a conexão não está configurada. Clicando em sim, será possível configurar a conexão da aplicação, conforme as imagens abaixo.

Após configurada a conexão e validada, será exibida a tela de login.

Para editar a conexão com a base de dados na tela de login, basta clicar no ícone marcado na imagem abaixo (ou clique duplo no campo Conexão) e alterar os dados de conexão.

Para utilizar o TOTVS Atualiza (Linha RMS) faça o login informando o usuário, senha e o contexto de acesso.

Ao realizar o login, caso seja o primeiro acesso, será necessário informar o IP da máquina na qual o servidor RMS está instalado, conforme imagem abaixo. Na tela de login também há o botão para acessar a configuração de servidor.

Ao clicar em sim, será exibido um formulário para preencher a informação do IP do servidor, conforme o exemplo abaixo.

Após configurado o servidor, será possível entrar no sistema.

Caso haja mais de um pacote disponível no mesmo diretório da aplicação, será exibido um formulário para selecionar qual pacote deseja utilizar.


Validade do Pacote

Os pacotes de atualização possuem uma data de expiração para garantir que as atualizações ocorram sempre para a release mais recente disponível na ocasião, assegurando que as últimas correções e adequações de produto serão aplicadas. Caso a ferramenta seja iniciada por um pacote de atualização que foi disponibilizado a mais de 15 dias, uma mensagem de alerta será exibida, porém, será possível continuar a atualização. Ao se deparar com esta mensagem, recomenda-se verificar na ocasião se há um pacote de atualização (release) mais recente.

Se o pacote de atualização tiver sido liberado a mais de 30 dias, a ferramenta impedirá que a atualização seja iniciada e somente permitirá continuar se for informado uma chave de acesso emergencial fornecida pelo suporte. Neste cenário, recomenda-se verificar se há na ocasião um pacote de atualização mais recente disponível, e se mesmo assim houver a necessidade de atualizar para o pacote obsoleto, a chave de acesso deverá ser solicitada a equipe de suporte que avaliará se há viabilidade para que a mesma seja fornecida.


Tela de Avisos

Após fazer o login, será visualizada a tela de avisos, que exibirá (quando houver) notificações sobre procedimentos/informações referentes ao processo de atualização.

Para continuar a atualização é necessário dar ciência nos avisos. Para isso, marque os avisos como ‘lidos’ clicando nas caixas de cada item.


Ao marcar o aviso como ‘lido’ você confirmará que está ciente sobre os procedimentos/informações que poderão impactar o processo de atualização, conforme demonstrado na imagem abaixo.


Recomenda-se verificar os avisos previamente, uma vez que estes podem conter orientações de ações importantes e necessárias antes e depois da atualização, e que podem exigir tempo hábil para sua execução.

Se não houver nenhuma informação referente a atualização da base de dados, a tela de avisos não será exibida. Caso queira visualizar novamente os avisos, basta clicar no botão ‘Avisos da Versão’.


Objetos Inválidos

Se houver objetos inválidos na base, ao fazer o login, será exibido uma mensagem de aviso, conforme imagem abaixo. É importante que não haja objetos inválidos, mas isso não impede que a atualização seja executada. Verifique se são objetos oficiais, e, se necessário, reporte-os ao suporte.

Ao clicar em ‘Ok’ serão exibidos os objetos que estão inválidos e as triggers desabilitadas, onde será possível ‘Recompilar’ os objetos, ‘Atualizar’ a lista de verificação e ´Exportar´ as informações para um arquivo texto. Ao selecionar um registro, na tela ‘Erro’ será exibido seu detalhamento, conforme imagem abaixo.

Se não houver objetos inválidos, a tela não será exibida ao logar. Caso queira visualizá-la clique no botão ‘Objetos inválidos’.


Usuários e Processos Logados

Para realizar a atualização, é necessário que nenhum usuário ou processo esteja logado na base de dados. Clique no botão ‘Usuários Logados’ para visualizar se há usuário logado na base. Nesta tela é possível ‘Encerrar a sessão’ e ‘Atualizar a lista’.


Preparando Atualização

Antes de iniciar a atualização certifique-se que todos os processos e serviços foram parados e de que não há nenhum usuário conectado na base de dados, caso contrário a atualização não será iniciada e será exibida uma mensagem de alerta, conforme imagem abaixo.

Nota: A execução de jobs e schedules será suspensa na instância do banco de dados durante a atualização, desde que dados os grants necessários ao usuário do banco.

Clique no botão ‘Atualizar’ para iniciar a atualização.

Antes de iniciar a atualização será exibida mensagem avisando sobre a importância de não ter usuários conectados e sobre a pausa nos processos, conforme imagem abaixo.

Após clicar em ‘OK’ a atualização será iniciada e o andamento será exibido no ‘Histórico da Execução’.

Caso as configurações não tenham sido preenchidas ainda, será exibida a mensagem perguntando se deseja configurar. Este é um passo necessário para que a atualização se inicie.

Mais detalhes sobre as configurações, consulte a seção 'Configurações' neste documento.

IMPORTANTE: Tenha ciência de que este processo não pode ser abortado, depois de iniciado deve ser concluído. O processo não é reversível, uma vez que o modelo de dados e os objetos serão alterados durante a execução dos scripts, tornando os executáveis utilizados até então incompatíveis.

Ao iniciar a atualização, é de extrema importância que os usuários não acessem o sistema enquanto o processo não estiver totalmente finalizado.


Executando Atualização

Durante o processo de atualização será exibido o status da execução, informando o andamento total e por tarefas.

Total: Exibe o andamento do total de arquivos da versão.

Tarefa: Exibe o andamento das tarefas dentro de cada arquivo.

Tempo Estimado: Quando o processo de atualização envolve a criação de tarefas longas, como por exemplo, criação de índices ou de novas colunas, a aplicação exibirá o tempo estimado para tal execução. Conforme imagem abaixo.

Nota: Tempo Estimado

É importante destacar que o tempo estimado é do Oracle, e sua exibição está condicionada ao Oracle fornecer a informação. Algumas operações podem envolver mais de uma etapa (ex: scan, sort), e o tempo estimado é de cada etapa.

Sessão Bloqueada: Se durante o processo de atualização acontecer de algum usuário conectar-se na base e bloquear uma sessão, o processo poderá ser interrompido e a aplicação exibirá o status ‘Sessão bloqueada’, conforme imagem abaixo.

Para verificar qual sessão está bloqueando a atualização e encerrá-la, acesse a tela ‘Usuários e Processos logados’ ou coloque o ponteiro do mouse no texto 'Sessão bloqueado!' em vermelho para que seja exibida a informação da sessão, conforme imagem abaixo:

Ao finalizar a atualização, se houver objetos inválidos, será exibida uma mensagem de aviso conforme imagem abaixo. Verifique se são objetos oficiais, e, se necessário, reporte-os ao suporte. É importante que não haja objetos inválidos no banco de dados.


Histórico de Execução

O aplicação exibirá o histórico de execução de cada arquivo, informando o tempo da execução e se houve ou não falhas durante a execução do arquivo. Se ocorrem falhas durante a execução da atualização, elas serão exibidas em tela conforme imagem abaixo.

É possível ordenar o histórico para que as execuções que estiverem com status de falhas sejam exibidas nas primeiras linhas. Basta dar um duplo clique no cabeçalho da coluna ´Status´.

Em caso de dúvidas, reporte as falhas ao suporte. É possível exportar as falhas para um arquivo único compactado para envio ao suporte por meio do botão ‘Exportar’.

Algumas falhas são obsoletas e, na maioria das vezes, são irrelevantes, pois indicam que os objetos já foram criados (como por exemplo, índices, colunas ou tabelas) e não demandam nenhum tipo de análise do suporte.

Por padrão, as falhas obsoletas não são exibidas, para consultá-las clique na opção ‘Mostrar falhas obsoletas’, conforme imagem abaixo.


Histórico de Atualizações

O histórico ficará gravado na base de dados, para consultá-lo acesse o botão ‘Histórico de Atualização’ e clique na lupa ou dê duplo clique na linha para visualizar o log de erros.

Para consultar os detalhes do erro, selecione a linha e dê duplo clique na coluna ‘Comando’ ou na coluna ‘Falha’. Conforme imagens abaixo.

É possível salvar os logs com as falhas em arquivo texto, caso seja necessário encaminhá-las para o suporte. Para exportar as falhas, clique no botão ‘Salvar Relatório’.

Selecione a pasta em seu computador onde serão armazenados os arquivos.
Se deseja exportar apenas os erros críticos, na mensagem ‘Exportar somente erros críticos?’, clique em ‘Sim’.


Configurações

As configurações podem ser acessadas através do botão ´Configurações´.

No formulário é possível alterar as configurações de Table Space para execução dos scripts de banco, os caminhos onde estão os arquivos no servidor do RMS e o endereço de IP do servidor. Também é possível alterar a conexão através do botão ´Configurar Conexão´.

Há a opção para gerar o backup dos arquivos que serão alterados pelo pacote, marcando a opção ´Gerar backup dos arquivos´.


Informações do Pacote

As informações sobre o pacote podem ser acessadas através do botão ´Informações do Pacote´.

É possível verificar quais arquivos de extensão '.exe' e '.dll' estão presentes no pacote selecionado e comparar as versões deles com os arquivos apontados no diretório do servidor, conforme exemplo abaixo. Também é possível visualizar os objetos que sofrerão alteração no pacote.

Há a possibilidade de exportar essas informações através do botão ´Salvar Relatório´.


Execução em modo silencioso

A aplicação pode ser inicializada com passagem de parâmetros conforme descrito abaixo:

  • autoexec
    Usado para que a execução se inicie sem interação humana, ou seja, execução silenciosa.
  • salvalog
    Usado para informar a geração de log da aplicação. Serão criados arquivos na pasta Logs, no mesmo diretório da aplicação, tendo como padrão o nome como “log_ddMMyyyyHHmmss.json”.
  • -c <servidor> <usuário> <senha>
    Para informar a conexão com a base de dados, deve-se utilizar o marcador -c seguido do servidor, usuário e senha, nessa ordem e sempre com essas informações. A aplicação irá buscar no TNSNAMES os dados de conexão, então é preciso que o arquivo esteja configurado corretamente.
  • tipoAmbiente=<ambiente>
    Usado para informar se o ambiente é de Produção ou Homologação. Se o parâmetro não for informado, será considerado ambiente de produção. Valores possíveis: P (produção) ou H (homologação).
  • pacote=<caminho>
    Usado para informar o caminho do pacote que será utilizado na atualização do ambiente contendo o arquivo compactado no formato zip ou o diretório com os arquivos descompactados.
  • desconectausuarios=<valor>
    Usado para encerrar as sessões ativas no ambiente informado. Valores possíveis: S (sim) ou N (não). ATENÇÃO: Ao informar SIM, todas as sessões serão encerradas sem aviso e portanto deve ser utilizado com cautela.

Os parâmetros podem ser informados em qualquer ordem, exceto o parâmetro de conexão que, ao informar o marcador, deve seguir a ordem estabelecida na documentação. Os dados de conexão são obrigatórios.

Ao executar em modo silencioso, um ícone de sistema irá exibir as informações atuais da execução, conforme imagem abaixo.

Os arquivos de log gerados, seguem o modelo de exemplo abaixo.

log_20210208114056.json
{
  "nomeExecutavel": "Atualiza.exe",
  "id": 1,
  "sistemaOperacional": {
    "nome": "Windows 10 Pro",
    "versao": "10.0.19042.0",
    "build": "19042",
    "release": "2009"
  },  
"nivel": "Informacao",  
"dominio": "SP01",
"nomeMaquina": "RBPN019403893",
"nomeUsuario": "vitor.gilioli",
"dataHora": "21/10/2021 11:40:56",
"mensagem": "A versão mínima do framework .NET para executar a aplicação não está instalada.\nNecessário .NET 4.8\nInstalado .NET 4.7",
 "stack": "",
 "palavrasChave": [ ".net", "inicialização", "framework" ]
}
log_20210208150746.json
{
  "nomeExecutavel": "Atualiza.exe",
  "id": 1,
  "sistemaOperacional": {
    "nome": "Windows 10 Pro",
    "versao": "10.0.19042.0",
    "build": "19042",
    "release": "2009"
  },
  "nivel": "Erro",
  "dominio": "SP01",
  "nomeMaquina": "RBPN019403893",
  "nomeUsuario": "vitor.gilioli",
  "dataHora": "21/10/2021 15:07:46",
  "mensagem": "Não é permitido abrir mais de uma instância pois o módulo já esta sendo executado.\n\nTerminal: RBPN019403893\nUsuário O.S: vitor.gilioli",
  "stack": "",
  "palavrasChave": [ "rms", "atualiza", "versão", "aplicação" ]
}
log_20210208151109.json
{
  "nomeExecutavel": "Atualiza.exe",
  "id": 0,
  "sistemaOperacional": {
    "nome": "Windows 10 Pro",
    "versao": "10.0.19042.0",
    "build": "19042",
    "release": "2009"
  },
  "nivel": "Sucesso",
  "dominio": "SP01",
  "nomeMaquina": "RBPN019403893",
  "nomeUsuario": "vitor.gilioli",
  "dataHora": "21/10/2021 15:11:09",
  "mensagem": "Atualização finalizada.\nTempo decorrido de atualização: 00:02:19",
  "stack": "",
  "palavrasChave": [ "rms", "atualiza", "sucesso", "atualização" ]
}

Exemplo de chamada

"Atualiza.exe" autoexec salvalog -c ora19 rms rms tipoAmbiente=P pacote=C:\RMS\Pacotes\SP_R32_8.zip

Código de Saída

A aplicação irá lançar um código de saída (exitCode) com o valor 0, caso tenha finalizado a execução com sucesso ou o valor 1 caso tenha apresentado algum erro durante a execução. Para ambas as situações, se for passado o parâmetro salvalog, a aplicação irá gerar sempre o arquivo de log referente ao momento de encerramento da aplicação, seja por sucesso ou erro.