Oracle 未使用最佳 dbplan

Oracle not uses best dbplan

我正在为 oracle 中的性能而苦苦挣扎。情况是:子系统 B 有一个指向主数据库 A​​ 的数据库链接。在系统 B 上,通过 dblink 的查询在 15 秒后完成,数据库计划使用适当的索引。

如果同一个查询现在应该在存储过程中填充 table,Oracle 将使用另一个具有完整扫描的计划。无论我尝试什么(提示),我都无法摆脱这些全面扫描。那太糟了。

我能做什么?

Oracle 查询优化器尝试 2000 种不同的可能性,并在正常情况下选择最佳的一种。但是如果你认为它选择了错误的计划,你可能会怀疑以下情况:

1- 属于查询表的直方图已弃用。

2- 由于查询错误,您的索引无法使用。

3- 您可以使用索引提示来强制使用索引。

4- 您可以使用 SQL Advisor 或 运行 TKProf 进行性能分析并确定问题所在或导致性能不佳的原因。检查网络、磁盘 I/O 值等

如果您分享您的查询,我们可以为您提供更多信息。

看起来我们没有在两种不同的条件下进行相同的查询。 第一种情况是简单 select over dblink & 第二种情况是 "insert as select over dblink"。

你能不能在这里分享两个查询和执行计划,因为你可能有它们。如果由于安全限制而无法过去查询,请过去执行计划。

-阿比

经过多次尝试,我可以使用 Enterprise Manager 创建新的数据库计划。现在 运行 完美了。