- Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 12 anos, 10 meses atrás por
MarcusPE.
-
AutorPosts
-
21 de outubro de 2010 às 3:47 pm #96506
Fornasier
ParticipanteCaros,
Estou tentando resolver o erro ora-06512. Todos os tópicos relacionados a este erro relatam que o mesmo acompanha uma exceção de origem e indica a linha onde o erro ocorre. Porém no meu caso tenho somente a mensagem de erro ORA-06512. Segue abaixo a mensagem de erro completa.
ORA-06512: at line 1
ORA-06512: at “OPSS.PG_CALCULO”, line 36207
ORA-06512: at “OPSS.PG_CALCULO”, line 36284
ORA-06512: at “OPSS.PG_CALCULO”, line 1861
ORA-06512: at “OPSS.PG_CALCULO”, line 281
ORA-06512: at line 2Como vocês podem perceber a package em questão é MUITO grande. E utiliza largamente o conceito de tabelas index-by, porém divididos em procedures dentro da package. Suspeito que a utilização destas tabelas esta me causando algum tipo de estouro de memória.
Também li em alguns fóruns que este tipo de tabela libera a memória quando a procedure é encerrada, mas caso as estas procedures estejam dentro de uma package isto também acontece? Será este meu problema?
Alguém tem alguma dica para me passar?Mais uma informação, caso seja executada isoladamente a procedure que esta causando erro, o erro simplesmente não acontece.
Desde já agradeço a todos
21 de outubro de 2010 às 4:19 pm #96508jspaulonci
ParticipantePost as intruções da linha
ORA-06512: at “OPSS.PG_CALCULO”, line 36207
ORA-06512: at “OPSS.PG_CALCULO”, line 36284
ORA-06512: at “OPSS.PG_CALCULO”, line 1861
ORA-06512: at “OPSS.PG_CALCULO”, line 281Error:
ORA-06512: at lineCause:
This error message indicates the line number in the PLSQL code that the error resulted.For example, if you had the following PLSQL code:
declare
v_number number(2);
begin
v_number := 100;
end;21 de outubro de 2010 às 4:32 pm #96509Fornasier
ParticipanteBlz João,
Segue a linha e a instrução correspondente.
281 -> SP_CALC_INDICADORES(VDATAREF)
1861 -> SP_CALC_IND_RN30(indicador.codigo,l_classificao(i),indicador.relatorio, indicador.ordem, 0, vDataRef);
36284 -> OPEN l_pedidos_vol(l_di, l_df);
FETCH l_pedidos_vol BULK COLLECT
INTO l_cod_cliente, l_cod_dv_cliente, /l_cod_regional,/
l_cod_rede, l_cod_pos_equipe, l_tpt_pedidos_vol, l_tpt_pedidos_vol_devolvido;36207 -> CURSOR l_pedidos_vol(p_di DATE, p_df DATE) IS
SELECT PDV.COD_CLIENTE AS CLIENTE,
PDV.COD_DV_CLIENTE AS DV_CLIENTE,
MV.cod_rede_pdv rede,
PDV.cod_equipe_venda cod_equipe,
SUM(CASE WHEN MCO.COD_OPER = ’01’ THEN NF.QTD_ITEM * MVP.FTR_CONVERSAO_HECTOLITRO_PROD ELSE 0 END) QTD_VOLUME_SAIDA,
SUM(CASE WHEN MCO.COD_OPER = ’13’ THEN NF.QTD_ITEM * MVP.FTR_CONVERSAO_HECTOLITRO_PROD ELSE 0 END) QTD_VOLUME_DEVOLVIDO
FROM NOTA_FISCAL_AS NF
JOIN MV_CODIGO_OPERACAO_MARKETING MCO ON NF.COD_OPER_MKT = MCO.COD_OPER_MKT
JOIN PDV_AS PDV ON NF.COD_CLIENTE = PDV.COD_CLIENTE AND NF.COD_DV_CLIENTE = PDV.COD_DV_CLIENTE
JOIN MV_PDV MV ON NF.COD_CLIENTE = MV.COD_CLIENTE AND NF.COD_DV_CLIENTE = MV.COD_DV_CLIENTE
JOIN MV_PRODUTO MVP ON NF.COD_PROD = MVP.COD_PROD
WHERE PDV.cod_equipe_venda is not null –nao calcular loja sem RV
AND NF.DAT_EMISSAO >= TRUNC(p_di, ‘MONTH’)
AND NF.DAT_EMISSAO < trunc(p_df) + 1
GROUP BY PDV.COD_CLIENTE,
PDV.COD_DV_CLIENTE,
MV.cod_rede_pdv,
PDV.cod_equipe_vendaComo postei anteriormente, isoladamente a SP_CALC_IND_RN30 não apresenta nenhum erro quando faço a chamada com pg_calculo.SP_CALC_IND_RN30(parametros).
Abraço!
21 de outubro de 2010 às 4:40 pm #96510jspaulonci
ParticipanteTente debugar e encontrar exatamente a linha que gera a exception
21 de outubro de 2010 às 4:45 pm #96511Fornasier
ParticipanteJoão,
Já fiz isso. É exatamente no open do cursor.
O que você acha da minha suspeita sobre as tabelas index by? Isoladamente a procedure executa sem erro.
Abraço!
6 de fevereiro de 2013 às 11:27 pm #105075Fábio Prado
ParticipantePessoal,
Só para ficar documentado, tive o mesmo erro habilitando parallel_degree_policy=auto na instância. O recurso de paralelismo automático no 11G estava ocasionando erros em packages que tentavam gerar arquivos externos. Tive que desabilitá-lo (valor padrão).Att,
Fábio Prado
http://www.fabioprado.net7 de fevereiro de 2013 às 10:41 pm #105078MarcusPE
ParticipanteDisponibiliza o código dessa stored procedure que apresenta o erro. Fica mais fácil para dar um opinião.
Mas como o erro é no Open do cursor e não está apresentando erro ao executar isoladamente, arriscaria que o cursor não está sendo fechado corretamente quando executado várias vezes.
-
AutorPosts
- Você deve fazer login para responder a este tópico.