Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何启用函数结果缓存_Oracle_Caching_Oracle11g - Fatal编程技术网

Oracle 如何启用函数结果缓存

Oracle 如何启用函数结果缓存,oracle,caching,oracle11g,Oracle,Caching,Oracle11g,我尝试在11.2.0上使用Oracle,因此我做了以下测试: 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; 不过,我的示例每次都打印调用的。我还尝试了一些在线找到的其他示例,但没有使用缓存 我试着改变系统设

我尝试在11.2.0上使用Oracle,因此我做了以下测试:

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;
不过,我的示例每次都打印调用的

我还尝试了一些在线找到的其他示例,但没有使用缓存

我试着改变系统设置结果缓存最大大小=10485760
仍然不起作用

我尝试了
ALTER SESSION SET result\u cache\u mode=FORCE(不需要)-没有帮助

从dual中选择dbms\u result\u cache.status始终返回禁用的


我做错了什么?

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

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

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

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

因此,请检查以下参数

show parameter shared_pool_size
show parameter result_cache_max_size
show parameter result_cache_mode
你也可以试试

BEGIN
    dbms_result_cache.ByPass(False);
END;
/

个人版可能有,但个人版仅适用于Windows,而11gR2尚未在Windows yetOuch上发布。与Enterprise一起试用,效果很好:)非常感谢@Peter Lang-Oracle的大多数性感新功能都是仅适用于EE的(当它们不是收费的额外功能时),因此许可指南是一份重要的阅读材料。同时还要检查SGA_目标是否设置为零。有关所有详细信息,请参阅。