Dataserver Oracle

Discussão em 'Banco de Dados / Database' iniciado por adautosb, Junho 12, 2012.

  1. adautosb

    adautosb Sem Pontuação

    Iremos implantar o DataServer para Oracle na empresa onde trabalho e serei o responsável por este projeto.

    Estou pensando em duas frentes de trabalho com os respectivos roteiros:

    - Area de infraestrura e DBA
    * instalacao ambiente de homologacao
    * migracao dos dados do Progress para o Oracle

    - Desenvolvimento
    * Adaptar os programas (segundo a Progress nossos programas terao que sofrer algumas adaptações 'básicas')
    * Testes unitários
    * Testes de performace

    De um ponto de vista geral nosso ambiente consiste em:

    - Progress 10.2b rodando em Red Hat
    - Progress a caracter (mais de 5 mil programas ".p")
    - A base possui mais de mil tabelas, 700 Gigabytes e dezenas de bilhoes de registros

    Alguem poderia compartilhar sua experencia em um processo como este? Gostaria de dicas tanto de gestao do projeto quanto sobre a parte tecnica, como: tempo de duração, performance, melhores práticas, etc. Desta forma, mitigar possíveis problemas conhecidos. Lendo alguns foruns, algumas pessoas tiveram problemas com tamanhos de campo, locale, tamanho de banco (é verdade que a base fica em ate 3x maior que a original?), entre outros.

    Grato pela atenção,

    Obrigado.
  2. kirchner

    kirchner Membro Participativo Moderador

    adautosb,

    Em geral os programas ABL rodam quase sem modificação em DataServer. Algumas exceções só na minha experiência.

    Apesar disso o desempenho em geral não é bom. Por exemplo, o FIND no DataServer SQL é terrível. Não tenho tanta experiência com o DataServer Oracle para dizer se é igual...

    Tamanho de campos são um problema porque a interface ABL do Progress não controla isso. O campo é X(10) mas você grava 20 e pronto.
    Já o Oracle controla e vai gerar erros. É bem provável que na importação ocorram erros desse tipo. O que dá para fazer é rodar um dbtool no banco Progress antes da exportação e usar os esses tamanhos na criação do banco Oracle.

    Sobre tamanho do banco depende da tua vontade. O OpenEdge usa um esquema muito bom de compactação nos índices. No Oracle e SQL Server geralmente eles ficam maiores.
    Sobre a tabela, depende da escolha de tipos de dados e esquema do banco. Eu já peguei tabelas do Progress e deixei menor no SQL Server, sem perda de informação.
  3. adautosb

    adautosb Sem Pontuação

    kirchner,

    primeiramente obrigado pelos esclarecimentos e por compartilhar sua experiencia. Sobre o FIND ficar lento.... já tinha pensado nisso.. imagino que um "find tabela" sera equivalente a um "SELECT * FROM tabela" certo? Nao sou programador Progress... mas acredito que na etapa de adaptação teremos que forcar o Progress a utilizar somente os campos que desejamos. Ou nao tem jeito de fazer isso?

    abraços
    Adauto.
  4. kirchner

    kirchner Membro Participativo Moderador

    Adauto,

    Eu recomendo dar uma geral no manual do DataServer. Não é tão grande e tem algumas dicas boas sobre desempenho.

    Sobre o FIND, com DataServer SQL ele faz um SELECT com ORDER BY para trazer a lista de RECIDs, e depois faz um SELECT para trazer o registro de interesse. Mas ele traz todas as colunas.
    No FOR (FIRST / LAST / EACH) é possível dizer quais colunas vocês quer, com a cláusula FIELDS. No FIND até onde conheço não é possível.

    Existe uma opção para enviar comandos diretamente para o banco de dados que é muito útil em alguns casos, chama SEND-SQL-STATEMENT. Tem uns exemplos:
    http://ingleses.datasul.com.br/blog/pos ... erver.aspx

    Ali nesse link tem link p/ outros 2 posts, que falam sobre SPs com DataServer também.
  5. adautosb

    adautosb Sem Pontuação

    Marcos,

    mais uma vez obrigado pelos esclarecimentos. Foram de grande ajuda.

    abraços
    Adauto.

Compartilhe esta Página