Pular para o conteúdo
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #105161
    claudionor_rocha
    Participante

      Prezados,

      Utilizamos uma solução da Mastersaf e por recomendação deles em virtude do final de suporte ao Oracle 10g, migramos o banco de dados para o Oracle 11g, versão 11.2.0.3 em RHEL 5.6 64 Bits. Os servidores são virtuais e a máquina para o Oracle 11g é exatamente igual à do 10g.

      O Banco no 11g se comporta bem com tempos de resposta bem semelhantes ao 10g, porém estamos com um problema de performance em apenas 1 consulta. Para essa consulta, no 10g ela demora cerca de 10 min, mas no 11g ela simplesmente não executa. Da última vez deixei rodando por 221 minutos e o resultado não saiu.

      Não tenho como voltar o compatible para 10.2.0 por que criei o banco já no 11g e importei apenas o schema que precisava. Tentei voltar, mas deu o erro abaixo.

      ORA-00201: control file version 11.2.0.0.0 incompatible with ORACLE version
      10.2.0.3.0
      ORA-00202: control file: ‘/oracle/oradata/seice/control01.ctl’

      Também tentei set o otimizador para a versão do 10g com o comando abaixo

      “alter session set optimizer_feature_enable=10.1.1.”. Encontrei o seguinte link com sugestões, mas fiquei com receio de implementá-las
      http://www.dba-oracle.com/t_11g_release … otchas.htm

      Como o problema é apenas para essa consulta, eu sugeri que ela fosse reescrita, particionando-a em consultas menores uma vez que está bastante complexa, com vários joins e unions. Parece que o desenvolvedor quis fazer todo o trabalho num único select. O problema é que no Oracle 10g ela funciona e desenvolvedor contra-argumenta com isso. Vocês tem alguma sugestão ? Já passaram por uma situação semelhante. Não quero alterar parâmeros do banco, que funciona bem, por causa de apenas 1 query que está mal.

      Atte,

      #105162
      rman
      Participante

        @claudionor_rocha

        Posta a consulta e os EXPLAIN PLAN do 10g e do 11g.

        #105168
        Fábio Prado
        Participante

          @claudionor_rocha,

          A demora pode estar ocorrendo não pelo fato da migração mas sim pq alguns parâmetros do BD relativos ao otimizador podem estar configurados com valores diferentes. Compare nos 2 BDs o valor do parâmetro OPTIMIZER_MODE. Já vi problemas ocorrerem qdo este valor era ALL_ROWS e foi alterado para FIRST_ROWS.

          Para te ajudar melhor precisamos mesmo do plano de execução, conforme mencionado pelo @rman. Se vc não souber gerar o plano de execução leia o artigo http://www.fabioprado.net/2011/03/analisando-o-plano-de-execucao-para.html

          []s

          #105175
          claudionor_rocha
          Participante

            Segue a query, e os planos no 10g e no 11g. Esses planos foram gerado pelo sqlt. Se vocês acharem necessário, posso fazer upload dos arquivos, mas são um tanto grandes (30 mb cada arquivo)

            Attachments:
            #105176
            claudionor_rocha
            Participante

              Apenas esclarecendo : Abri um chamado no Oracle support e eles recomendaram que eu executasse o SQLTXPLAIN (SQLT) . Ele gerou vários arquivos, inclusive os planos de execução. Como mencionei, os arquivos totalizam cerca de 30 mb cada, mas se vocês acharem necessário, posso fazer o upload deles.

              #105185
              César Carvalho
              Participante

                Bom dia,

                Cara roda essa query e verifica quando foi a ultima atualização das estatísticas das tabelas envolvidas dessa consulta.
                Em seguida atualize com os comandos abaixo e veja se resolve seu caso.

                SELECT TABLE_NAME,
                LAST_ANALYZED
                FROM DBA_TABLES WHERE
                OWNER LIKE ‘CESARX’ –USUARIO
                AND LAST_ANALYZED IS NOT NULL
                AND TABLE_NAME LIKE ‘FAT_NF_MESTRE’
                OR TABLE_NAME LIKE ‘LINHA_PROD_VISOES’
                OR TABLE_NAME LIKE ‘FAT_NF_ITEM’
                OR TABLE_NAME LIKE ‘CLIENTES’
                OR TABLE_NAME LIKE ‘CIDADES’
                OR TABLE_NAME LIKE ‘ITEM_VISOES’
                OR TABLE_NAME LIKE ‘AGE_CENARIO_DADOS’
                OR TABLE_NAME LIKE ‘AGE_CENARIOS’
                ORDER BY TABLE_NAME DESC

                — ATUALIZANDO AS ESTATISTICAS POR TABELA

                ANALYZE TABLE CESAR.FATURAMENTO COMPUTE STATISTICS;

                — ATUALIZANDO TODAS AS TABELAS POR PERIODO (DATA)
                SELECT ‘ANALYZE TABLE ‘||OWNER||’.’||TABLE_NAME||’ COMPUTE STATISTICS;’
                FROM DBA_TABLES
                WHERE OWNER LIKE ‘CESAR’
                AND LAST_ANALYZED IS NOT NULL
                AND LAST_ANALYZED <='20/12/2012'

                Espero que isso te ajude…

                #105213
                claudionor_rocha
                Participante

                  Prezados,

                  Após um longas conversas com o suporte da Oracle, o problema foi resolvido com o seguinte hint

                  /*+ optimizer_features_enable(‘10.2.0.4’) */ . Inclui na consulta e rodou em 5 min.

                  Achei estranho por que eu tinha encontrado na internet a seguinte recomendação :

                  alter session set optimizer_feature_enable=10.2.0.4.

                  Executei esse comando junto com a consulta mas não teve nenhum efeito. Alguém sabe explicar porque como hint funcionou e o alter session não ?

                  #105214
                  rman
                  Participante

                    @claudionor_rocha

                    Teoricamente o ALTER SESSION aplica o parametro na sessão, e o HINT apenas naquela consulta em especifico.

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.