我们在 11.2.0.4 数据库中有大量使用索引提示的查询。我最近发现了一些性能问题,发现查询提示引用的一些索引丢失了。我担心可能会有更多这样的情况,我想知道是否可以构造一个查询来执行以下操作:
- 在游标缓存中搜索所有带有索引提示的查询
- 从每个提示中提取索引名称并在数据字典中搜索索引。
- 返回缺少的每个索引的名称。
所有索引都遵循相同的命名方案:6 个字母,后跟 6 个数字,再后跟字符串“$INDXn”,其中 n 是 0-9 的数字。
有什么建议如何解决这个问题?
我们在 11.2.0.4 数据库中有大量使用索引提示的查询。我最近发现了一些性能问题,发现查询提示引用的一些索引丢失了。我担心可能会有更多这样的情况,我想知道是否可以构造一个查询来执行以下操作:
所有索引都遵循相同的命名方案:6 个字母,后跟 6 个数字,再后跟字符串“$INDXn”,其中 n 是 0-9 的数字。
有什么建议如何解决这个问题?
就个人而言,我将从 DBA_HIST_ACTIVE_SESS_HISTORY 开始,然后查看包含该类型提示的所有语句。
从那里,您可以从该提示中提取索引名称,然后查找 dba_indexes 以查看索引是否存在、是否有效等。
如果你想让它真的很花哨并且一步完成所有这些,你应该能够通过 PL/SQL 来完成,否则几条 SQL 和一个电子表格应用程序就可以成为你的朋友。