Oracle AWR - 高SQL分析调用但是0执行

时间:2015-05-22 10:15:57

标签: oracle awr

我正在尝试了解导致Oracle(10)数据库上的打开查询的原因。

在AWR上,它显示了非常多的解析调用(例如1小时内的15,000+),但执行了0次。

如何查询不被执行,但随后解析了15000次?

Parse Calls:15,000+

执行:0

SQL文本:从AVIEW中选择*

4 个答案:

答案 0 :(得分:1)

SQL中的*将解释重复解析。您应该用字段名称列表替换它。

答案 1 :(得分:0)

Oracle 11,java,jdbc 11.2.0.3

当您getting sequence from insert喜欢这个时出现问题

PreparedStatement ps = connection.prepareStatement(QUERY, new String[] { "student_id" });

我们发现jdbc驱动程序准备" SELECT * FROM"每次插入前的声明。只有解析操作没有执行。

T4CConnection.doDescribeTable

T4CStatement localT4CStatement = new T4CStatement(this, -1, -1);
localT4CStatement.open();
String str1 = paramAutoKeyInfo.getTableName();
String str2 = new StringBuilder().append("SELECT * FROM ").append(str1).toString();
localT4CStatement.sqlObject.initialize(str2);

Oracle解析器不会使用" *"来解析已解析的查询。所以每个插入都有额外的解析操作。

答案 2 :(得分:0)

零执行表示查询未在AWR快照中完成

答案 3 :(得分:0)

我们有一个类似的问题,但查询略有不同:

select col1, col2, col3 from table

结果相同。解析率高,但执行次数为零。

原因是来自spring-jdbc的StatementCreatorUtils#setNull。版本4.2.7 执行时:

insert into table (col1, col2, col3) values (val1, null, null)

有一个参数类型的数据库调用。