gpt4 book ai didi

oracle - 如何使Oracle SQL区中的一条SQL语句失效,以便在统计时产生新的计划

转载 作者:行者123 更新时间:2023-12-02 08:49:32 26 4
gpt4 key购买 nike

我有一个表和一个访问该表的查询(在 PL/SQL 包内)。通常每周收集一次统计数据。

已对表运行大型更新,导致特定索引列上的数据分布显着不同。 Oracle 使用的查询计划(我可以从 v$sqlarea 中看到)不是最优的。如果我对来自 SQL*Plus 的同一个*查询采取解释计划,则会返回一个好的计划。

此后我收集了该表的统计数据。 Oracle 仍在使用它最初提出的查询计划。 v$sqlarea.last_load_time 表明这是在统计信息生成之前生成的计划。我认为重新生成统计信息会使 SQL 缓存中的计划失效。

有没有办法从 SQL 缓存中删除这条语句?

(* 不是逐字符匹配,SQL 缓存中的匹配相同,但语句相同)。

最佳答案

如果您使用的是 10.2.0.4 或更高版本,您应该能够使用 DBMS_SHARED_POOL 包 purge a single cursor from the shared pool .

关于oracle - 如何使Oracle SQL区中的一条SQL语句失效,以便在统计时产生新的计划,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com