Sergio, bom dia!
Primeiramente gostaria de parabenilaza-lo pela resposta. Foi praticamente um artigo inteiro. Conteúdo de altissima qualidade.
Bom,
respondendo as perguntas:
De lá para cá, você saberia dizer ou que mudou? Algumas sugestões/exemplos: (Sou recente na empresa, mas, pelo que percebi não mudou praticamente nada a um bom tempo. Percebi também que a instalação do Oracle neste "Servidor/Desktop" foi realizado com next, next finish em torno de um ano e meio atras. Toda configuração está padrão.
Os acessos são internos em ERP escrito em Delph 3.
- Foi implantado um novo sistema; >> Não foi implementado um novo sistema.
- Uma manutenção foi implementada; >> Não foi implementada manutenção.
- Aumentou a quantidade de acessos dos usuários; >> Quantidade de acesso de usuários aumentou, mas, creio que não seria uma preocupação tão grande devido a não chegar nem ao menos 30 sessões no servidor.
- Foram adicionados novos recursos à aplicação, como uma rotina batch de processamento. >> Não foram implementadas novas rotinas.
A consulta sugerida no artigo de Burleson nos trouxe estes resultados:
free memory: 614400
<null>/alias : 614400
Outra analise foi os codigos escritos no Delph e uma conversa com os programadores responsáveis pelas manutenções do sistema. A aplicação está toda escrita com variavéis BIDS.
Algumas outras verificações segue abaixo:
-- Indicado que deve ser maior que 90%, caso contrário aumentar o parametro de inicialização DB_CACHE_SIZE.
Selecionar tudo
select 100*(1 - (v3.value / (v1.value + v2.value))) "Cache Hit Ratio [%]"
from v$sysstat v1, v$sysstat v2, v$sysstat v3
where
v1.name = 'db block gets' and
v2.name = 'consistent gets' and
v3.name = 'physical reads'
Selecionar tudo
DB Cache Data 10:00 15:00
DB Cache 15/10/2012 97,8 98,8
DB Cache 16/10/2012 98,6 98
DB Cache 18/10/2012 98,7 98,4
DB Cache 19/10/2012 98,51 97,8
--O número de espera deve ser sempre zero. Caso contrário, aumentar o tamanho do LOG_REDO, até o retorno do número a zero. (redo log space requests)
Selecionar tudo
Select name, value from v$sysstat
Where name in ('redo log space requests', 'redo log space wait time');
Selecionar tudo
Tempo Espera Redo Log Data 10:00 15:00
Tempo Espera Redo Log 15/10/2012 7 21
Tempo Espera Redo Log 16/10/2012 27 41
Tempo Espera Redo Log 18/10/2012 8 80
Tempo Espera Redo Log 19/10/2012 7 36
--Aumentar tamanho do buffer se for menor que 5.000.
Selecionar tudo
Select Round(e.value/s.value,5) "Redo Log Ratio"
From v$sysstat s, v$sysstat e
Where s.name = 'redo log space requests'
and e.name = 'redo entries';
Selecionar tudo
Buffer de Redo Data 10:00 15:00
Buffer de Redo 15/10/2012 2104 1910
Buffer de Redo 16/10/2012 1907 1948
Buffer de Redo 18/10/2012 2009 691
Buffer de Redo 19/10/2012 2048 1325
--when "Hit Ratio" < 99%, increase shared_pool_size
Selecionar tudo
select sum(pins) "Executions",sum(reloads) "Cache Misses while Executing",round((sum(pins)/(sum(reloads)+sum(pins)))*100,2)
"Hit Ratio, %" from V$LIBRARYCACHE;
Selecionar tudo
Acesso Cache Banco "Hit Ratio" Data 10:00 15:00
Acesso Cache Banco "Hit Ratio" 15/10/2012 99,99% 100%
Acesso Cache Banco "Hit Ratio" 16/10/2012 99,99 100
Acesso Cache Banco "Hit Ratio" 18/10/2012 99,99 100
Acesso Cache Banco "Hit Ratio" 19/10/2012 99,99 100
--when "Misses Ratio" > 1% increase shared_pool_size
Selecionar tudo
select sum(pins) "Executions",sum(reloads) "Cache Misses while Executing",round(sum(reloads)/sum(pins)*100,2)
AS "Misses Ratio, %" from V$LIBRARYCACHE;
ou
Selecionar tudo
SELECT
(SUM(getmisses)/SUM(gets))*100 RATIO
FROM
v$rowcache;
Selecionar tudo
Acesso disco "Misses Ratio" Data 10:00 15:00
Acesso disco "Misses Ratio" 15/10/2012 0,734 0,342
Acesso disco "Misses Ratio" 16/10/2012 0,645 0,41
Acesso disco "Misses Ratio" 18/10/2012 0,621 0,37
Acesso disco "Misses Ratio" 19/10/2012 0,606 0,32
Ainda não consegui identificar o gargalo, mas, uma das verificações que me chama muita a atenção é sobre acesso a disco apesar do hit ratio me demonstrar 99,99%
Parece que o recomendado é: se numero de acessos a disco for muito maior que zero aumentar a SORT_AREA_SIZE
Selecionar tudo
Select name, value from v$sysstat
where name in ('sorts (memory)', 'sorts (disk)');
Selecionar tudo
Acesso disco Data 10:00 15:00
Acesso disco 15/10/2012 133 887
Acesso disco 16/10/2012 178 745
Acesso disco 18/10/2012 158 508
Acesso disco 19/10/2012 252 1042
Ainda não estou muito seguro para efetivar tais modificações.