【发布时间】:2015-07-27 10:41:23
【问题描述】:
我正在尝试在 Oracle 11g 中启用结果缓存。我已经使用 Enterprise Manager 将 result_cache_max_size 和 result_cache_max_result 值分别更改为“1M”和“100”(也许这些不是最佳设置,但我只是想让它工作!)。
在进行这些更改后,我使用以下查询来查看是否确实进行了更改:
select * from V$PARAMETER where LOWER("NAME") like '%result_cache%';
我可以看到两者都已正确设置。但是,当我使用 result_cache 提示运行查询时,我可以从 Autotrace 中看到没有使用缓存。如果我然后运行以下查询:
SELECT dbms_result_cache.status() FROM dual;
我可以看到它的状态是“禁用”。重启数据库只会使result_cache_max_size 参数变回0(禁用)。
如何启用结果缓存?
【问题讨论】:
-
检查是否设置了
shared_pool_size。结果缓存消耗共享池的内存。 -
shared_pool_size 为 0 - 我应该将其设置为什么?
-
将其设置为根据您的需要计算的值。加。结果缓存是企业版功能。看起来您至少使用的是标准版,因为在企业版中,如果您设置
result_cache_max_size并且不设置shared_pool_size,dbms_result_cache.status()应该返回bypass而不是disabled就像您的情况一样。您使用的是哪个版本的 RDBMS? -
@NicholasKrasnov 我使用的是标准版,所以这可能解释了为什么它不起作用!我想我需要升级...