学习v$sql,v$sqlarea,v$sqltext,v$sqlstats和v$sql_plan(原创)

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-678070
            http://hi.baidu.com/longredhao/blog/item/9d462b7fd44e98f72f73b31c.html
            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
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值