Home Page Sumário E-Mail 

Introdução

O Banco de Dados OpenBASE foi desenvolvido com o objetivo de ser uma ferramenta rápida e eficiente de se obter informações armazenadas em Bancos de Dados. Existem cinco formas básicas de se obter informações de um banco de dados OpenBASE:

Apresentamos agora os componentes OpenBASE destinados ao acesso, administração, controle e manutenção dos Bancos de Dados, agrupados em:

Os utilitários exercem, de fato, a tarefa de auxiliar o usuário no tratamento das informações contidas nos arquivos de Bancos OpenBASE.

Este capítulo focaliza os utilitários, principalmente, do ponto de vista de plataformas UNIX, cujos nomes são precedidos do prefixo BD (Banco de Dados). Na versão Windows, os nomes dos utilitários OpenBASE são prefixados por WIN (Windows).

Observação:

Os usuários OpenBASE não devem tentar acessar Bancos de Dados por outros meios fora das interfaces oferecidas pelo OpenBASE garantindo assim a sua consistência e integridade.

Existem duas maneiras de acessar cada um dos utilitários OpenBASE, através do menu do programa Openb ou a partir do prompt do sistema operacional.

Segue abaixo a lista de UTILITÁRIOS e suas respectivas funções.

BDADIC    Adiciona registros num arquivo de Banco de Dados.

BDALIB    Organiza biblioteca de módulos objetos.

BDCDBF    Converte arquivo dbf para estrutura de Bancos OpenBASE.

BDCNFG    Muda configuração de Ambiente.

BDDELE    Elimina Banco de Dados.

BDDESC    Descarrega Banco de Dados.

BDESPA    Lista relatório de consumo dos arquivos do Banco de Dados.

BDINDC    Otimizar a Criação de Arquivo de índice.

BDINDV    Cria uma chave virtual e seu arquivo de índice.

BDLICE    Lista tabela de usuários e bloqueios.

BDLIDI     Lista transações do Diário.

BDMENS    Lista mensagem de erro.

BDOTIM    Otimiza arquivos de índice.

BDRECA    Recarrega Banco de Dados.

BDRECU    Recupera um Banco de Dados.

BDREDI    Refaz / desfaz transações em Banco de Dados, a partir do arquivo diário.

BDRMCE    Elimina semáforos.

BDSERV    Servidor do Banco de Dados.

BDSGBD    Gerenciador de bloqueios dos Bancos de Dados.

BDTETE    Lista tabela TERMINFO.

BDVERI    Verifica integridade dos registros de um Banco de Dados.

BDVESQ    Volta esquema de um Banco de Dados.

OPENB        Sistema de menus.

Recuperando Bases de Dados

Este capítulo tem por finalidade orientar o usuário a como proceder em caso de pane no sistema. Tal pane pode ocorrer desde simples falhas no sistema causadas por queda de energia, bugs de software, falhas nos processos do sistema operacional, até problemas mais graves como falha no disco rígido.

A primeira conseqüência de uma pane no sistema, é que todo o trabalho e dados armazenados em memória, são perdidos, a não ser que tais informações tenha sido salvas.

Entretanto, o usuário OpenBase não precisa se alarmar em caso de pane no sistema, já que informaremos neste capítulo como o OpenBase consegue recuperar os dados perdidos e restabelecer a integridade referencial da base de dados.

O OpenBase permite ao seu usuário, a gravação de um log de transação, denominado diário, possibilitando com isso, recuperar todo o trabalho realizado a partir do último backup. Tal log de transação (diário) contém as transações realizadas na base de dados, podendo refazer tais transações, pois grava a imagem posterior do registro.

A seguir explicaremos como funcionam os métodos de recuperação de uma base de dados OpenBase.

Recursos OpenBASE

A seguir, descreveremos um trecho de como um esquema deve ser projetado, para uma possível recuperação da base de dados gerada pelo OpenBase, em caso de pane.

Declaração de um Banco de Dados

BANCO [<percurso>] <nome_bd><codigo_de_seguranca>...

...[{ARQRECUP/DIARIO[=<arq>] [LOGICO]/DIAREC[=<arq>] [LOGICO]/AUTOREC}]...

