如何启用功能结果缓存

时间:2010-02-18 17:40:54

标签: oracle caching oracle11g

我正在尝试在 11.2.0 上使用Oracle的Function Result Cache,所以我做了以下测试:

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;

我的例子每次都会打印Called
我也试过在网上找到的其他一些例子,但是没有使用缓存。

我试过ALTER SYSTEM SET result_cache_max_size = 10485760;
仍然无效。

我尝试ALTER SESSION SET result_cache_mode=FORCE;(这不应该是必要的) - 没有帮助。

SELECT dbms_result_cache.status FROM dual;始终返回DISABLED

我做错了什么?

2 个答案:

答案 0 :(得分:16)

您使用的是哪个版本?缓存功能仅在Enterprise Edition中可用,因此如果您在标准版安装上尝试此功能,则无法使用。它位于Licensing Guide

答案 1 :(得分:0)

我将在此处添加此信息,因为我发现它有助于解决我的类似问题。

如果您获得DISABLED或BYPASS状态,请记住

* 结果缓存内存区域位于共享池中,因此,从共享池大小中消耗了result_cache_max_size的值。*

所以请检查以下参数

show parameter shared_pool_size
show parameter result_cache_max_size
show parameter result_cache_mode

您也可以尝试

BEGIN
    dbms_result_cache.ByPass(False);
END;
/
相关问题