A707-Relatório técnico sobre base de dados - analistas
Sumário
Sistema: Gerenciador de Aplicativos Prosoft (GAP)
Contexto: Este artigo visa auxiliar os analistas em diversos assuntos referente a base de dados.
Informações Adicionais: Não se aplica.
Resolução
Atenção: Não utilizar este manual como única fonte de conhecimento
Erro 9111
Causa: Índice Inexistente
Descrição: Durante o procedimento consulta no banco de dados a informação não pode ser retornada por existir uma falha na leitura do índice do banco de dados. A informação existe na base, porem não pode ser acessado devido a falha no índice.
Identificação:- Analisando o erro 9111 foi verificado que:
1- Quando o cliente acessa a rotina de cadastro de empresas, ao clicar no ícone DEPESK para localizar a empresa 1 é retornado a mensagem de erro 9111.
2- Foi observado que, quando digitado manualmente o numero da empresa 00001 na rotina cadastro de empresas e digitado ENTER, é possível abrir o cadastro da empresa 00001, porem após uma alteração se realizar a tentativa de gravação das alterações é retornado a mensagem de erro 9111.
Solução: Utilizando a ferramenta Function Executor, é necessário recuperar o índice da base de dados para liberar o acesso a informação, seguindo o procedimento de exclusão e recriação do índice. Após este procedimento o acesso e consulta a base de dados será restaurado.
Erro 3704
Causa: Coluna ou relacionamento ausente na tabela.
Descrição: A mensagem de erro acontece na rotina cadastro de terceiros durante o processo de cadastro de um novo terceiro
Identificação:- Analisando o erro 3704 foi verificado que:
1- Durante o procedimento de cadastro de um novo terceiros no sistema é retornado a mensagem de erro 3704, erro na tabela prg_terceiro_compl.
2- Foi analisado que o arquivo de dados :\PROEMP00\PRG_0006.MKD existe e não esta corrompido porque a tabela abre normalmente.
Solução: Utilizando o utilitário SBP.exe responsável pela recriação de índices, colunas ou relacionamento. Neste exemplo, a tabela prg_terceiro_compl não possui a coluna “diverso”, responsável por armazenar as informações da rotina de cadastro de terceiros.
Btrive Erro 2
Causa:- Erro de arquivo corrompido
Descrição:- Mensagem de erro é retornada sempre que houver um erro interno no arquivo de dados.
Identificação:- Analisando o erro Btrive Error 2, foi identificado que:
1- Utilizando a rotina Cadastro de Produtos, após o lançamento na tentativa de gravar os dados na base é retornado a mensagem de erro.
2- O Arquivo de dados esta corrompido. Existem espaços em branco no arquivo que apresenta o erro.
Solução: É necessário utilizar o PRODESK para ativar o log ProSQL e analizar quais tabelas estão envolvidas na rotina. Após a identificação das tabelas e os arquivos .MKD envolvidas na rotina, é necessário “Debugar”, qual tabela apresenta o erro, durante a tentativa de cadastro. Após identificar a tabela e arquivo .MKD correspondente a tabela com erro, é necessário executar o utilitário Rebuild para recuperar o arquivo, ou também pode-se utilizar a ferramenta Btrive Verify and Repair. Após este procedimento o arquivo com erro será restaurado e liberado para uso.
Erro 54
Causa:- Durante o processo de gravação, os dados foram gravados sobre o cabeçalho do arquivo de dados.
Descrição:- O cabeçalho do arquivo de dados com erro perdeu a referência com o índice da base de dados durante o processo de gravação.
Identificação:- Analisando o erro 54, foi identificado que:
Existe um erro grave no arquivo de dados .BTR ou .MKD da base.
Solução:- A única opção para recuperação deste arquivo com erro, é por meio do utilitário Btrive Verify and Repair, que irá executar a tentativa de restauração do cabeçalho do arquivo com erro 54.
Erro 30
Causa:- Arquivo de dados foi danificado ou esta na versão incorreta para leitura pelo banco de dados.
Descrição:- Arquivo danificado ou fisicamente localizado em um setor do disco rígido que apresenta erro físico para acesso.
Solução:- Analisar o erro 30 conforme as opções abaixo:
1- Verificar se o banco de dados Pervasive esta na versão correta para leitura dos dados.
2- Verificar se existe erro físico no HD do servidor (Bad Block);
3- Executar um Rebuild para tentar recuperar o arquivo;
Caso nenhuma das opções se obtenha êxito, é necessário retornar o último backup válido.
Ferramentas Pervasive
Function Executor: Assistente de leitura dos arquivos criptografados da base de dados Pervasive
Monitor: Assistente de monitoramento da base de dados. Suas principais funcionalidades são Monitoramento de arquivos abertos, Usuários Ativos, Recursos em Uso e Comunicações dos recursos do servidor.
1- SQL Connection Manager Active Sessions – Assistente de verificação de status da base de dados.
2- License Administrator:- Assistente de informações sobre o licenciamento do banco de dados.
3- Rebuild:- Assistente de conversão e recuperação de arquivos da base de dados.
4- ODBC Administrator:- Drivers de gerenciamento das conexões da base de dados.
5- Query Plan Viewer:- Assistente de Creação e Visualização do diagrama da base de dados.
Processo de Licenciamento do Banco de dados Pervasive
O processo de licenciamento do banco de dados Pervasive é extremamente simples, porem o gerenciamento da licença do banco de dados, se torna complexo muitas vezes pelo fato do cliente não utilizar um servidor exclusivo para o Sistema Prosoft. Existem algumas regras impostas pela Pervasive que impede o cliente de realizar qualquer manutenção no servidor sem que notifique a Prosoft sobre qualquer necessidade de manutenção no servidor. Existem algumas observações relevantes que devem ser de conhecimento do cliente, conforme descrevo abaixo:
1- O cliente Prosoft, sempre compra 1 licença Pervasive Permanente, que garante o acesso a informação mesmo quando existe a necessidade de desligamento comercial junto a Prosoft;
2- Demais licenças, devem ser adquiridas “Locadas”como licenças incrementais ilimitadas;
3- Após o licenciamento do Pervasive utilizando o assistente de licenciamento LICWIZ, o cliente não poderá alterar hardware no servidor tais como:- Placa mãe, Processador, memória, HD, Placa de rede, atualização de BIOS e sistema operacional sem notificar a Prosoft. Recomenda-se um servidor dedicado para o sistema Prosoft.
4- Caso exista a necessidade de apenas formatar o Servidor, é necessário antes de qualquer procedimento técnico, entrar em contato com a Prosoft para orientar o cliente sobre o procedimento de remoção da licença do Banco de Dados.
Pelo fato do sistema Prosoft ser implantado na estrutura do cliente, podem ocorrer erros no ambiente do cliente que afetam o gerenciamento/controle da licença do banco de dados, ocasionando bloqueio do banco de dados onde é necessário que o cliente entre em contato com a Prosoft para identificar a falha. Existem alguns procedimentos que são executados por analistas da Prosoft para solucionar a falha, conforme descrevo abaixo:
O licenciamento do banco de dados é sincronizado com o datacenter da Pervasive, mantendo o controle do status da licença, qualquer alteração do servidor onde esta instalado o sistema da Prosoft pode desativar a licença;
Existem casos onde no ambiente do cliente, realmente não houve alteração de sistema e/ou hardware porém, o serviço de licenciamento do Pervasive não esta se comunicando com o data center Pervasive responsável por manter a licença online. Nesses casos, é necessário utilizar o assistente de licenciamento para recuperar chave. O licwiz, possui em suas opções avançadas recursos para:
1- Adicionar novas chaves incrementais;
2- Recuperar chaves desabilitadas;
3- Excluir as chaves quando a necessidade de formatação ou exclusão das chaves.
4- Existe também a opção para adicionar a chave do Pervasive utilizando também a ferramenta “License Administrator”. Com este utilitário, a licença é instalada no servidor, porem só é válida quando sincronizada com o datacenter da Pervasive.
5- Quando nenhuma das opções acima restaurou a chave do banco de dados, ainda existem duas situações que devem ser observadas:
6- Existem alguns clientes que possui a licença do banco de dados Pervasive, adquirida sem nenhum vínculo com a Prosoft. Nesse caso, o cliente é orientado a procurar suporte do distribuidor ao qual o mesmo negociou a compra das chaves. O problema na licença pode ser falta de pagamento.
7- Alguns clientes da Prosoft, tem adquiridas licenças “antigas” do banco de dados que são consideradas licenças Nacional (BR), hoje todas licenças da Pervasive estão centralizadas em um servidor Global. Durante a tentativa de licenciamento das chaves “antigas” ou seja, consideradas como “Nacional BR” pode haver erro no licenciamento. Neste caso, é necessário entrar em contato com a Prosoft para analisar a solução do caso.
Obs. Os analistas de Nivel 4 possuem a console de gerenciamento das chaves do Pervasive, onde são abertas os chamados para recuperação das chaves.
Treinamento Prático sobre a Base de Dados
Select id, codigo from “prg_empresa_compl”
#Retorna apenas as colunas do id e código da tabela “prg_empresa_compl”
Obs:- Um btr pode ser maior do que um mkd, mas um mkd não pode ser maior do que um btr.
Alter table lfs_efd_piscof_2010 add column epc_grava_cst bit default 0#
# Adiciona a coluna epc_grava_cst na tabela lfs_sfd_pisco_2010 com valor default 0#
Analisador ProDesk da Base de Dados – Relatório Técnico
Alter table lfs_efd_piscof_2010 drop column epc_grava_cst
#Exclui a coluna epc_grava_cst da tabela lfs_efd_piscof_2010
drop table prg_empresa_btr in dictionary
# Exclui apenas os indices da tabela prg_empresa_btr. Após a execução deste comando, é necessário excluir os índices no arquivo físico, neste exemplo, “PRGEMPRESAS.BTR” utilizando a ferramenta Pervasive Function Executor.
drop table prg_empresa_btr in dictionary
# Exclui apenas os indices da tabela prg_empresa_btr. Após a execução deste comando, é necessário excluir os índices no arquivo físico, neste exemplo, “PRGEMPRESAS.BTR” utilizando a ferramenta Pervasive Function Executor.
# Excluir os índices do arquivo físico
Set truenullcreate = off
# O comando "Set truenullcreate = off", deve ser utilizado logo após a exclusão do mapeamento da tabela prg_empresa_btr, para SETAR/configurar a leitura do arquivo .BTR durante o processo de recriação do mapeamento para a tabela prg_empresa_btr. Com este comando as colunas do arquivo .BTR são delimitadas/formatadas para leitura no processo de recriação do mapeamento da tabela.
# Após SETAR este comando na base, pode-se executar o comando de criação do mapeamento para a tabela prg_empresa_btr.
Sempre observar o comando SQL na criação ou alteração da base de dados.
Este recurso de verificação deve ser ativado pelo comando CTRL+ALT+H abil + F4.
Com o comando CTRL+ALT+H+abil+F4, é possível habilitar as opções avançadas da base de dados na rotina, criação atualização da base de dados, para realizar uma manutenção de exclusão de dados específicos da base.
Para facilitar o trabalho de manutenção na base de dados, existem as boas praticas recomendadas para tornar a execução do procedimento menos oneroso...
Antes de excluir os índices do dicionário da base de dados, copie a Query de criação dos índices para executar novamente no momento de recriação dos índices.
1- Acesse a opção “SQL View”
CREATE INDEX "iacumulado0001091" ON "acumulado000109"("mesano", "tipo", "fk_sigla_uf");
CREATE INDEX "iacumulado0001092" ON "acumulado000109"("mesano", "tipo", "fk_outras");
CREATE INDEX "iacumulado0001093" ON "acumulado000109"("mesano");
# Query de criação dos índices da tabela de acumulados para o ano de movimento de 2009.
# Query de exclusão do índice “iacumulado0001091” da tabela “acumulado000109” da empresa 0001 ano de movimento 2009.
# Query de exclusão do índice “iacumulado0001092” da tabela “acumulado000109” da empresa 0001 ano de movimento 2009.
# Utilizando a ferramenta Function Executor para excluir os índices no arquivo de dados “lfs_0139.mkd”.
# Recriando os índices para a tabela “acumulado000109”.
# Indices recriados com sucesso tanto para o dicionário da base como para no arquivo físico da base de dados.
# Reprocessando o relatório técnico da base de dados
# Query de criação do índice iacumulado0001101,2 e 3 da tabela acumulado000110.
CREATE INDEX "iacumulado0001101" ON "acumulado000110"("mesano", "tipo", "fk_sigla_uf");
CREATE INDEX "iacumulado0001102" ON "acumulado000110"("mesano", "tipo", "fk_outras");
CREATE INDEX "iacumulado0001103" ON "acumulado000110"("mesano");
# Exclusão apenas do índice do dicionário da base da tabela acumulado000112;
# Exclusão apenas do índice do dicionário da base da tabela acumulado000112;
# Não foi possível excluir o índice iaidf000111, por existir um relacionamento entre tabelas.
É necessário executar o comando de exclusão do relacionamento.
Alter table anexo_dig000110 drop constraint canexo_dig0001101#
Exclui o relacionamento canexo_dig0001101
Inicio do nome da constraint começa com C
Inicio do nome do índice começa com I
Drop índex anexo_dig000110.ianexo_dig0001101#
Exclui os índices da tabela “anexo_dig000110”.
Alter table anexo_dig000110 drop constraint canexo_dig0001101#
Alteração da tabela para exclusão do relacionamento.
Alter table anexo_dig000110
Add constraint canexo_dig0001101
Foreign key (“fk_ocorrepur_id”)
References ocorrepur000110
On delete cascade#
Alterando a tabela para inclusão do relacionamento canexo_dig0001101.
Obs. A opção ON DELETE CASCADE permite exclusão automática de todos os registros filhos.
Obs. A opção ON DELETE RESTRICT não permite exclusão automática de todos os registros filhos, a operação é reversa, portanto, é necessário excluir os registros filhos para liberar a exclusão do registro Pai.
Alguns Query´s
drop index anexo_dig000110.ianexo_dig0001103#
alter table anexo_dig000110 drop constraint canexo_dig0001101#
CREATE INDEX "ianexo_dig0001101" ON "anexo_dig000110"("dataref", "tipo", "fk_cfop_id");
CREATE INDEX "ianexo_dig0001102" ON "anexo_dig000110"("dataref", "tipo", "fk_ocorrapur_id");
CREATE INDEX "ianexo_dig0001103" ON "anexo_dig000110"("dataref");
ALTER TABLE anexo_dig000110
ADD CONSTRAINT canexo_dig0001101 – o numero 1 indica o numero de cada relecionamento
FOREIGN KEY ("fk_ocorrapur_id")
REFERENCES ocorrapur000110
ON DELETE CASCADE#
Erro Chunk 103 ou 22
DDF > MKD – Quando o DDF é maior que o MKD é necessário criar um campo na tabela para ajustar o tamanho do Buffer do arquivo MKD. Após a criação do campo, é necessário excluir o campo criado anteriormente para manter o tamanho do Buffer no arquivo.
Execute o comando abaixo para ajustar o erro.
Alter table tabela_nota add column DUMMIE integer default 999#
Alter table tabela_nota drop column DUMMIE integer default 999#
DDF < MKD – Erro trágico. Quando o arquivo MKD esta maior que o DDF trata-se de um erro grave que deve ser analisado com cautela. Também é possível recuperar o arquivo de dados.
Execute o comando abaixo:
Alter table tabela_nota add column DUMMIE integer default 999 in dictionary#
Alter table tabela_nota drop column DUMMIE integer default 999 in dictionary#
Para identificar se um arquivo de dados pertence a base transacional ou relacional, basta observar a inicial. Quando abrimos um arquivo no bloco de notas, identificamos um arquivo Btrive pelas inicial FC, conforme imagem abaixo:
Criando uma tabela com nome haendel
Criando a tabela henderson no dicionario com o nome de arquivo hsl.mkd
Criando a tabela henderson apenas no dicionario na subpasta \lfs\hsl.mkd usando o arquivo existente hsl.mkd.
Excluindo a tabela henderson apenas do dicionário mantendo o arquivo físico hs1.mkd.
Excluindo a tabela henderson do dicionário e o arquivo físico;
Drop table henderson#
Obs. Com a opção IN DICTIONARY o arquivo físico não será excluído.
Drop table henderson IN DICTIONARY #
# Adicionando uma coluna com o nome DUMMIE na tabela henderson
# excluindo a coluna DUMMIE da tabela henderson
Btrieve Verify and Repair
Este utilitário é pouco mais eficiente do que o REBUILD, pois durante um processo de correção do arquivo com Btrive Error 2,30 e 54, caso a ferramenta não consiga recuperar a informação com o índice “código” a ferramenta tenta recuperar utilizando outros índices, até localizar um caminho válido para recuperar a informação.
No REBUILD, a tentativa de recuperação é executada apenas uma vez, caso a ferramenta não encontre um caminho válido para retornar a informação perdida, a rotina de recuperação é interrompida e o dado não incluído/restaurado.
LIMIT SEGMENT SIZE TO 2GB
Quando existem Arquivos duplicados na base de dados do cliente com mais de 2GB, representa que, este arquivo atingiu o limite máximo de 2GB e automaticamente foi criado uma paginação para garantir gravação dos dados. Isso só acontece quando a opção LIMIT SEGMENT SIZE TO 2GB esta habilitada nas configurações do Pervasive. Esta opção precisa estar desabilitada.
Para solucionar este erro de arquivos duplicados por paginação, é necessário executar o utilitário REBUILD para uma compactação do arquivo com erro. Geralmente este erro acontece com arquivos do Módulo da Folha de Pagamento, por exemplo, GPSFUNC.BTR
DBCHECKPV
O dbcheckpv deve ser utilizado apenas nas seguintes condições:
Troca de servidor
Erro na Leitura de um arquivo da base de dados, geralmente apresentado pelos erros 172 ou 9102;
Erro de sincronismo apresentado pelo erro 73
Erro 2301 que também depende desta correção.
Na versão do Pervasive 10.30, a execução do dbcheckpv se faz necessário executar 3 vezes para corrigir o erro de sincronismo, pelo fato de ter que respeitar a hierarquia de correção das tabelas filhos e até a tabela Pai.
DRM.DLL
Existem situações em que na tentative de abertura do utilitário DBCHECKPV, após digitar o usuário e senha o dbcheckpv não consegue ler/exibir as DSNs da base de dados do cliente. Possivelmente a DLL Drm.dll não existe ou esta na versão incorreta dentro da pasta C:\Program Files (x86)\Pervasive Software\PSQL\bin\drm.dll.
Caso esta janela não seja exibida, voltar a versão da DLL DRM.DLL conforme edição correspondente a versão do Pervasive Liberado para o cliente.
Transferência de base de dados
Restaurando a base de dados dos Parâmetros Gerais:
A transferência de base de dados é um recurso utilizado para transferir os dados de uma base danificada para uma nova base zerada.
Quando à essa necessidade de transferência, devemos realizar os procedimentos conforme descrito abaixo:Criar uma nova PROEMP utilizando a rotina de criação e atualização de base de dados, exemplo, PROEMP50, mas antes de executar a criação, DESABILITAR a opção de DADOS PRIMARIOS (Tabelas padrões).
1- Execute o programa de Transferência de Base de Dados.
2- Utilize a senha dinâmica que vem que tem um problema para acessar a base de dados.
3- Entre com o nome ou ip do servidor
4- Na opção “Base de Origem” aponte para a PROEMP00, ou seja, a PROEMP que esta com o erro.
Na opção “Base de Destino”, aponte para a PROEMP50, ou seja, a PROEMP que acaba de ser criada e possui as tabelas vazias.
5- Clique no botão “Conectar” e em seguida click em “Iniciar a transferência”.
6- Verifique se no relatório de transferência de Bases, todos os registros foram transferidos.
7- Após a transferência, copiar todos arquivos da raiz PROEMP50 e substituir na raiz da base PROEMP00, conforme imagem abaixo:
Obs:- Não copiar as pastas, APENAS OS ARQUIVOS SOLTOS DA RAIS DA PROEMP50.
8- Cole os arquivos copiados da raiz da PROEMP50, sobrepondo os arquivos da raiz da PROEMP00, conforme imagem abaixo. Dessa forma, estamos recuperando os arquivos da base GERAL PROEMP00.
9- Clique sobre a opção Copiar e Substituir todos os arquivos.
Restaurando a Base de Dados Geral do Modulo Fiscal:
1- Copie todos arquivos da raiz da pasta LFS da PROEMP50\LFS e substituir na raiz da pasta LFS da PROEMP00\LFS, conforme imagem abaixo:
Dessa forma, estamos recuperando os arquivos da Base de Dados Geral do Módulo Fiscal;
2- Clique sobre a opção Copiar e Substituir todos os arquivos.
Restaurando a Base de Dados da Empresa 0001 com Todos os Anos de Movimento Fiscal
Neste exemplo, o cliente esta com erro na base de dados apenas no movimento de 2011 da empresa 0001. Neste caso, a transferência de base deve ser realizada da seguinte forma:
Obs. Mesmo que o erro esteja no ano de movimento 2011, é necessário criar uma nova PROEMP50, simular o cadastro da empresa com o código da empresa com erro, neste exemplo empresa 1 PROEMP000001 e com todos os anos de movimento já existente para a empresa 0001 na PROEMP00, exemplo, se a empresa esta com erro no ano de movimento 2011, mas tem outros anos de movimento que não esta com problema, mesmo assim é necessário criar todos os anos de movimento na PROEMP50 da empresa 0001 antes de iniciar a transferência.
1- Cadastre a empresa 1 na PROEMP50.
2- Crie todos os anos de movimentos existentes na PROEMP00 na PROEMP50, neste caso, vamos criar os anos de 2009, 2010, 2011 e 2012.
3- Na opção “Base de Origem” aponte para a PROEMP000001, ou seja, a PROEMP da empresa que esta com o erro.
4- Na opção “Base de Destino”, aponte para a PROEMP500001, ou seja, a PROEMP da empresa que acaba de ser cadastrada e criado os movimentos de 2009 à 2012.
5- Clique no botão “Conectar” e em seguida click em “Iniciar a transferência”.
6- Após a transferência, copiar a pasta da empresa 0001 da PROEMP50\0001 e substituir a pasta 0001 da PROEMP00\0001, conforme imagem abaixo:
7- Clique em substituir a pasta da empresa 0001 na PROEMP00\0001.
8- Após a transferência física da pasta, observe que, no arquivo físico da base de dados PROEMP00 agora transferida é possível identificar que todos arquivos físicos estão com o CABEÇALHO da PROEMP50.
Observe na imagem abaixo:
9- Para corrigir este erro, é necessário executar um checkdatabase para corrigir o caminho lógico no CABEÇALHO de cada arquivo.