12c设置RESULT_CACHE_MODE=MANUAL发生'Result Cache:RC Latch'类型的Latch Free等待

当在 Oracle 12c 上设置 RESULT_CACHE_MODE = MANUAL 时发生'Result Cache: RC Latch'类型的”Latch Free”等待 (文档 ID 2102499.1)

转到底部转到底部

文档内容


症状

更改

原因

解决方案

参考


适用于:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
本文档所含信息适用于所有平台

症状

  • 在 12C 上看到大量的'latch free'等待 (无论是从低版本升级上来的还是新安装的)。
  • 当检查 AWR 报告的时候,即使设置 RESULT_CACHE_MODE 为 MANUAL,在 latch statistics 部分显示了对"Result Cache: RC Latch"的高竞争。
  • 所有使用 result cache 的 SQL 含有 DS_SVC 提示,也是动态的统计活动的一部分。例如 :
    SELECT /* DS_SVC */ /*+ dynamic_sampling(0) no_sql_tune no_monitoring optimizer_features_enable(default) no_parallel result_cache(snapshot=3600) */ SUM(C1)
    FROM (SELECT /*+ .......

     

更改

新安装或从低版本升级到 12C。

原因

这个问题的原因是默认情况下在 12C 启用了自动动态统计信息,自动决定动态统计信息是否是有用的和在所有的 SQL 语句上使用哪个统计级别。当优化器认为有必要的时候,它就会收集的动态统计信息。有关此功能的详细信息请参阅:

Document 2002108.1 Automatic Dynamic Statistics

当自动动态取样用于 SQL 语句,它可以决定,根据这些统计数据,对于这些 SQL 使用 result cache 是否可以获得更好的响应时间; 这会导致大量使用 result cache,从而导致了在 Result Cache: RC Latch 类型的 latch free 上的争用。

因此,这是预期的行为。

解决方案

 使用下面的命令可以关闭自动动态统计信息使用结果缓存的机制:

alter system set "_optimizer_ads_use_result_cache" = FALSE;
请使用浏览器的分享功能分享到微信等