Bom dia.
Estou com o seguinte problema usando a base de dados Oracle:
ORA-04030: sem espaço de memória para processo durante tentativa de alocação de
16396 bytes (koh-kghu call ,kollalo2)
Alguém poderia me especificar melhor o erro ???
Abraços!
Bom dia.
Estou com o seguinte problema usando a base de dados Oracle:
ORA-04030: sem espaço de memória para processo durante tentativa de alocação de
16396 bytes (koh-kghu call ,kollalo2)
Alguém poderia me especificar melhor o erro ???
Abraços!
Olá, criador!
O que exatamente você está tentando fazer?
[]s
Criei um PL/SQL que faz select em uma tabela com 38884 linhas.
Após isto, estou fazendo um for e dando update e commit em cada uma das 38884 linhas.
Porém, ocorre esta exceção.
Espero ter sido claro!
Abraços!
A mensagem diz tudo.
O servidor não tem memória pra alocar os 12837123781381230981203712037213012931 registros.
Procure alternativas.
Alocar todos os registros assim não costuma ser uma boa, justamente por consumirem muito mais recursos.
Realmente, é como o Tchello diz.
O Oracle, ao fazer uma operação de Update, transfere os dados antigos para uma memória, e só então atualiza. Você está fazendo operações com 123617236712637126731263 registros, e isso estoura a capacidade do gerenciador, né?
Talvez uma solução diferente para a sua operação possa resolver o problema!
begin
declare
cursor lc_TABELA
is
select Coluna1,
Coluna2,
UTL_RAW.cast_to_varchar2(Coluna_Blob)
"Coluna_Blob"
from TABELA
where Coluna2 is not null
and
Nome = 'Rafael'
;
begin
for lc_VLTB in lc_TABELA
loop
update TABELA
set Data_Atual = Data_Atual,
Coluna2 = lc_VLTB.Coluna_Blob
where Coluna1 = lc_VLTB.Coluna1
;
commit;
end loop;
end;
end;
Este é o meu PL/SQL.
Onde posso melhorá-lo ???
Abraços!
Só para conhecimento:
O comando UTL_RAW.cast_to_varchar2(Coluna_Blob) transforma um valor para VARCHAR2…
Neste meu caso, o valor era 393635363536323030.
Usando este comando, é transformado para 965656200.
Ou seja, é transformado de Hexadecimal para String
Abraço!
Esse seu campo blob é uma foto, algo do tipo?
É realmente necessário usá-lo na operação?
Porque não atualizá-lo somente quando houver alterações sobre ele?
Execute sua procedure sem atualizar o campo Blob para ver no que dá!
É completamente necessário.
Na verdade, é EXATAMENTE dele que vou tirar o valor para atualizar a coluna.
Já testei sem utilizá-lo… Está ocorrendo o mesmo problema!