› Fóruns › SQL e PL/SQL › Duvida uso do Bulk Collect e estouro de memoria ORA-04030 › Duvida uso do Bulk Collect e estouro de memoria ORA-04030
rman,
Seguem respostas:
Teria um servidor de homologação para testar algumas mudanças de parametro? Não é interessante fazer isso direto no servidor de produção.
Temos um servidor de homologação, mas que não apresenta as mesmas configurações de produção, infelizmente. O erro não ocorre em homologação, o volume de dados da base também é menor. 🙁
Estas mudanças precisam de restart de banco, certo?
O problema acontece em horarios de pico, ou seja, varias conexões abertas, ou com apenas 1 conexão já estoura?
Havia concorrência. Então nós mudamos o horário da execução buscando o horário em que não há outros processos em execução. Está rodando às 5h da manhã. Porém mesmo no horário de menor uso da base, ainda temos tido o mesmo problema.
Para avaliar os processos concorrentes eu pedi a execução da query abaixo (executarão 5 vezes, com intervalo de 3 em 3 minutos, no horário de processamento da rotina).
Porém, esta madrugada não conseguiram executar. Estou elaborando um script bat e tentarei configurar uma tarefa na minha máquina para exportar este resultado
sem depender de terceiros:
SELECT a.osuser,
a.status,
a.inst_id,
NVL(a.username, ‘(oracle)’) AS username,
a.module,
a.program,
b.value as pga_memory,
a.*
FROM gv$session a, gv$sesstat b, gv$statname c
WHERE a.sid = b.sid
AND a.inst_id = b.inst_id
AND b.statistic# = c.statistic#
AND b.inst_id = c.inst_id
AND c.name = ‘session pga memory’
AND a.program IS NOT NULL
ORDER BY b.value DESC;
Acha que podemos extrair mais alguma informação de memória que pode ser importante no momento da execução?
Pergunto isso, por que a conexão pode ser dedicada ou compartilhada, verifique para mim que tipo de conexão é sendo utilizada.
Na conexão dedicada cada conexão terá usa própria PGA, e na compartilhada existe um reaproveitamento de memória entre as conexões abertas.
Tenho quase certeza de que é compartilhada. Tenho como confirmar através de alguma tabela do BD? Não tenho acesso às configurações do servidor direto no UNIX.
O sistema é WEB? Está sendo utilizado pool de conexão?
Essa rotina especificamente é executada diretamente no servidor de banco de dados, através de um sistema de agendamento de jobs (Control-M), que executa um shell script que inicia a rotina utilizando o usuário do sistema operacional.
Há outros processos WEB e Access que utilizam a base de dados, porém durante o dia, não no horário em que estamos executando o job.
Posta pra mim o sga_target.
sga_target = 8Gb (8388608000)
Pode fazer um teste, diminuir o sga_target e aumentar o pga_aggregate_target. Faça testes gradativos para chegar na proporção ideal, a diminuição do sga_target pode impactar em modo geral a desempenho do sistema.
Vou ver se conseguimos avaliar algo assim em homologação. O risco é muito grande, pois há processos diários e críticos para o cliente rodando neste mesmo servidor. 🙁
Quanto de memória RAM tem a máquina? A máquina é dedicada a Banco de Dados?
A máquina é dedicada a este banco de dados.
Vou tentar saber a quantidade de memória RAM.
Obrigada!
Abs
Fernanda