Kamus 在 论坛中说了一个问题:分析数据会影响Oracle使用RBO的判断?在讨论的最后,说到诊断事件 10053(cost-based optimizer tracing) 的 Trace 有的时候可能会忽略 Hint (?)
10053 诊断事件有的时候可能会忽略掉 hint。出现这种问题可能出于两种情况:
- 提示是无效的。在该例中,Kamus指定了 RULE 提示,而对应的表是分区表。或者是 指定提示某索引,而该索引不存在。则优化器同样忽略掉该提示。
- 指定的提示信息不足。
- 10g 中的 _optimizer_ignore_hints 参数如果设定为 TRUE 则 Hint 不起作用。
当然,以上这三条并不是我的总结,而是 Niall Litchfield 在邮件列表中的讨论。Cary Millsap 提到 there are good
hints and there are bad hints 。
最后俺的建议,在低版本的数据库上,如果觉得 10053 有问题,不妨对比 10046 (equivalent to SQL_TRACE=TRUE)的结果来分析。