我正在努力解决Oracle中的性能问题。情况是:子系统B具有到主数据库A的数据库链接。在系统B上,查询在 dblink 上 15 秒后完成,数据库计划使用适当的索引。
如果相同的查询现在应该填充存储过程中的表,Oracle 将使用另一个具有完全扫描的计划。 无论我尝试什么(提示(,我都无法摆脱这些完整的扫描。 这太可怕了。
我能做什么?
Oracle 查询优化器尝试了 2000 种不同的可能性,并在正常情况下选择最好的一种。但如果您认为它选择了错误的计划,您可能会怀疑以下情况:
1-属于查询表的直方图已弃用。
2-由于查询错误,无法使用索引。
3-您可以使用索引提示来强制使用索引。
4-可以使用 SQL Advisor 或运行 TKProf 进行性能分析,并确定错误或导致性能不佳的原因。检查网络、磁盘 I/O 值等。
如果您分享您的查询,我们可以为您提供更多信息。
看起来我们在两种不同的条件下没有接受相同的查询。 第一种情况是 Simple select over dblink 和第二种情况是"插入为 select over dblink"。
您能否在这里分享两个查询和执行计划,因为您可能手边有它们。如果由于安全限制而无法进行过去的查询,请过去的执行计划。
-阿比
经过多次尝试,我可以使用企业管理器创建新的数据库计划。 现在它运行完美。