...[{BLOQARQ/BLOQCHA/BLOQPAG/BLOQREG}]...

Argumentos

BANCO        Marca o início da declaração do Dicionário de Dados.

<percurso>    Percurso onde será criado o Dicionário de Dados. (Default: usr/tsgbd/tsdic)

<nome_bd>    É o nome do Dicionário de Dados: consiste de uma cadeia com até 12 caracteres, com as seguintes restrições:

  • pode conter letras, números, ponto (.) e sublinhado (_).
  • tem que iniciar por letra.
  • não pode ter bancos.
  • deve ser único no diretório.

No MS-DOS <nome_arquivo> não pode ultrapassar 8 caracteres.

<codigo_de_seguranca>. É o código de segurança do Banco de Dados que consiste de um número inteiro entre 1 e 4.294.836.225 (inclusive). Este número é o escolhido pelo projetista do Banco de Dados como uma senha ("password").

ARQRECUP

Determina que seja criado um ou mais arquivos, destinados a armazenar os dados das transações antes deles serem modificados. ( imagem anterior do registro).

Permitindo assim que uma ou mais transações não completadas possam ser desfeitas a qualquer momento (rollback/undo).

DIÁRIO

Determina que seja utilizado o arquivo DIÁRIO (criando pelo programa BDSGBD) para armazenar todos os dados das transações depois deles serem modificados (imagem posterior do registro). Permitindo assim que uma ou mais transações completadas possam ser refeitas, a qualquer momento, a partir de uma determinada data/hora ou a partir de uma determinada transação identificada pelo seu número. É necessário que a base de dados na qual tais transações serão refeitas, seja a mesma base de dados existente antes da geração do arquivo diário. Por isso, antes de "baixar" o diário, restabeleça via backup, tal base de dados.

Caso o usuário deseje, o arquivo DIÁRIO, poderá ser criado por banco. Para isto, basta que no esquema do banco de dados conforme exemplificado acima, na cláusula DIARIO=<arq> seja informado o nome do arquivo diário em <arq>.

Novas opções foram adicionadas ao utilitário BDSGBD para maximizar a utilização do arquivo diário. O usuário pode, a partir de agora, especificar o tamanho para o arquivo diário e o device onde serão exibidas mensagens de alerta sobre a gravação deste arquivo. Além destas adições, é possível a partir de agora, a gravação de pontos de sincronismos, forçando a atualização das informações em disco.

Com a cláusula LOGICO, são gravados no arquivo diário, os registros lógicos, isto é, somente a área de dados, sem o cabeçalho com os endereços dos registros anterior e seguinte, o que diminui significativamente o tamanho do arquivo diário.

Sintaxe

bdsgbd [-d –1<numero1> [-a<arquivo>] –t<device> [-e]]

Argumentos

-d            determina a criação e utilização de jornalização (arquivo diário).

-l<numero1>        define o tamanho em bytes do arquivo diário. <numero1> deve ser um valor inteiro.

-a <arquivo>         determina, quando utilizada a opção –d, o nome do arquivo diário. Caso se omita, o arquivo default é /usr/tsgbd/tsdic/diário. Caso se especifique Diario=<arq> no esquema do banco de dados, não é preciso utilizar esta opção (apenas no Unix).

-t<device>         define o terminal onde serão exibidas as mensagens sobre a gravação do diário.

-e            determina que na execução deste utilitário o arquivo diário deve ser esvaziando.

Quando o arquivo diário exceder o tamanho definido por <numero1>, o arquivo corrente é fechado e outro é aberto, possibilitando que sejam feitas cópias de segurança a cada troca de arquivo.

Após a troca de arquivo a seguinte mensagem será enviada para o terminal indicado em <device>: "Gravando diário em <nome>", onde <nome> é o nome do diário atual.

O nome do arquivo diário é acrescido de um dígito numérico, iniciando em 1 (um), e a cada troca de arquivo este dígito é incrementado de uma unidade. São possíveis até 9 (nove) arquivos diários.

Para que o usuário desfrute plenamente do recurso da jornalização, deve haver uma rotina de backup do banco de dados e dos arquivos diários.

