- Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 12 anos, 11 meses atrás por
rman.
-
AutorPosts
-
11 de março de 2013 às 5:13 pm #105161
claudionor_rocha
ParticipantePrezados,
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.htmComo 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,
11 de março de 2013 às 6:22 pm #105162rman
Participante@claudionor_rocha
Posta a consulta e os EXPLAIN PLAN do 10g e do 11g.
12 de março de 2013 às 8:01 pm #105168Fá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
13 de março de 2013 às 7:34 pm #105175claudionor_rocha
ParticipanteSegue 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:13 de março de 2013 às 7:36 pm #105176claudionor_rocha
ParticipanteApenas 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.
18 de março de 2013 às 3:51 pm #105185César Carvalho
ParticipanteBom 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…
22 de março de 2013 às 7:00 pm #105213claudionor_rocha
ParticipantePrezados,
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 ?
22 de março de 2013 às 8:26 pm #105214rman
Participante@claudionor_rocha
Teoricamente o ALTER SESSION aplica o parametro na sessão, e o HINT apenas naquela consulta em especifico.
-
AutorPosts
- Você deve fazer login para responder a este tópico.