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?

Foi útil?

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;
/
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top