2010-02-18 14 views
6

Estoy tratando de utilizar de Function Result Cache en 11.2.0, Oracle y así lo hice la siguiente prueba:Cómo habilitar la caché Función Resultado

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 no se usa el caché.

Probé ALTER SYSTEM SET result_cache_max_size = 10485760;
Todavía no funciona.

Intenté 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?

Respuesta

15

¿Qué edición estás usando? La funcionalidad de caché solo está disponible en Enterprise Edition, por lo que si intentas esto en una instalación de Standard Edition, no funcionaría. Está en el Licensing Guide.

+0

Puede tener Edición Personal, pero Personal Edition es solo Windows y 11gR2 aún no ha salido en Windows –

+0

Ouch. Intenté con Enterprise y funciona como un encanto :) ¡Muchas gracias! –

+1

@Peter Lang: la mayoría de las características nuevas y atractivas de Oracle tienden a ser solo EE (cuando no son cargos adicionales) por lo que la Guía de Licencias es una lectura vital. – APC

0

Voy a agregar esta información aquí porque la encontré útil para resolver 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 siguientes parámetros

show parameter shared_pool_size 
show parameter result_cache_max_size 
show parameter result_cache_mode 

también puede probar

BEGIN 
    dbms_result_cache.ByPass(False); 
END; 
/
Cuestiones relacionadas