Bom dia Raul Olha, tem bastante coisa pra analisar, dificil dizer assim, mas pra ajudar, responda a algumas perguntas:
- Que 10g é este teu banco? 10.2.0.1? 10.2.0.5? - Você tem os CPUs/PSUs atualizados? - O que levou você a descobrir que seu problema é System I/O? - A desfragmentação dos objetos foi uma tentativa de resolver o problema ou um possível causador? - Algum erro no alert log? 2011/6/8 raulcsneto <raulcsn...@yahoo.com>: > Bom dia > > Tenho um banco de 230Gb rodando no 10G estou tendo muitos problemas de System > I/O, será que alguem poderia me ajudar a verificar a causa deste problema, > segue abaixo um resumo do meu cenário e das ações que já tomei: > > O Oracle 10G roda em um servidor Redhat 5 com dois processadores Quad-core > Xeon 2.66Ghz, 20Gb de memória, dos quais 18Gb estão alocadas para o oracle. > > Possuo um Disco Virtual com 8 discos SAS de 15.000Rpm e 143Gb em RAID 10, > totalizando 544Gb para Dados e Indices; > > Possuo um Disco Virtual com 2 discos SAS de 15.000Rpm e 143Gb em RAID 0, > totalizando 272Gb para Redo; > > Possuo um Disco Virtual com 2 discos SAS de 15.000Rpm e 143Gb em RAID 0, > totalizando 272Gb para Archives; > > Estes tres volumes estão em uma controladora PERC6/E todos segmentados em > Stripes de 512k; > > Possuo Tablespaces separadas para Dados e Indices criadas com alocação > uniforme de 512k com datafiles de 2Gb; > > Recentemente movi todas as tabelas e indices para tablespaces novas para > eliminar a fragmentação; > > Caso alguem conheça algo que eu possa fazer para tentar descobrir onde está o > problema, seria de grande valor par mim, pois já esgotei todas as minhas > possibilidades, e a várias noites já não sei o que é dormir direito. > > Seguem abaixo algumas querys que fiz, meus resultados estão de acordo em > todas elas: > > ÍNDICE DE ACERTOS NO CACHE > ========================== > (quanto mais BHR próximo a 1, melhor) > > column bhr format 9.99 > column mydate heading 'Ano Me Di Hora' > select to_char(end_interval_time,'yyyy-mm-dd HH24') mydate, > new.name "Buffer Pool", > (((new.consistent_gets-old.consistent_gets)+ > (new.db_block_gets-old.db_block_gets))- > (new.physical_reads-old.physical_reads)) / > ((new.consistent_gets-old.consistent_gets)+ > (new.db_block_gets-old.db_block_gets)) bhr > from > dba_hist_buffer_pool_stat old, > dba_hist_buffer_pool_stat new, > dba_hist_snapshot sn > where > (((new.consistent_gets-old.consistent_gets)+ > (new.db_block_gets-old.db_block_gets))- > (new.physical_reads-old.physical_reads)) / > ((new.consistent_gets-old.consistent_gets)+ > (new.db_block_gets-old.db_block_gets)) > 0 > and > new.name = old.name > and > new.snap_id = sn.snap_id > and > old.snap_id = sn.snap_id-1 > order by mydate; > > ÍNDICE DE ACERTOS DE CACHE PARA OBJETOS DO DICIONÁRIO DE DADOS > ============================================================== > (hit ratio deve estar próximo a 1 - apesar de ser inviável para alguns > objetos, como sequences) > > select > parameter "Parametro", > gets, > Getmisses , > getmisses/(gets+getmisses)*100 "Taxa de erro", > (1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Taxa de acerto" > from v$rowcache > where gets+getmisses <>0 > group by parameter, gets, getmisses ; > > ÍNDICE DE ACERTOS NO CACHE POR SESSÃO > ===================================== > (hit ratio deve estar próximo a 1 - apesar de 1 ser improvável) > > select Username, > OSUSER, > Consistent_Gets, > Block_Gets, > Physical_Reads, > 100*( Consistent_Gets + Block_Gets - Physical_Reads)/ > ( Consistent_Gets + Block_Gets ) "Hit Ratio %" > from V$SESSION,V$SESS_IO > where V$SESSION.SID = V$SESS_IO.SID > and ( Consistent_Gets + Block_Gets )>0 > and username is not null > order by Username,"Hit Ratio %"; > > ÍNDICES DE CONTENÇÃO DE LATCH DE REDO > ===================================== > (quanto mais abaixo de 1 os ratios, melhor) > > SET feedback OFF > COLUMN name FORMAT a15 > COLUMN gets FORMAT 99999999 > COLUMN misses FORMAT 999999 > COLUMN immediate_gets FORMAT 99999999 HEADING 'IMM_GETS' > COLUMN immediate_misses FORMAT 99999999 HEADING 'IMM_MISSES' > PROMPT Examining Contention for Redo Log Buffer Latches... > PROMPT ---------------------------------------------------- > > SELECT name, gets, misses, immediate_gets, immediate_misses, > Decode(gets,0,0,misses/gets*100) ratio1, > Decode(immediate_gets+immediate_misses,0,0, > immediate_misses/(immediate_gets+immediate_misses)*100) ratio2 > FROM v$latch WHERE name IN ('redo allocation', 'redo copy'); > > ORDENAÇÕES EM MEMÓRIA/DISCO > =========================== > (quanto mais memória e menos disco, melhor) > > SET HEADING OFF > SET FEEDBACK OFF > COLUMN name FORMAT a30 > COLUMN value FORMAT 99999990 > > SELECT name, value FROM v$sysstat > WHERE name IN ('sorts (memory)', 'sorts (disk)'); > > > > > ------------------------------------ > > -------------------------------------------------------------------------------------------------------------------------- >>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >>responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > -------------------------------------------------------------------------------------------------------------------------- >>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >>http://www.oraclebr.com.br/ > ------------------------------------------------------------------------------------------------------------------------ > Links do Yahoo! Grupos > > > -- Ivan Ricardo Schuster OCP 10g/11g OCE RAC 10g/Linux