SQL Developer SQL Tuning Advisor 并非所有变量都绑定

Posted

技术标签:

【中文标题】SQL Developer SQL Tuning Advisor 并非所有变量都绑定【英文标题】:SQL Developer SQL Tuning Advisor not all variables bound 【发布时间】:2017-09-18 16:46:55 【问题描述】:

我正在尝试将 SQL 调优顾问与 SQL Developer(版本 4.1.3.20 和 17.2.0.188)一起使用。使用多个绑定变量实例的查询,例如:

select * from dual where :one = :one;

导致 SQL Tuning Advisor 出错:

-------------------------------------------------------------------------------
ERRORS SECTION
-------------------------------------------------------------------------------
- ORA-01008: not all variables bound

-------------------------------------------------------------------------------

对于具有一个或多个绑定变量的多个实例的查询,是否有解决方法或其他方法来获取相同的 SQL 调整信息?

【问题讨论】:

即使你在命名,你也不能重用绑定,它们总是基于位置的。你需要按顺序绑定两次。 @Ben 这不是 SQL Developer 的问题吗?我这里不是写SQL开发者,我是用的。 我认为你发现了一个错误,如果我有 2 个不同名称的绑定,则顾问运行没有问题 【参考方案1】:

基本上,Tuning Advisor 按位置(而不是名称)绑定。所以解决方法是重命名所有重复的变量实例。添加编号后缀就足够了。在您的示例中,您必须将变量命名为 :one 和 :one_1。

select * from dual where :one = :one_1;

我知道,这并不理想,但应该可以。

【讨论】:

【参考方案2】:

不确定为什么要使用“:one = :one”,可以将其替换为“1 = 1”,或者再添加一个由相同值分配的变量,select * from dual where :one = :two ;

【讨论】:

以上是关于SQL Developer SQL Tuning Advisor 并非所有变量都绑定的主要内容,如果未能解决你的问题,请参考以下文章

如何用 SQL Tuning Advisor (STA) 优化SQL语句

11g新特性-自动sql调优(Automatic SQL Tuning)

SQL调优指南笔记1:Introduction to SQL Tuning

深入了解SQL Tuning Advisor(转载)

常见的SQL调优(SQL Tuning)Tips

SQL Tuning for SAP