O comando "sync" grava efetivamente no disco as páginas alteradas no buffer pool (páginas armazenas em memória evitando o acesso sucessivo a disco). Deste modo estas informações não são perdidas em eventuais variações na tensão elétrica, isto acarreta em uma diminuição da performance, pois todos o buffers do sistema são atualizados.

DIAREC

Determina que seja utilizado o arquivo DIÁRIO (criando pelo programa BDSGBD) para armazenar todos os dados das transações antes deles serem modificados e depois deles serem modificados. (guarda a imagem anterior e posterior do registro).

Permite assim que uma ou mais transações completadas possam ser desfeitas ou refeitas, a qualquer momento, a partir de uma determinada data/hora ou a partir de uma determinada transação identificada pelo seu número.

Com a cláusula LOGICO, são gravados no arquivo diário, os registros lógicos, isto é, somente a área de dados, sem o cabeçalho com os endereços dos registros anterior e seguinte, o que diminui significativamente o tamanho do arquivo diário.

Nota: Esta opção implica na utilização automática da opção ARQRECUP.

AUTOREC

AUTOREC, se o arquivo de recuperação contiver uma transação não completada, a recuperação será feita automaticamente sem solicitar a execução do utilitário bdrecu, desde que não exista nenhum outro processo ativo utilizando o banco e que o bloqueio seja do tipo banco.

BDLIDI

Para facilitar sua utilização foram adicionadas duas novas opções, uma para listar todas as transações de todos os bancos de dados e outra para listar apenas os pontos de sincronismo de um banco de dados.

Sintaxe

bdlidi [-S] –b <banco> -s<seg> -n<nivel> {-d<data-hora> l –t<numero>} [-a<diario>]

Argumentos

-S        Lista todas as transações de todos os bancos de dados.

<banco>        nome do Banco de Dados

<seg>        código de segurança do banco, especificado no esquema. Se omitido será assumido o valor 1

<nivel>        palavra de nível do usuário especificado no esquema. Se omitido, será considerado o valor "a"

-d<data_hora>    determina a data e a hora início da listagem. Data e hora devem estar no formato aa/mm/dd-hh:mm:ss.

-a<diario>    nome do arquivo diário quando diferente do DEFAULT.

-t<numero>    número da transação para início da listagem.

Permite verificar as transações do diário a partir de determinada data-hora ou a partir de uma determinada transação. Quando se utiliza a opção "-1" no utilitário BDSGBD, para dividir o arquivo diário, deve-se informar o nome do diário que se quer listar informações, caso contrário será listado o diário atual.

BDREDI

Refazer ou desfazer transações a partir do arquivo diário.

Novas opções foram adicionadas ao utilitário BDREDI otimizando a recuperação de um banco de dados. Com essas adições pode-se recuperar somente um determinado arquivo, utilizar os pontos de sincronismo além de ser possível a geração de um script shell com as chamadas ao utilitário BDVERI.

Sintaxe

bdredi –b<banco> -s<seg> -n<nivel> [-r] [-a<diario>] [-f<arquivo>] {-d<data-hora>I t<numero1>}[-e][-O]

Argumentos

-b <banco>    indica o nome do Banco de Dados

<banco>        nome do Banco de Dados

<seg>    código de segurança do banco, especificado no esquema. Se omitido, será considerado o valor "a".

<nivel>    palavra de nível do usuário especificado no esquema. Se omitido, será considerado o valor "a".

-r        indica que as transações serão desfeitas.

-a<diario>    nome do arquivo diário quando diferente do DEFAULT.

-f <arquivo>    determina que só serão recuperados os registros do arquivo <arquivo> e seus índices. Esta opção deve ser usada com extremo cuidado, pois pode comprometer a integridade do banco de dados.

-d<data-hora>    determina a data e a hora para início ou fim da recuperação. Data e hora devem estar no formato aa/mm/dd-hh:mm:ss

-t <numero1>    Indica o número da transação para iniciar ou terminar a recuperação.

-e        determina a criação do arquivo "bdveri.l" contendo as chamadas ao utilitário BDVERI para os registros indicados pelo arquivo diário.

