V$SQL
V$SQL在子游标级别上列出了在共享sql区域的统计信息,他将原始sql文本展现为一行。V$SQL中的视图信息一般在sql执行的最后进行更新。然而,对于长时间执行的sql,每5秒会更新一次v$sql视图。这使得很容易查看长时间执行的sql在运行过程中带来的影响。
v$sql列说明,如没有特别说明,均指子游标
SQL_TEXT 当前正在执行的游标的sql文本的前1000个字符
SQL_FULLTEXT CLOB类型 整个sql文本,不用借助于V$SQL_TEXT视图来查看整个文本。
SQL_ID 库缓存中的SQL父游标的标志
SHARABLE_MEM 子游标使用的共享内存的大小,bytes
PERSISTENT_MEM 子游标生存时间中使用的固定内存的总量,bytes
RUNTIME_MEM 在子游标执行过程中需要的固定内存大小,bytes
SORTS 子游标发生的排序数量
LOADED_VERSIONS 显示上下文堆是否载入,1是,0否
USERS_OPENING 执行这个sql的用户数
FETCHES sql取数据的次数
EXECUTIONS 自从被载入共享池后,sql执行的次数
FIRST_LOAD_TIME 父游标产生的时间戳
PARSE_CALLS 解析调用的次数
DISK_CALLS 读磁盘的次数
DIRECT_WRITES 直接写的次数
BUFFER_GETS 直接从buffer中得到数据的次数
APPLICATION_WAIT_TIME 应用等待时间,毫秒
CONCURRENCY_WAIT_TIME 并发等待时间,毫秒
USER_IO_WAIT_TIME 用户IO等待时间
ROWS_PROCESSED SQL 解析sql返回的总行数
OPTIMIZER_MODE 优化器模式
OPTIMIZER_COST 优化器对于sql给出的成本
PARSING_USER_ID 第一个创建这个子游标的用户id
HASH_VALUES 解析产生的哈希值
CHILD_NUMBER 该子游标的数量
SERVICE 服务名
CPU_TIME 该子游标解析,执行和获取数据使用的CPU时间,毫秒
ELAPSED_TIME sql的执行时间,毫秒
INVALIDATIONS 该子游标的无效次数
MODULE 第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的模块名
ACTION 第一次解析该语句时,通过DBMS_APPLICAITON_INFO.SET_ACTION设置的动作名
IS_OBSOLETE 标记该子游标过期与否,当子游标过大时会发生这种情况
is_bind_sensitive 不仅指出是否使用绑定变量窥测来生成执行计划,而且指出这个执行计划是否依赖于窥测到的值。如果是,这个字段会被设置为Y,否则会被设置为N。
is_bind_aware 表明游标是否使用了扩展的游标共享。如果是,这个字段会被设置为Y,如果不是,这个字段会被设置为N。如果是设置为N,这个游标将被废弃,不再可用。
is_shareable 表明游标能否被共享。如果可以,这个字段会被设置为Y,否则,会被设置为N。如果被设置为N,这个游标将被废弃,不再可用。
v$sqlarea
v$sqlarea的字段定义和v$sql基本一致,不同的是V$SQLAREA是在父游标级别上统计的sql信息,v$sql的汇总表,进行了group by hash_value,sql_id的汇总。
v$sqltext
本视图包括Shared pool中SQL语句的完整文本,一条SQL语句可能分成多个块被保存于多个记录内。
注:V$SQLAREA和v$sql中的SQL_TEXT字段只包括头1000个字符, SQL_FULLTEXT以CLOB方式包含了所有的字符
V$SQLTEXT列说明
HASH_VALUE SQL语句的Hash值
ADDRESS sql语句在SGA中的地址
SQL_TEXT SQL文本。
PIECE SQL语句块的序号
SQL_ID SQL id
COMMAND_TYPE 命令类型,如select、insert等
v$sqlstats
V$SQLSTATS是10g R2新加入到视图,该视图中保存着sql游标性能的统计信息。 V$SQLSTATS中的列定义和V$SQL与V$SQLAREA中的基本一致,但保存的信息时间更长。由于保存着完整的sql语句,使用起来也更快捷,不需要在将V$SQL和V$SQLTEXT进行关联查询。
v$sql_plan
该视图提供了一种方式检查那些执行过的并且仍在缓存中的cursor的执行计划。通常,该视图提供的信息与打印出的EXPLAIN PLAN非常相似,不过,EXPLAIN PLAN显示的是理论上的计划,并不一定在执行的时候就会被使用,但V$SQL_PLAN中包括的是实际被使用的计划。获自EXPLAIN PLAN语句的执行计划跟具体执行的计划可以不同,因为cursor可能被不同的session参数值编译(如,HASH_AREA_SIZE)。利用V$SQL_PLAN中数据可以:
确认当前的执行计划
鉴别创建表索引效果
寻找cursor包括的存取路径(例如,全表查询或范围索引查询)
鉴别索引的选择是否最优
决定是否最优化选择的详细执行计划(如,nested loops join)如开发者所愿。
V$SQL_PLAN的常用列说明:
除了一些新加列,本视图几乎包括所有的PLAN_TABLE列,那些同样存在于PLAN_TABLE 中的列拥有相同的值
ADDRESS 当前cursor父句柄位置
HASH_VALUE 在library cache中父语句的HASH值。ADDRESS和HASH_VALUE这两列可以被用于连接v$sqlarea查询cursor-specific信息。
CHILD_NUMBER 使用这个执行计划的子cursor数。ADDRESS,HASH_VALUE以及CHILD_NUMBER可被用于连接v$sql查询子cursor信息。
OPERATION 在 各步骤执行内部操作的名称,例如:TABLE ACCESS
OPTIONS 描述列OPERATION在操作上的变种,例如:FULL
OBJECT_NODE 用于访问对象的数据库链接database link的名称对于使用并行执行的本地查询该列能够描述操作中输出的次序。
OBJECT# 表或索引对象数量
OBJECT_OWNER 对于包含有表或索引的架构schema 给出其所有者的名称
OBJECT_NAME 表或索引名
OPTIMIZER 执行计划中首列的默认优化模式;例如,CHOOSE。比如业务是个存储数据库,它将告知是否对象是最优化的。
ID 在执行计划中分派到每一步的 序号 。
PARENT_ID 对ID步骤的输出进行操作的下一个执行步骤的ID 。
DEPTH 操作树的深度(或级) ,第一级操作为0级
POSITION 对于具有相同PARENT_ID的操作其相应的处理次序。
COST cost-based方式优化的操作开销的评估,如果语句使用rule-based方式,本列将为空。
CARDINALITY 根据 cost-based 方式 操作所访问的行数的评估。
BYTES 根据cost-based方式操作产生的字节的评估。
OTHER_TAG 其它列的内容说明。
PARTITION_START 范围存取分区中的开始分区。
PARTITION_STOP 范围存取分区中的结束分区。
PARTITION_ID 计算PARTITION_START和PARTITION_STOP这对列值的步数
OTHER 其它信息即执行步骤细节,供用户参考。
DISTRIBUTION 为了并行查询,存储用于从生产服务器到消费服务器分配列的方法
CPU_COST 根据cost-based方式CPU操作开销的评估。如果语句使用rule-based方式,本列为空。
IO_COST 根据cost-based方式I/O操作开销的评估。如果语句使用rule-based方式,本列为空。
TEMP_SPACE 根据cost-based方式操作(sort or hash-join)的临时空间占用评估。如果语句使用rule-based方式,本列为空。
ACCESS_PREDICATES 影响访问结构的谓词,例如,在范围索引查询中的开始或者结束位置。
FILTER_PREDICATES 进行数据过滤的谓词
关于如何使用上述视图,请查看如下文章
http://czmmiao.iteye.com/blog/1292412
参考至:《让Oracle跑得更快》谭怀远著
《Oracle DBA突击》张晓明著
http://docs.oracle.com/cd/E11882_01/server.112/e25513/dynviews_3043.htm http://space.itpub.net/24799772/viewspace-67807
http://docs.oracle.com/cd/E11882_01/server.112/e25513/dynviews_3054.htm
http://www.blogjava.net/javaex/articles/303553.html
http://www.rampant-books.com/art_oracle_v_sqlstats.htm
本文原创,转载请注明出处、作者
如有错误,欢迎指正
学习v$sql,v$sqlarea,v$sqltext,v$sqlstats和v$sql_plan(原创)
原创
©著作权归作者所有:来自51CTO博客作者wx6323d657ef2b3的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
v$sql,v$sqlarea,v$sqltext 和 v$sql_plan 说明
<br /> <br />一. 先看官网对这几个视图的说明(ORACLE 11gR2)<
sql documentation library oracle statistics -
v$sql v$sqlarea v$sqltext
三大SQL性能视图
三大 SQL 性能 视图 -
v$sql和v$sqlarea区别
version count
v$sql v$sqlarea -
v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别?
source:http://www.itpub.net/thread-181450-1-1.htmlv$sqltext存储的是完整的SQL,SQL被分割SQL> desc v$sqltextName &nb
数据库 休闲 v$sqlarea v$sql v$sqltext这三个视图提供的sql -
v$sql_plan看到不执行计划
cursor被flush出了library cache做法:再次重复执行几次即可看到;
sql library cache