Como ativar o resultante da função Cache
Pergunta
Estou tentando usar o Oracle's Cache do resultado da função sobre 11.2.0, então eu fiz o seguinte teste:
CREATE OR REPLACE FUNCTION get_test_value
RETURN NUMBER
RESULT_CACHE
AS
BEGIN
dbms_output.put_line( 'Called' );
RETURN 0;
END;
SELECT get_test_value FROM dual;
Meu exemplo impressões Called
toda vez, no entanto.
Também tentei outros exemplos encontrados on -line, mas o cache não é usado.
eu tentei ALTER SYSTEM SET result_cache_max_size = 10485760;
Ainda não funciona.
eu tentei ALTER SESSION SET result_cache_mode=FORCE;
(o que não deve ser necessário) - não ajudou.
SELECT dbms_result_cache.status FROM dual;
sempre retorna DISABLED
.
O que estou fazendo errado?
Solução
Qual edição você está usando? A funcionalidade do cache está disponível apenas no Enterprise Edition; portanto, se você estiver tentando isso em uma instalação de edição padrão, não funcionaria. Está no Guia de licenciamento.
Outras dicas
Vou adicionar essas informações aqui, porque achei útil para resolver meu problema semelhante.
Se você está obtendo um status de desativado ou desvio, lembre -se
*A área de memória de cache do resultado está localizada no pool compartilhado, portanto, o valor do resultado_cache_max_size é consumido a partir do tamanho do pool compartilhado.*
Portanto, verifique os seguintes parâmetros
show parameter shared_pool_size
show parameter result_cache_max_size
show parameter result_cache_mode
você também pode tentar
BEGIN
dbms_result_cache.ByPass(False);
END;
/