SQL ordered by Version Count
来源:互联网 发布:新东方网络课 编辑:程序博客网 时间:2024/05/20 09:25
v$sql v$sqlarea v$sql_shared_cursor及父游标子游标
1. v$sql和v$sqlarea的区别
v$sql和v$sqlarea从某种意义上具有父子关系。即v$sqlarea保存的是父游标的sql信息,而v$sql保存的是子游标的sql的信息。在v$sqlarea里面有一列VERSION_COUNT字段,其中代表的就是对于此父游标的子游标的数量,也就是在v$sql里面的子游标的sql记录的数量。在v$sql中有一列CHILD_NUMBER字段,表示该字游标的编号。可以说v$sqlarea和v$sql是一对多的父子关系。
2. 父游标和子游标
每种类型的dml语句都需要如下阶段:
Create a Cursor 创建游标
Parse the Statement 分析语句
Bind Any Variables 绑定变量
Run the Statement 运行语句
Close the Cursor 关闭游标
当数据库第一次对一条SQL语句进行硬解析的时候,会在库缓存中分配一些内存,并将新产生的父游标保存进去。与父游标有关的关键信息是这个SQL语句的文本,这个时候,会在v$sqlarea里面插入一条记录。那么,在什么情况下会产生子游标呢,当数据库又碰到一条完全相同SQL语句,但是语句的执行计划和执行环境发生了变化,比如由于绑定变量窥测而产生的不一致的执行计划,由于SQL的初始化参数optimizer_mode的不同以及绑定变量分级的情况都会产生子游标,当产生子游标的时候,会在v$sql里面插入一条记录。并且v$sqlarea里的VERSION_COUNT字段的值会加1。
SQL> select * from v$sqlarea where version_count > 1000;
SQL> SELECT distinct
2 ACL_MISMATCH, ANYDATA_TRANSFORMATION,
3 AUTH_CHECK_MISMATCH, BIND_MISMATCH, BIND_PEEKED_PQ_MISMATCH,
4 BIND_UACS_DIFF, BUFFERED_DML_MISMATCH, --CHILD_ADDRESS, CHILD_NUMBER, ADDRESS,
5 CROSSEDITION_TRIGGER_MISMATCH, CURSOR_PARTS_MISMATCH,
6 DESCRIBE_MISMATCH, DIFFERENT_LONG_LENGTH, DIFF_CALL_DURN,
7 EDITION_MISMATCH, EXPLAIN_PLAN_CURSOR, FLASHBACK_ARCHIVE_MISMATCH,
8 FLASHBACK_CURSOR, FLASHBACK_TABLE_MISMATCH, FORCE_HARD_PARSE,
9 INCOMPLETE_CURSOR, INCOMP_LTRL_MISMATCH, INST_DRTLD_MISMATCH,
10 INSUFF_PRIVS, INSUFF_PRIVS_REM, LANGUAGE_MISMATCH,
11 LITERAL_MISMATCH, LITREP_COMP_MISMATCH, LOAD_OPTIMIZER_STATS,
12 LOAD_RUNTIME_HEAP_FAILED, LOCK_USER_SCHEMA_FAILED, LOGICAL_STANDBY_APPLY,
13 LOGMINER_SESSION_MISMATCH, MULTI_PX_MISMATCH, MV_QUERY_GEN_MISMATCH,
14 MV_REWRITE_MISMATCH, MV_STALEOBJ_MISMATCH, NO_TRIGGER_MISMATCH,
15 OPTIMIZER_MISMATCH, OPTIMIZER_MODE_MISMATCH, OUTLINE_MISMATCH,
16 OVERLAP_TIME_MISMATCH, PDML_ENV_MISMATCH, PLSQL_CMP_SWITCHS_DIFF,
17 PLSQL_DEBUG, PQ_SLAVE_MISMATCH, PX_MISMATCH,
18 REMOTE_MAPPING_MISMATCH, REMOTE_TRANS_MISMATCH, ROLL_INVALID_MISMATCH,
19 ROW_LEVEL_SEC_MISMATCH, SLAVE_QC_MISMATCH, SQL_ID,
20 SQL_TYPE_MISMATCH, STATS_ROW_MISMATCH, STB_OBJECT_MISMATCH,
21 TOP_LEVEL_DDL_MISMATCH, TOP_LEVEL_RPI_CURSOR, TRANSLATION_MISMATCH,
22 TYPCHK_DEP_MISMATCH, TYPECHECK_MISMATCH, UNBOUND_CURSOR,
23 USER_BIND_PEEK_MISMATCH
24 FROM v$sql_shared_cursor
25 WHERE sql_id IN ('fndaxz4n1gdsg');
ACL_MISMATCH ANYDATA_TRANSFORMATION AUTH_CHECK_MISMATCH BIND_MISMATCH BIND_PEEKED_PQ_MISMATCH BIND_UACS_DIFF BUFFERED_DML_MISMATCH CROSSEDITION_TRIGGER_MISMATCH CURSOR_PARTS_MISMATCH DESCRIBE_MISMATCH DIFFERENT_LONG_LENGTH DIFF_CALL_DURN EDITION_MISMATCH EXPLAIN_PLAN_CURSOR FLASHBACK_ARCHIVE_MISMATCH FLASHBACK_CURSOR FLASHBACK_TABLE_MISMATCH FORCE_HARD_PARSE INCOMPLETE_CURSOR INCOMP_LTRL_MISMATCH INST_DRTLD_MISMATCH INSUFF_PRIVS INSUFF_PRIVS_REM LANGUAGE_MISMATCH LITERAL_MISMATCH LITREP_COMP_MISMATCH LOAD_OPTIMIZER_STATS LOAD_RUNTIME_HEAP_FAILED LOCK_USER_SCHEMA_FAILED LOGICAL_STANDBY_APPLY LOGMINER_SESSION_MISMATCH MULTI_PX_MISMATCH MV_QUERY_GEN_MISMATCH MV_REWRITE_MISMATCH MV_STALEOBJ_MISMATCH NO_TRIGGER_MISMATCH OPTIMIZER_MISMATCH OPTIMIZER_MODE_MISMATCH OUTLINE_MISMATCH OVERLAP_TIME_MISMATCH PDML_ENV_MISMATCH PLSQL_CMP_SWITCHS_DIFF PLSQL_DEBUG PQ_SLAVE_MISMATCH PX_MISMATCH REMOTE_MAPPING_MISMATCH REMOTE_TRANS_MISMATCH ROLL_INVALID_MISMATCH ROW_LEVEL_SEC_MISMATCH SLAVE_QC_MISMATCH SQL_ID SQL_TYPE_MISMATCH STATS_ROW_MISMATCH STB_OBJECT_MISMATCH TOP_LEVEL_DDL_MISMATCH TOP_LEVEL_RPI_CURSOR TRANSLATION_MISMATCH TYPCHK_DEP_MISMATCH TYPECHECK_MISMATCH UNBOUND_CURSOR USER_BIND_PEEK_MISMATCH
------------ ---------------------- ------------------- ------------- ----------------------- -------------- --------------------- ----------------------------- --------------------- ----------------- --------------------- -------------- ---------------- ------------------- -------------------------- ---------------- ------------------------ ---------------- ----------------- -------------------- ------------------- ------------ ---------------- ----------------- ---------------- -------------------- -------------------- ------------------------ ----------------------- --------------------- ------------------------- ----------------- --------------------- ------------------- -------------------- ------------------- ------------------ ----------------------- ---------------- --------------------- ----------------- ---------------------- ----------- ----------------- ----------- ----------------------- --------------------- --------------------- ---------------------- ----------------- ------------- ----------------- ------------------ ------------------- ---------------------- -------------------- -------------------- ------------------- ------------------ -------------- -----------------------
N N N Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N fndaxz4n1gdsg N N N N N N N N N N
SQL>
查询出来只有一条记录。
只有CHILD_ADDRESS, CHILD_NUMBER, ADDRESS这三个字段的值不一样。
SQL> SELECT distinct
2 ACL_MISMATCH, ANYDATA_TRANSFORMATION,
3 AUTH_CHECK_MISMATCH, BIND_MISMATCH, BIND_PEEKED_PQ_MISMATCH,
4 BIND_UACS_DIFF, BUFFERED_DML_MISMATCH, --CHILD_ADDRESS, CHILD_NUMBER, ADDRESS,
5 CROSSEDITION_TRIGGER_MISMATCH, CURSOR_PARTS_MISMATCH,
6 DESCRIBE_MISMATCH, DIFFERENT_LONG_LENGTH, DIFF_CALL_DURN,
7 EDITION_MISMATCH, EXPLAIN_PLAN_CURSOR, FLASHBACK_ARCHIVE_MISMATCH,
8 FLASHBACK_CURSOR, FLASHBACK_TABLE_MISMATCH, FORCE_HARD_PARSE,
9 INCOMPLETE_CURSOR, INCOMP_LTRL_MISMATCH, INST_DRTLD_MISMATCH,
10 INSUFF_PRIVS, INSUFF_PRIVS_REM, LANGUAGE_MISMATCH,
11 LITERAL_MISMATCH, LITREP_COMP_MISMATCH, LOAD_OPTIMIZER_STATS,
12 LOAD_RUNTIME_HEAP_FAILED, LOCK_USER_SCHEMA_FAILED, LOGICAL_STANDBY_APPLY,
13 LOGMINER_SESSION_MISMATCH, MULTI_PX_MISMATCH, MV_QUERY_GEN_MISMATCH,
14 MV_REWRITE_MISMATCH, MV_STALEOBJ_MISMATCH, NO_TRIGGER_MISMATCH,
15 OPTIMIZER_MISMATCH, OPTIMIZER_MODE_MISMATCH, OUTLINE_MISMATCH,
16 OVERLAP_TIME_MISMATCH, PDML_ENV_MISMATCH, PLSQL_CMP_SWITCHS_DIFF,
17 PLSQL_DEBUG, PQ_SLAVE_MISMATCH, PX_MISMATCH,
18 REMOTE_MAPPING_MISMATCH, REMOTE_TRANS_MISMATCH, ROLL_INVALID_MISMATCH,
19 ROW_LEVEL_SEC_MISMATCH, SLAVE_QC_MISMATCH, SQL_ID,
20 SQL_TYPE_MISMATCH, STATS_ROW_MISMATCH, STB_OBJECT_MISMATCH,
21 TOP_LEVEL_DDL_MISMATCH, TOP_LEVEL_RPI_CURSOR, TRANSLATION_MISMATCH,
22 TYPCHK_DEP_MISMATCH, TYPECHECK_MISMATCH, UNBOUND_CURSOR,
23 USER_BIND_PEEK_MISMATCH
24 FROM v$sql_shared_cursor
25 WHERE sql_id IN ('ayhn8kx4p011p');
ACL_MISMATCH ANYDATA_TRANSFORMATION AUTH_CHECK_MISMATCH BIND_MISMATCH BIND_PEEKED_PQ_MISMATCH BIND_UACS_DIFF BUFFERED_DML_MISMATCH CROSSEDITION_TRIGGER_MISMATCH CURSOR_PARTS_MISMATCH DESCRIBE_MISMATCH DIFFERENT_LONG_LENGTH DIFF_CALL_DURN EDITION_MISMATCH EXPLAIN_PLAN_CURSOR FLASHBACK_ARCHIVE_MISMATCH FLASHBACK_CURSOR FLASHBACK_TABLE_MISMATCH FORCE_HARD_PARSE INCOMPLETE_CURSOR INCOMP_LTRL_MISMATCH INST_DRTLD_MISMATCH INSUFF_PRIVS INSUFF_PRIVS_REM LANGUAGE_MISMATCH LITERAL_MISMATCH LITREP_COMP_MISMATCH LOAD_OPTIMIZER_STATS LOAD_RUNTIME_HEAP_FAILED LOCK_USER_SCHEMA_FAILED LOGICAL_STANDBY_APPLY LOGMINER_SESSION_MISMATCH MULTI_PX_MISMATCH MV_QUERY_GEN_MISMATCH MV_REWRITE_MISMATCH MV_STALEOBJ_MISMATCH NO_TRIGGER_MISMATCH OPTIMIZER_MISMATCH OPTIMIZER_MODE_MISMATCH OUTLINE_MISMATCH OVERLAP_TIME_MISMATCH PDML_ENV_MISMATCH PLSQL_CMP_SWITCHS_DIFF PLSQL_DEBUG PQ_SLAVE_MISMATCH PX_MISMATCH REMOTE_MAPPING_MISMATCH REMOTE_TRANS_MISMATCH ROLL_INVALID_MISMATCH ROW_LEVEL_SEC_MISMATCH SLAVE_QC_MISMATCH SQL_ID SQL_TYPE_MISMATCH STATS_ROW_MISMATCH STB_OBJECT_MISMATCH TOP_LEVEL_DDL_MISMATCH TOP_LEVEL_RPI_CURSOR TRANSLATION_MISMATCH TYPCHK_DEP_MISMATCH TYPECHECK_MISMATCH UNBOUND_CURSOR USER_BIND_PEEK_MISMATCH
------------ ---------------------- ------------------- ------------- ----------------------- -------------- --------------------- ----------------------------- --------------------- ----------------- --------------------- -------------- ---------------- ------------------- -------------------------- ---------------- ------------------------ ---------------- ----------------- -------------------- ------------------- ------------ ---------------- ----------------- ---------------- -------------------- -------------------- ------------------------ ----------------------- --------------------- ------------------------- ----------------- --------------------- ------------------- -------------------- ------------------- ------------------ ----------------------- ---------------- --------------------- ----------------- ---------------------- ----------- ----------------- ----------- ----------------------- --------------------- --------------------- ---------------------- ----------------- ------------- ----------------- ------------------ ------------------- ---------------------- -------------------- -------------------- ------------------- ------------------ -------------- -----------------------
N N N Y N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N ayhn8kx4p011p N N N N N N N N N N
N N N Y N N N N N N N N N N N N N N N N N N N N N N Y N N N N N N N N N N N N N N N N N N N N N N N ayhn8kx4p011p N N N N N N N N N N
N N N N N N N N N N N N N N N N N N N N N N N N N N Y N N N N N N N N N N N N N N N N N N N N N N N ayhn8kx4p011p N N N N N N N N N N
SQL>
查询出来只有三条记录。
SQL> SELECT sql_id, count(1)
2 FROM v$sql_shared_cursor
3 WHERE sql_id IN ('fndaxz4n1gdsg', 'ayhn8kx4p011p')
4 group by sql_id
5 ;
SQL_ID COUNT(1)
------------- ----------
ayhn8kx4p011p 658
fndaxz4n1gdsg 201
SQL>
没有发现什么不同却产生了太多的Version Count。
- SQL ordered by Version Count
- SQL ordered by Reads(源码)
- SQL group by & count
- Oracle 通过AWR的SQL ordered by Gets和SQL ordered by Reads诊断问题
- count,group by,having(SQL)
- sql查询 -count,group by,havi..
- SQL GROUP BY 无记录 COUNT
- sql中group by ,order by,sum,count用法
- 用SQL生成awr报表中的“SQL ordered by Elapsed Time” 部分
- 用SQL生成awr报表中的“SQL ordered by Elapsed Time” 部分
- How to Interpret the "SQL ordered by Physical Reads (UnOptimized)" Section in AWR (文档 ID 1466035.1)
- SQL语句:用count求group by分组的个数
- sql server 2008关联统计(sum、count、case、group by)
- SQL语句(IN、NOT IN、COUNT、GROUP BY)
- sql server 中的group by 和 having count
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- C# 多线程基础,仅以此心得献给那些渴望学习多线程的朋友
- linux下安装hadoop-2.0.0-alpha(双namenode federation)安装过程整理
- C#向共享文件夹上传及下载文件
- VC实现查找纯真数据库
- 树状数组 经理的烦恼
- SQL ordered by Version Count
- ASP.NET MVC - 漫谈ActionMethodDispatcher
- 關于在WIN32調用一些Zw系列的文件操作函數.
- IOS学习笔记20—UIActivityIndicatorView、UIProgressView
- 实例repeater 分页、表头不动、添加列序号、日期分隔符转换(datareader存储过程实现)
- How to: Debug a Release Build (vs2010级以上版本Release下调试设置)
- Error C2662, cannot convert ‘this’ pointer from ‘const class ’ to ‘class &’
- PCI配置空间简介
- iphone 开发中 拨打电话等的操作