【问题标题】:How to enable Function Result Cache如何启用函数结果缓存
【发布时间】:2011-01-18 10:45:34
【问题描述】:

我正在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

我做错了什么?

【问题讨论】:

    标签: oracle caching oracle11g


    【解决方案1】:

    您使用的是哪个版本?缓存功能仅在企业版中可用,因此如果您在标准版安装中尝试此功能,它将无法正常工作。它在Licensing Guide

    【讨论】:

    • 个人版可能有,但个人版只有windows,11gR2还没有出现在windows上
    • 哎哟。与 Enterprise 一起尝试过,它就像一个魅力 :) 非常感谢!
    • @Peter Lang - Oracle 的大多数性感新功能往往只是 EE(当它们不是收费的附加功能时),因此许可指南是一本至关重要的读物。
    【解决方案2】:

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

    如果您的状态为 DISABLED 或 BYPASS,请记住

    *Result Cache内存区域位于共享池中,因此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;
    /
    

    【讨论】:

    猜你喜欢
    • 2010-11-13
    • 2019-09-01
    • 2019-01-21
    • 2011-01-14
    • 2011-08-30
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多