Qual seria a melhor forma de coletar estatísticas de uma tabela com as seguintes características:
- Particionada por range (MES/ANO) - 13 partições, sendo 1 referente ao mes anterior, 1 referente ao mês atual e as outras 11 partições com meses futuros. A partição referente ao mês anterior não precisa ter suas estatísticas coletadas pois não sofrerá alterações, somente a partição referente ao mês atual e aos futuros precisam de estatística. - No final de cada mês a partição atual fica com uma média de 16 milhões de registros as futuras não chegam a 300 registros até que se tornem atuais. - A máquina tem 8 processadores - Versão 9.2.0.4.0 Atualmente a minha rotina faz um cursor para retornar todas as partições com exceção da de histórico e coleta as estatísticas da seguinte forma: DBMS_STATS.GATHER_TABLE_STATS( 'OWNER', 'TABELA' , CASCADE => FALSE ,GRANULARITY=>'PARTITION', PARTNAME => 'PARTICAO' , ESTIMATE_PERCENT => 30 , METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO' , DEGREE => 4 ); Porém dessa forma o global_stats da tabela não é coletado, já que só coleto estatísticas por partição. Caso eu sete o parâmetro GRANULARITY para ALL o tempo de execução do dbms_stats fica imenso, já que além da partição atual ele considerará as informações da tabela inteira. * Obs: As estatísticas dos indices são coletadas separadamente. * Qual seria a forma ideal de coletar estatísticas individualmente por partição e depois atualizar o global stats????* -- Thiago Azevedo [As partes desta mensagem que não continham texto foram removidas]