Parametrizando banco de dados Progress para conexões ODBC/JDBC

Escrito por Adriano Corrêa em 13 de janeiro de 2009, 14:07h

Até a versão 9.1D08, conexões ODBC ou JDBC ao banco de dados Progress eram sofríveis. A partir dessa versão, o Progress começou a disponibilizar recursos que permitem melhores configurações de acesso.

Na verdade, uma carga simples de banco (proserve banco -S 12345) já permitirá acesso tanto a conexões ABL (Progress nativo) quando conexões SQL (ODBC/JDBC). Porém existem algumas "melhores práticas" a serem seguidas para melhorar essa configuração.

A primeira configuração a ser feita é separar as conexões de banco em dois brokers de login.

A carga de um segundo broker consiste em uma nova inicialização do banco de dados, para uma nova porta de comunicação (parâmetro -S), utilizando o parâmetro -m3 (por exemplo: proserve banco -m3 -S 12346). Essa técnica evita uma série de bugs no acesso SQL, além de ser a melhor forma para determinar quantos usuários farão acesso ABL e quantos farão acesso SQL.

Até o Progress 9.1C, um banco com dois ou mais brokers de login demandava que apenas o primeiro broker fosse de conexões SQL e os demais ABL (na época a conexão ainda era chamada de 4GL). A partir da versão 9.1D essa ordem não existe mais. Porém isso deixou uma herança bastante comum de se encontrar em ambientes com esse tipo de conexão: os parâmetros de desempenho do banco estão especificados no segundo broker de login, que receberá conexões ABL.

Isso é um erro de configuração. Parâmetros para inicialização de banco de dados Progress se dividem em dois grupos: parâmetros de banco e parâmetros de broker. Nos manuais antigos do Progress era possível identificar para cada parâmetro, quais eram de banco e quais eram de broker. Os manuais atuais não trazem mais essa especificação, porém a regra continua valendo.

Todos os parâmetros de desempenho de banco (por exemplo, -B, -L, -bibufs, -aibufs, -spin, -Mn, etc...) devem ser especificados apenas na primeira carga do banco. Os parâmetros de banco que estiverem especificados na segunda carga causará resultados inesperados.

Os parâmetros de broker (-Mpb, -Ma, -Mi, -minport, -maxport, -Mm) deverão ser especificados em todas as cargas. Esses parâmetros determinam quantos usuários poderão conectar em cada broker de login. O parâmetro -m3 deverá ser especificado apenas a partir da segunda carga.

Além do local correto para especificação dos parâmetros, existem algumas regras para definição de seus valores.

  • -n é o número de conexões que podem ser feitas no banco de dados. Devem ser considerados para esse parâmetro, o número de licenças contratadas para acesso ABL, mais o número de licenças contratadas para acesso SQL, mais o número de writers em segundo plano (APW, BIW, AIW, WDOG). Esse é um parâmetro de banco.
  • -Mn é o número de servers que receberão logins. Deve ser considerado o número de servers do primeiro broker (-Mpb), mais o número de servers do segundo broker (-Mpb), mais a quantidade de brokers de login adicionais do banco. Esse também é um parâmetro de banco.
  • -Ma é a quantidade de usuários por server. Quanto maior a quantidade de usuários por server, menor a quantidade de servers necessários. Esse é um parâmetro de broker.
  • -Mpb tem a mesma função do parâmetro -Mn, porém seu valor é um limitador do broker. O "espaço" para conexões de usuários em servers deve ser maior que o número de usuários definido no parâmetro -n. A fórmula é a seguinte: [(-Mpb broker1 X -Ma broker1) + (-Mpb broker2 X -Ma broker2) + (-Mpb brokern X -Ma brokern)] >= -n.

Um erro na definição desses parâmetros provavelmente resultará na proibição de acesso a alguns usuários. Por isso, facilite a vida simplificando os scripts de carga. Não defina parâmetros em variáveis de ambiente para reutilizarem o valor. Não generalize os parâmetros para vários bancos. São regras que facilitam a administração e evitam problemas nos momentos de maior utilização.

 

Categorias: Banco de dados | Conectividade | Progress

Tags: , , ,

Comentários (20) -

em 29 de janeiro de 2009, 14:49h

Uma ótima dica, por acaso vc pode me enviar uns pfs de exemplo.

Luciano

em 29 de janeiro de 2009, 16:09h

É importante sempre analisar o ambiente para determinar a melhor parametrização. Estou exemplificando abaixo uma carga de um banco sports para 20 acessos 4GL e 5 acessos SQL. Porém esse exemplo deverá ser usado apenas como referência para adequar ao seu ambiente:

call proserve c:\banco\sports -B 500 -L 1000 -n 25 -Mn 6 -Mpb 4 -Ma 5 -S 23456 -ServerType 4GL

call proserve c:\banco\sports -m3 -Mpb 1 -Ma 5 -S 23457 -ServerType SQL

Adriano.

Adriano

em 12 de fevereiro de 2009, 20:09h

Caro Adriano, segue aqui minha sugestão de um novo POST.

Gostaria de ler mais sobre parametrização de BROKER 4GL, com as principais regras para dimencionar o recurso de HARDWARE X BANCO.

Parabéns pelo trabalho que vocês estão fazendo neste BLOG.

Vlademir Gois

em 13 de fevereiro de 2009, 08:27h

Vlademir, em setembro de 2008 publiquei uma série de artigos sobre performance de ambiente. Especificamente o sexto artigo ( ingleses.datasul.com.br/.../...nca-(parte-VI).aspx ) discute recursos de hardware.

