Oracle不使用最好的dbplan
问题描述:
我在oracle中使用性能很困难。情况是:子系统B有一个DB链接到主数据库A。 on系统B查询在dblink上完成15秒后完成,db计划使用适当的索引。Oracle不使用最好的dbplan
如果相同的查询现在应该填充存储过程中的表,Oracle将使用另一个计划进行全面扫描。无论我尝试(提示),我无法摆脱这些完整的扫描。那太糟了。
我该怎么办?
答
Oracle查询优化器会尝试2000种不同的可能性,并在正常情况下选择最佳的可能性。但是,如果您认为它选择错误的计划,您可能会怀疑以下情况:
1-属于查询表的您的直方图已弃用。
2-由于错误的查询,您的索引无法使用。
3-您可以使用索引提示来强制索引被使用。
4-您可以使用SQL Advisor或运行TKProf进行性能分析,并确定导致性能不佳的原因或错误。检查网络,磁盘I/O值等。
如果您分享您的查询,我们可以为您提供更多信息。
答
看起来我们在两种不同的情况下没有采用相同的查询。 第一种情况是通过dblink选择简单&第二种情况是“通过dblink插入选择”。
可以请您分享两个查询&这里的执行计划,因为您可能会将它们放在方便的位置。如果由于安全限制而无法过去查询,请过去执行计划。
-Abhi
答
多次尝试后,我可以创建与企业管理新的DB计划。现在它运行完美。
请提供您的代码和相关表格定义 – Rene