-O        não abre arquivo.

Este recurso e muito útil para recuperar banco de dados a partir de uma data ou transação.

A opção "-r" determina que as transações serão desfeitas e só pode ser utilizada para bancos de dados que tenham a opção DIAREC. O utilitário BDREDI ao executar, lê seqüencialmente o arquivo diário pesquisando a data/transação inicial para o banco de dados, prossegue até o fim do arquivo diário para que todas as transações sejam refeitas. Caso a opção "-r" (desfazer), seja especificada a leitura do arquivo diário será de trás para frente, até que a data/transação seja encontrada. Neste caso, cada transação encontrada para o banco de dados especificado, será refeita.

Se a data/transação não for especificada, a recuperação será feita a partir da data 00/00/00- 00:00:00, logo a partir da primeira transação.

Caso seja especificada a opção –e, o arquivo "bdveri.1" é criado a partir dos registros lidos pelo utilitário BDREDI no arquivo diário. Ao executar tal arquivo (sh bdveri.1) os registros com problemas são corrigidos a partir de chamadas ao utilitário BDINDC, que irá reconstruir somente as chaves com problema.

A seguir, segue um roteiro de como o usuário deve proceder em caso de problemas na abertura do banco de dados. ( Devem ser utilizados os seguintes utilitários).

BDRECU

Recuperar e desbloquear um banco de dados.

Sintaxe

bdrecu –b<banco> [-s<segurança>] [-n<nivel>] [-c] [ -d<num>] [-O]

Argumentos

-b<banco>        indica o nome do Banco de Dados.

-s<segurança>        informa o código de segurança definido no esquema do banco de dados. Se omitido, será considerado o valor 1.

-n<nível>        indica a palavra de nível do usuário. Se omitido, será assumido o valor "a" (DEFAULT).

-c            não pergunta "Inicializa banco (s ou n) ?"

-d<num>        indica o diferenciador de banco ( último algarismo na tabela de bloqueio).

-O         indica que os arquivos não serão verificados na abertura do banco de dados.

O utilitário BDRECU recupera e desbloqueia um Banco de Dados OpenBase e, para Banco de Dados que possuam arquivo de recuperação, desfaz a última transação pendente no arquivo de recuperação.

Ao executar, exibe para o Banco de Dados, o último modo de abertura e o número de vezes que o banco foi aberto sem ter sido corretamente fechado.

Deve-se executar este utilitário sempre que um processo, que utilize banco de dados OpenBase, seja interrompido de forma anormal, principalmente no uso de bloqueio de dados, onde para cada atualização é gravado um registro no arquivo de recuperação, de forma que, após a sua execução, o banco de dados volte ao estado normal. No caso de bloqueio central, é criado um arquivo de recuperação para cada processo que efetuar um pedido de bloqueio.

Neste caso, o BDRECU verifica se para cada arquivo de recuperação do banco de dados o processo correspondente está inativo, recuperando somente as transações de processos inativos.

NOTA: O utilitário BDRECU pode ser utilizado a qualquer momento, exceto para bancos de dados que utilizem bloqueio de banco. Neste caso, nenhum usuário deve estar utilizando o banco de dados, para que a tabela de bloqueios seja inicializada e o arquivo de recuperação do banco de dados seja esvaziado.

BDINDC

Otimizar a criação de arquivo de índices.

Sintaxe

