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.