为啥在 Oracle 11g 中总是禁用结果缓存
Posted
技术标签:
【中文标题】为啥在 Oracle 11g 中总是禁用结果缓存【英文标题】:Why is the result cache always disabled in Oracle 11g为什么在 Oracle 11g 中总是禁用结果缓存 【发布时间】: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 我使用的是标准版,所以这可能解释了为什么它不起作用!我想我需要升级...
【参考方案1】:
从 cmets 中可以看出,这是因为结果缓存只是企业版功能,而我有标准版。
【讨论】:
以上是关于为啥在 Oracle 11g 中总是禁用结果缓存的主要内容,如果未能解决你的问题,请参考以下文章