Pregunta

Estoy tratando de utilizar de Oracle caché Función Resultado en 11.2.0 , así que hice la prueba siguiente:

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;

Mis ejemplo imprime Called cada vez, sin embargo.
También probé algunos otros ejemplos que se encuentran en línea, pero el caché no se utiliza.

He intentado ALTER SYSTEM SET result_cache_max_size = 10485760;
todavía no funciona.

He intentado ALTER SESSION SET result_cache_mode=FORCE; (que no debería ser necesario.) - no ayudó

SELECT dbms_result_cache.status FROM dual; siempre devuelve DISABLED.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

¿Qué edición está usando? La funcionalidad de caché sólo está disponible en Enterprise Edition, por lo que si usted está tratando esto en una edición estándar de instalación que no funcionaría. Está en el Manual de licencia .

Otros consejos

Im que va a añadir esta información aquí porque he encontrado que es útil en la solución de mi problema similar.

Si usted está recibiendo un estado de DISABLED o BYPASS recordar

* El área de memoria cache de resultados se encuentra en la zona compartida es así, el valor de result_cache_max_size se consume desde el tamaño piscina compartida. *

a fin de comprobar los parámetros siguientes

show parameter shared_pool_size
show parameter result_cache_max_size
show parameter result_cache_mode

También puede intentar

BEGIN
    dbms_result_cache.ByPass(False);
END;
/
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top