bdindc –b <banco> [-s <segurança> [-n <nível>] [-a <arq_ban> [-S]

  [-i {<nome>|<número1>}] [-c] [-v <valor> | -r [ -m <numero>]] [-O | -o]

Argumentos

-b <banco>

indica nome do Banco de Dados.

-s <segurança>

informa o código de segurança do Banco de Dados. Se omitido, será considerado o valor 1.

-n <nível>

indica a palavra de nível do usuário. Se omitido, será assumido o valor "a" (DEFAULT).

-a <arq_ban>

indica o nome do arquivo a ser verificado. Se omitido são verificados todos os arquivos do banco.

-i <nome>|<numero1>

informa o arquivo de índice que será verificado. Ignora a opção "-S".

-v <valor>

informa o valor da chave que será recriada. Esta opção só é válida em conjunto da opção "-i" que informa o índice a ser criado.

-c

exclui os registros em duplicata nos índices de chave única sem necessidade de confirmação.

-r

determina que será utilizado um algoritmo otimizado para inclusão dos registros no arquivo do banco de dados.

-S

determina a criação de todos os índices do arquivo de dados informado.

[-O |o]

não abre arquivos.

-l

a opção –l indica que o banco será aberto em modo 2 (compartilhado) no lugar de modo 3 (exclusivo), assim permitindo que o bdindc seja executado mesmo que o Banco esteja em uso por outro processo.

-m<num>

determina o número do registro que será verificado.

Novas opções foram implementadas ao utilitário BDINDC para otimizar a criação de arquivos de índices, permitindo a reconstrução das chaves de um índice que tenham um determinado valor. Deste modo BDINDC percorrerá toda a cadeia deste valor refazendo apenas estes registros, este utilitário pode ser usado após a verificação do banco de dados pelo utilitário BDVERI que retorna as chaves e valores com erro.

Exemplo

O exemplo a seguir mostra a saída deste utilitário.

BDINDC -b exemplo -s1 -n niv15 -a pessoa -i "NOME.P"

Quando se utiliza a opção "-v <valor>" o arquivo de índice é mantido e somente a cadeia de <valor> é atualizada, por este motivo não teria sentido utilizar esta opção com a opção "-r".

BDVERI

Verificar as ligações entre os registros dos arquivos de um banco de dados.

Sintaxe

bdredi -b<banco> [-s <segurança>] [-n <nivel>] [-a<arq_ban>][-O][-e][-z]

[-r<num1>l –v<valor][-i{<nome>l<num2>}l-f ][-c][-1]

Argumentos

-b <banco>

Indica o nome do Banco de Dados.

-r <num1>

Determina o número do registro que será verificado.

-a <arq_ban>

Indica o nome do arquivo a ser verificado. Se omitido, são verificados todos os arquivos do banco.

-z

Esvazia o arquivo "bdindc.1" antes de criá-lo. Só utilizada com a opção "-e".

-f

Determina que a verificação se dará de trás para frente. Caso o problema no banco tenha ocorrido durante uma inclusão, esta opção agiliza o processo de verificação.

-1

Indica que o banco será aberto em modo 2 (compartilhado), permitindo com isso que o utilitário seja executado, mesmo que o banco esteja sendo utilizado por outro processo.

-e

Determina a criação do arquivo "bdveri.1"

-O

Indica que os arquivos não serão verificados na abertura do banco de dados.

-n<nivel>

É a palavra de nível do usuário, especificado no esquema. Se omitido, será considerado o valor "a" (DEFAULT).

-s<segurança>

É o código de segurança do banco, especificado no esquema. Se omitido, será assumido o valor 1.

-c

não determina a interrupção da execução do utilitário na ocorrência de erro.

-v<valor>

Informa o valor da chave que será verificada. Esta opção implica na utilização da opção "-i".

-i<nome>l<num2>

Informa o arquivo de índice que será verificado. Ignora a opção "-f ".

O utilitário BDVERI verifica um Banco de Dados quanto à correção das ligações entre registros de seus arquivos. Ao executar, lê os registros de cada arquivo verificando os endereços no cabeçalho do registro e seus índices, emitindo mensagens, se encontrar algum erro.

A opção "-r" é útil para diminuir a quantidade de registros verificados, já que geralmente os problemas ocorrem nos últimos registros dos arquivos.

Visando melhorar a recuperação e verificação de um banco de dados OpenBase e otimizar o algoritmo de verificação foram adicionadas novas opções ao utilitário BDVERI, para que na ocorrência de problemas em um banco de dados a recuperação seja mais rápida e eficiente. Com estas modificações BDVERI não verifica o banco de dados informando apenas os arquivos com problema, e sim arquivos, registros, valores das chaves e grava um arquivo chamado "bdindc.1" que contém chamadas ao utilitário BDINDC para que este reconstrua somente as chaves com problema, diminuindo a necessidade de descarregar e recarregar o arquivo com problema.

P.S.: Caso o usuário prefira, poderá utilizar os utilitários BDDESC para descarregar todo o banco (ou um determinado arquivo) e BDRECA para carregar todo o banco ou BDADIC para carregar um único arquivo. Tais utilitários para correção de integridade e consistência de dados são utilizados para banco de dados com arquivos com muitos registros, pode ser um processo demorado. A descrição e sintaxe de tais utilitários podem ser obtidas no manual de utilitários da Tecnocoop Sistemas.

BDOTIM

Otimizar arquivos de índice ou arquivos de dados. Retira os espaços em branco deixados pelos registros deletados, diminuindo o tamanho dos arquivos de dados. Otimiza os índices

dos arquivos.

Sintaxe

bdotim -b<banco> [-s<seguranca] [-n<nivel>] [-O] [-a<arquivo>] [-d]  [-p] [-t]

Argumentos

-b <banco>

indica o nome do Banco de Dados.

-s <segurança>

indica o código de segurança definido no esquema do Banco de dados. Se omitido, será assumido o valor 1.

-n <nível>

indica a palavra de nível do usuário. Se omitido, é assumido o valor "a" (DEFAULT).

-O

indica que os arquivos não serão verificados na abertura do banco de dados.

-a <arquivo>

indica o nome do arquivo cujos índices serão otimizados. Se omitido, todos os arquivos terão seus índices otimizados.

-d

indica que os arquivos com extensão .V devem ser deletados.

-p

reorganiza o arquivo de dados retirando os registros "deletados".

-t

indica que o arquivo de dados está ordenado pela chave primária.

Para otimizar arquivos de índice quando estes estiverem ocupando um espaço muito grande, ou a performance do banco de dados não estiver em bom nível.

Este utilitário, ao otimizar os arquivos de índices, cria uma cópia do arquivo original com a extensão ".V" no diretório do banco de dados.

Mesmo que não se especifique o arquivo do qual se deseja otimizar os índices, o BDOTIM só otimizara aqueles que forem necessários.

Objetivando dinamizar o processo de eliminação de espaços deixados pelos registros deletados em arquivos de dado, foi desenvolvida a opção "-p" para o utilitário BDOTIM. Com esta opção, ao executar este utilitário além de otimizar os arquivos de índice de um banco de dados também se reorganizam os arquivos de dados retirando os registros "deletados", desta forma o antigo e oneroso processo de descarregar, definir e recarregar o arquivo é desnecessário.

Tratamento de Erros no Openbase

Segue abaixo a relação de erros que podem ocorrer, ao se acessar uma base de dados OpenBase. A descrição destes erros pode ser obtida pelo comando:

bdmens <n0 do erro>, onde n0 do erro é o erro em relação ao qual se deseja informação.

Estes números podem ser:

Erro 1 "DICIONÁRIO <banco> NÃO ACESSÁVEL"

Ocorre na tentativa de abertura de um banco de dados, quando este não existir ou estiver protegido.

Neste caso, consulte o DBA ou verifique:

Se o nome do banco que se deseja abrir está correto.

  • Se as permissões de todo o percurso estão disponíveis.

Erro 2 "DICIONÁRIO <banco> INVÁLIDO"

Ocorre na tentativa de abertura de um banco de dados quando este não for um arquivo no formato do dicionário de dados.

Neste caso, verifique se nome do banco que se deseja abrir está correto.

Erro 815 "Erro na abertura do arquivo"

Se puder perder os dados já contidos no arquivo, simplesmente passe um define no esquema, recriando apenas aquele arquivo. Se os dados já existentes não puderem ser perdidos, utilize BDDESC no arquivo, e redefina o esquema, recriando apenas este arquivo. Depois utilize BDADIC para recuperar os dados do arquivo. Caso a sugestão acima não resolva, o problema pode estar no tamanho do arquivo que está muito grande ou no número de arquivos abertos ter ultrapassado o limite do sistema operacional . Neste caso ocorrerá o erro 1035, erro de leitura no arquivo. Recomenda-se alterar os parâmetros em maxfiles,nfile (hpux) ou o tamanho máximo de arquivos no arquivo /etc/security/limits (aix)

Erro 1012 "Não pode abrir arquivo"

Este erro ocorre quando algum arquivo de dados ou de índice não foi encontrado. Tais arquivos podem estar protegidos, ou a posição dos números seqüenciais dos nomes arquivos de índices, já existentes, está incorreta. Neste último caso, execute o utilitário bdcnfg e acerte a posição(inicio ou fim) do número do índice nos arquivos de índice e compile(define) o esquema do banco de dados, para que o dicionário de dados seja recriado.

Erro 1035/1036 "LEITURA E GRAVAÇÃO DO ARQUIVO <arquivo>".

Este erro, identificado pelo número 1035 (leitura) ou 1036 (gravação) é um erro indireto do OPENBASE, causado por algum problema físico no disco ou alguma configuração do sistema operacional estar subdimensionada.

O arquivo pode estar danificado ou este arquivo pode estar com o tamanho muito grande.

No primeiro caso, recomenda-se utilizar o fsck do unix, ou scandisk do windows que corrigirá a possível área do disco danificada

No caso de o arquivo em questão estar com o tamanho muito grande, recomenda-se alterar os parâmetros em maxfiles,nfile (hpux) ou o tamanho máximo de arquivos no arquivo /etc/security/limits (aix) /etc/limits.conf(linux).

Uma terceira causa deste erro, é o numero máximo de arquivos abertos simultaneamente, do sistema operacional Ter estourado. Neste caso, deve-se

Rever os parâmetros de configuração do sistema operacional ou utilizar a opção $file.

Erro 813 <arquivo <nome do arquivo> inválido tamanho no registro<num> no dicionário(num1).

Este erro ocorre, quando algum item de algum arquivo no esquema do banco de dados é alterado de tamanho ou tipo ou a este item é atribuída a qualidade de chave; o esquema do banco é compilado(define), o dicionário de dados é regerado, mas o arquivo de dados que teve o item alterado, não foi recriado. Com isso, o dicionário de dados contém um determinado tamanho de registro diferente do tamanho do registro no arquivo de dados, já que como o arquivo não foi recriado, ele não alterou o tamanho do registro. Para corrigir este erro, antes de compilar o esquema(define), descarregue o arquivo que foi modificado(bddesc), recrie tal arquivo após compilar o esquema do banco (define) e por fim, recarregue o arquivo(bdadic).

Segurança de Bases de Dados Openbase

Esquema Criptografado

Propósito

Compilar um esquema criptografado, evitando que o esquema de um banco de dados OpenBASE possa ser visualizado pelo usuário, proporcionando maior segurança e restrições de acesso ao banco de dados.

Sintaxe

define –x <chave> <nome do esquema criptografado>

-x <chave>    Chave é senha utilizada na criptografia do esquema.

Utilização

Visando melhorar o controle de acesso a um esquema de um banco de dados OpenBASE, foi feita uma opção de compilação de um esquema criptografado, gerado a partir da função ENCRYPT da Opus, conforme exemplo abaixo.

Exemplos

O exemplo a seguir, é um programa em Opus, que faz a criptografia de um esquema.

Este programa recebe como parâmetros, o esquema do banco sem ser criptografado, o esquema do banco a ser criptografado e uma senha de criptografia.

prog criptografia
parameters esqnor, esqcri, chave
private dynamic var1
private dynamic var2
x = memoread (esqnor, var1)    && Carrega na variável var1 conteúdo de esqnor
l = len (var1)  
* o tamanho da cadeia a ser criptografada deve ser múltiplo de oito
do while l %8 < > 0
  var1 = var1 + "  "
  ++l
enddo
* função que criptografa a cadeia var1, utilizando x.
* A senha chave, e atribuindo o resultado à variável var2.
var2= encrypt (var1,chave,1)
x= memowrit (esqcri, var2)    && grava no esquema criptografado esqcri, o 
* conteúdo de var2 já criptografado pela função encrypt

Após compilar o programa acima, deve-se executar os comandos criptografia esqnor esqcri, abc.

define x abc esqcri    Compila um esquema criptografado (esqcri)

criptografa        Programa executável que faz a criptografia.

esqmor            Nome do esquema normal, sem ser criptografado.

esqcri            Nome do esquema a ser criptografado.

abc            Senha a ser utilizada na criptografia.

Espelhamento do Banco de Dados OpenBase.

Propósito

Permite que uma cópia do banco de dados seja automaticamente gerada em outro diretório, funcionando como backup dos arquivos de dados.

Sintaxe

banco [<percurso>] <nome_banco> <codigo_de_segurança> espelho = <path>

Argumentos

path – Diretório ou percurso, onde os arquivos de dados do banco serão copiados.

Utilização

A opção espelho é útil, quando se deseja obter uma cópia on-line dos arquivos de dados de um BANCO OPENBASE, à medida que estes vão sendo atualizados. Os arquivos entidades (tipo E), são espelhados como arquivos do tipo F, enquanto que arquivos Relacionamento (tipo R), são espelhados como arquivos do tipo S. Os arquivos espelhados não podem ser acessados para gravação, apenas consulta.

Antes de se inicializar o processo de espelhamento, é necessário que os arquivos originais, sejam copiados para o percurso (path), onde será feito o espelhamento para que os arquivos fiquem atualizados e compatíveis.

Exemplos

banco /usr/alm/dic/BDALM  12 espelho = /usr1/alm/dic.

Replicação assíncrona (Backup Incremental)

Propósito

Permitir que um Banco de Dados OpenBase seja espelhado (copiado) para uma outra máquina, funcionando como um backup incremental.

Sintaxe

No esquema, deve-se definir o arquivo, segundo a Sintaxe

nome: arquivo E replicação

Utilização

Ao se definir um esquema com a cláusula REPLICAÇÃO ao lado do nome do arquivo, serão criados automaticamente três novos itens no arquivo:

ITEM        TIPO

DAT        T8

DEL        L1

CHA (0)    D7  Pos (DAT+1)

É criado também um arquivo <dicionário>. S que guarda a data e hora da última replicação de cada arquivo replicado.

O item DAT armazena a data e hora que o registro foi incluído, alterado ou excluído.

O item DEL armazena o valor 1, quando o registro for excluído (exclusão lógica)

Quando um registro é incluído ou alterado, o item DEL recebe o valor 0.

Os registros com DEL=1 não são lidos ou excluídos, a menos que a opção DELETED (SET DELETED ON) esteja ligada.

Caso seja incluído um registro com o mesmo valor de chave do registro deletado logicamente (DEL=1), o item DEL é alterado de 1 para 0.

Daí a necessidade de os arquivos replicáveis serem do tipo entidades (chave primária) ou do tipo relacionamento com pelo menos um item chave única.

Funcionamento

No servidor (máquina para onde serão replicados os dados) ocorre: nohup bdsrep & - Inicialização do servidor de replicação

São recebidos o nome do banco e o arquivo a replicar.

servidor de replicação (bdsrep), lê a chave primária de cada registro recebido e:

se não existir e DEL = 0, inclui

se existir e DEL=1,exclui

se existir e DEL=0, altera

No cliente (máquina de onde vem os dados replicados) deve-se executar o comando:

bdcrep –h<host servidor> -b [percurso bd origem] <banco bd origem> -r [percurso bd destino] <banco bd destino> [-s<seg>] [-n<nivel>]

arquivo bdsrep é inicializado na máquina do servidor. (é carregado automaticamente)

É enviado o nome do banco no servidor e o arquivo replicar.

Serão pesquisado no banco cliente, todos os registros que possuam o item CHA>=data_hora da última replicação (contida no arquivo <dicionario.S>) e CHA<=data_hora do sistema operacional. Tais registros são enviados para o servidor.

Todos os registros enviados e que possuam DEL=1 serão excluídos fisicamente no cliente.

arquivo bdsrep na máquina do servidor é finalizado. (sai do ar)

Obs: Para o bom funcionamento da replicação assíncrona, os dois bancos devem ser iguais, tanto no cliente quanto no servidor.

Home Page Sumário E-Mail