oracle跟踪sql语句

跟踪sql语句先用V$SQL 找到大概语句,记录下ADDRESS ,再到v$sqltext里查找完整语句!

例如:

先执行

select * from V$SQL t order by t.FIRST_LOAD_TIME desc;

找到语句sql_text,长度为1000,如果内容完全,则不管,不完全则使用ADDRESS

select * from v$sqltext t where t.ADDRESS='1AD04644' order by t.PIECE asc;

可以用listagg连接sql语句,得到完整语句

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
                 进行数据过滤的谓词 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值