为啥在 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_sizeresult_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_sizedbms_result_cache.status() 应该返回 bypass 而不是 disabled 就像您的情况一样。您使用的是哪个版本的 RDBMS? @NicholasKrasnov 我使用的是标准版,所以这可能解释了为什么它不起作用!我想我需要升级... 【参考方案1】:

从 cmets 中可以看出,这是因为结果缓存只是企业版功能,而我有标准版。

【讨论】:

以上是关于为啥在 Oracle 11g 中总是禁用结果缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何清除Oracle中的所有缓存项

oracle 11.2 result_cache说明

设置oracle11g定时自动备份,为啥没有备份?请大神们帮我看看为啥!

ORACLE 11G内存管理方式

oracle 10g中如何缓存函数的查询结果?

ORACLE 11G 禁用 SQL TUNING ADVISOR