Construindo scripts eficientes para administrar bancos de dados Progress

Escrito por Adriano Corrêa em 19 de outubro de 2009, 15:15h

Uma deficiência conhecida a muito tempo no mundo Progress é deficiência de ferramentas para administração de bancos de dados. Nas versões atuais, a ferramenta disponbilizada com a licença de banco de dados é o Progress Explorer Tool, que convenhamos, não pode ser categorizada como User-Friendly.

Uma opção para rotinas de administração, ainda bastante limitada, é o OpenEdge Management, conhecido anteriormente por Fathom Management. O problema dessa ferramenta é o custo que não se aceita pagar por funções que deveriam ser disponibilizadas na licença do próprio banco de dados.

Enfim, desviando da política de preços da Progress, a solução que vemos na grande parte dos clientes de bancos de dados OpenEdge é a utilização de scripts que administram o startup, shutdown, backup, recovery, replicação, segurança, e em alguns casos, até mesmo monitoração do ambiente.

Scripts geralmente são eficientes para fazer todas essas rotinas. Porém eles são construídos sob demanda, e não de forma pensada no ambiente completo e nas possibilidades de manutenção. Isso resulta em rotinas tão complexas, emendadas e não documentadas, que diante da necessidade de uma alteração do ambiente é mais fácil reconstruí-los que manutení-los.

Vamos a alguns exemplos de como construir scripts simples e eficientes

    export DLC=/usr/dlc102a
    $DLC/bin/dbman –all –start

Esse script inicia todos os bancos cadastrados no AdminService. É simples, mas funcional. Todos os parâmetros estão gravados no arquivo conmgr.properties, que segue um padrão para qualquer ambiente com Progress OpenEdge. No mesmo arquivo a Progress já disponibiliza a documentação dos parâmetros que podem ser disponibilizados. Da mesma forma, o comando “dbman –all –stop” para todos os bancos de dados cadastrados no AdminService.

O próprio AdminService também se encarrega de derrubar os bancos de dados nele cadastrados, quando o servidor for desligado por um procedimento normal.

Outra forma eficiente de executar rotinas para todos os bancos de dados do ambiente é usar estruturas de repetição do próprio sistema operacional. Para isso, a recomendação é manter todos os .db no mesmo diretório e balancear a carga de disco nas extensões de dados, before-image e after-image. Vejamos alguns exemplos:

    for %i in (d:\bancos\*.db) do call prostrct list %~ni

Esse código pega todos os arquivos com a extensão .db do diretório d:\bancos e executa o comando que lista a estrutura do banco de dados, atualizando o arquivo .st de cada banco. Além de reduzir a quantidade de linhas de comando, evita que o script tenha que ser manutenido diante da criação de um novo banco de dados.

Da mesma forma o seguinte comando pode ser usado em plataforma Unix.

    for i in *.db
    do
    prostrct list $(basename $i .db)
    done

Então, um script que faça backup offline de alguns bancos de dados em Windows pode ser assim:

    set DLC=c:\dlc102a
    set PATH=%DLC%;%DLC%\bin;%PATH%
    dbman –all –stop
    for %i in (d:\bancos\*.db) do call proutil %~ni –C truncate bi
    for %i in (d:\bancos\*.db) do call probkup %~ni e:\backup\%~ni.bkp > e:\backup\%~ni.log
    dbman –all -start

Evite utilizar recursos desnecessário, como:

  • Vários scripts para fazer uma mesma operação: Se o script é de backup, ele deve conseguir fazer o backup, sem chamar mais nenhum script. Se desejar sempre que parar um banco fazer o backup, então no script de parada de banco, chame o script de backup. A importância de segmentar as rotinas é unicamente não precisar reescrevê-las;
  • Definir mais variáveis de ambiente do que é necessário: O nome do banco estará na variável de ambiente em comandos como o “for”, mostrado acima. Nunca utilize variáveis para o nome do banco, nem para o diretório. Além de complicar o entendimento do script, convenhamos, com que frequência você altera o diretório do .db?
  • Definir os parâmetros de carga em variáveis de ambiente: A definição de parâmetros é por banco. Isso é assim para que cada banco de dados receba a melhor configuração de parâmetros, conforme monitorações de indicadores, e não conforme padrões.

E principalmente, construa algo que qualquer pessoa na sua empresa possa entender no futuro.

Categorias: Ambiente

Tags: , ,

Comentar




biuquote
  • Comentário
  • Pré-visualização
Loading