Caso as informações desse post sejam insuficientes, por favor comente suas dúvidas para podermos direcionar melhor o artigo.

Obrigado.

Adriano.

adriano

em 28 de fevereiro de 2009, 16:47h

Voce pode me dizer e explicar se posso fazer conexão com o Banco Progress atraves do PHP?!

Diego

em 3 de março de 2009, 09:10h

Diego, eu não conheço de programação em PHP, porém acredito que o PHP pode acessar qualquer banco de dados dentro do padrão JDBC. Se isso for verdade, é possível sim.

A seguir exemplifiquei uma conexão via JDBC através de URL. Esse exemplo conecta um banco sports servido localmente na porta 50000 em Progress 10.1C.

jdbc:datadirect:openedge://localhost:50000;databasename=sports

Essa URL muda de versão para versão do Progress. Para saber exatamente o que usar em cada conexão, execute o comando "sqlexp -help". Para testar se a conexão está correta, utilize o comando "sqlexp -url ", informando a URL de acesso ao banco.

Adriano.

adriano

em 3 de julho de 2009, 21:44h

Olá Pessoal,

Estou tendo alguns problemas com conexão do Progress com o Oracle10G, minha versão do progress é 10.1B e do ORacle é 10G R2 10.2.0.4. Quando estou utilizando o EMS5, as vezes o sistema fecha e apresenta erro de Progress, alisando os logs verificamos que acontece algum problema no momento de fazer a comunicação com o Oracle, alguém sabe como otimizar esse ambiente Progress com ORacle ?

ABraços,

MAuricio CErri

Mauricio Cerri

em 7 de julho de 2009, 16:27h

Maurício

Problemas com erros no ambiente devem ser encaminhados diretamente para o canal de suporte. Recomendo utilizar o Live Support, disponível nesse blog, onde é possível enviar os arquivos de log e as imagens com erro diretamente para o analista que lhe atender.

Adriano.

adriano

em 11 de agosto de 2009, 15:00h

Olá Pessoal,

Tenho uma fonte de dados ODBC (Progress) configurada na minha estação e funcionando. Quando tento acessar essa fonte através do MS Access apresenta uma mensagem: "erro (-7748) reservado, não há mensagem para esse erro." Estamos com a versão do Progres OpenEdge 10.1A. Com a versão anterior Progress 9.1D08 funcionava perfeitamente.

Alguma dica do que pode ser?

Obrigada
Cláudia

Cláudia Fernandes

em 11 de agosto de 2009, 16:20h

Cláudia

Erros durante a configuração do ODBC devem ser encaminhadas diretamente para o canal do suporte. Recomendo enviar um print do erro e a versão dos drivers utilizados.

Adriano.

adriano

em 25 de agosto de 2010, 07:55h

Na empresa em que trabalho, temos um sistema com o banco de dados progress 9.1.E.
Estou tentando conectar o crystal 8.5 nesse banco para desenvolver alguns relatórios.
O problema é que nenhuma driver ODBC dá certo.
Por gentileza, alguem ja passou por esse problema?

Gustavo

em 25 de agosto de 2010, 08:17h

Gustavo, o driver que vem com a instalação do Progress deveria funcionar.

Tente conectar o banco a partir de um Excel, por exemplo, para isolar se o problema é no banco ou no Crystal.

Adriano.

adriano

em 13 de outubro de 2010, 07:47h

Boas, Estou tentando conectar a minha base de dados OpenEdge 10.1 com o Excel mas não sei como o poderei fazer. Pode-me dar umas luzes?

Mário Melo

Mário Melo

em 13 de outubro de 2010, 10:28h

Mário, o ideal e conectar o banco Progress através de ODBC que o Excel também suporta.

Existe a possibilidade de conectar ao Excel como uma fonte de dados e usar Dataserver ODBC para transmitir os dados, mas acho que é muito empenho. Conectar ao banco Progress pelo Excel é mais simples e funciona.

Adriano.

adriano

em 25 de outubro de 2010, 11:26h

É possível usar um driver ODBC de uma versão mais nova para se conectar a uma versão mais antiga?
Por exemplo driver ODBC Progress 10.1C para se conectar em um Progress 10.1A

Leandro

em 25 de outubro de 2010, 14:17h

O ideal é conectar com o driver da mesma versão do banco. Pode até ser que o driver de uma versão superior funcione, mas nunca foi testado e mesmo funcionado pode gerar resultados inesperados.

Adriano.

adriano

em 23 de novembro de 2010, 14:28h

Ola pessoal,
Não vão acreditar, mas temso um servidor Digital Unnix com progress 8.2c e agora querem fazer uma conexão odbc com esse progress. É possivel?, Como Faço?

José F. mar

em 23 de novembro de 2010, 16:08h

José, até é possível, porém tem que utilizar o Open Interface Driver e o Open Interface Broker, pelo padrão SQL-89. Já adianto que é lento e instável.

Recomendo verificar o kbase P11847 da Progress.

Adriano.

adriano

em 19 de janeiro de 2011, 15:40h

Oi, sera q vc pode me ajudar?
Tem alguma query que desconecte o usuario do DAtaSul?

Elane Machado Almeida

em 20 de janeiro de 2011, 08:27h

A desconexão de usuários do banco é feito pelo promon ou proshut, não está relacionado ao tipo de conexão.

Adriano.

adriano

Comentar




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


Acesso LogMeIn

Informe o código PIN: