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 da tabela acumulado000110.
 
CREATE INDEX "iacumulado0001101ON "acumulado000110"("mesano", "tipo", "fk_sigla_uf");
CREATE INDEX "iacumulado0001102ON "acumulado000110"("mesano", "tipo", "fk_outras");
CREATE INDEX "iacumulado0001103ON "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. 

 

 

 

  • Sem rótulos