10046可看到语句的执行过程,包括各种步骤、关联方式、分别在哪些步骤耗时多少、有哪些等待事件等。
1.数据库调用
分三个步骤:解析、执行和获取 解析: PARSING IN CURSOR #140186891763128 len=84 dep=0 uid=0 oct=3 lid=0 tim=1542789588408762 hv=2629212467 ad='9b65c8d8' sqlid='d2knts2fbd69m' select count(1) from dba_objects a,scott.tb_test2 b where a.object_id = b.object_id END OF STMT PARSE #140186891763128:c=14309,e=14309,p=0,cr=12,cu=0,mis=1,r=0,dep=0,og=1,plh=2135238665,tim=1542789588408759 PARSING IN CURSOR参数: len:SQL语句长度 dep:递归调用深度 uid:解析用户标识符,对应dba_users.user_id、v$sql.parsing_user_id oct:Oracle命令类型. 对应v$sql.command_type、v$session.command. create table:1 delete:7 select:3 insert:2 update:6 truncate:85 drop table:12 lid:解析模式标识符,对应dba_users.user_id、v$sql.parsing_schema_id tim:Timestamp.当前行写入文件时v$timer中的值 hv:sql hash value,对应v$sql.hash_value ad:sql address, 对应v$sql.address sqlid:sql id,对应v$sql.sql_id PARSE参数: c:CPU开销。9i之前厘秒,9i之后是微秒 e:运行时间。9i之前厘秒,9i之后是微秒 p:物理读次数 cr:逻辑读的数据块 cu:current模式读取的数据块 mis:1:硬解析 0:软解析 r:处理的行数 dep:递归调用深度 og:优化器模式: 1=All_Rows, 2=First_Rows, 3=Rule, 4=Choose tim:时间戳 plh:plan hash value,执行计划的hash值,对应v$sql_plan.plan_hash_value、v$sql_plan_statistics_all.plan_hash_value、v$sqlstats.plan_hash_value 解析出错时: PARSE ERROR #140092551821528:len=30 dep=0 uid=0 oct=3 lid=0 tim=1542780378216064 err=942 select count(1) from scott.tb PARSE ERROR参数: len: SQL语句长度 dep: 递归调用深度 uid: 解析用户标识符,对应dba_users.user_id、v$sql.parsing_user_id oct: Oracle命令类型. 对应v$sql.command_type、v$session.command lid: 解析模式标识符,对应dba_users.user_id、v$sql.parsing_schema_id tim:Timestamp. err:Oracle error code (e.g. ORA-XXXXX) reported 执行和获取: EXEC #[CURSOR]:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=2295886755,tim=0 FETCH #[CURSOR]:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=2295886755,tim=0 参数与PARSE参数相同
2.事务条目
XCTEND rlbk=0, rd_only=0, tim=1542780757243972 XCTEND参数: rlbk:1:rollback, 0:commit. rd_only :1:只读事务, 0:事务中有数据被修改. tim:时间戳
3.STAT条目
STAT #[CURSOR] id=1 cnt=1 pid=0 pos=1 obj=0 op='SORT AGGREGATE (cr=6 pr=0 pw=0 time=483 us)' STAT #[CURSOR] id=2 cnt=14 pid=1 pos=1 obj=75510 op='TABLE ACCESS FULL EMP (cr=6 pr=0 pw=0 time=432 us cost=2 size=0 card=14)' STAT参数: id:执行计划中指示行数据源顺序的标识符。通常一个执行计划的第一条STAT的id=1 cnt:当前行源返回的行数 pid:当前行源的父结点id pos:Position in explain plan. obj:行源的对象id,对应于dba_objects.object_id、v$sql_plan.object# op:执行的操作,如表访问、索引扫描、排序、联合等,对应v$sql_plan.operation STAT执行统计参数: cr:Consistent reads.逻辑读 pr:Physical reads.物理读 pw:Physical writes.物理写 time:消耗的时间,微秒 cost:CBO估计的成本 size:估计的数据量,单位为字节。基于对象的统计信息 card:估计的基数,基于对象的统计信息
4.WAIT条目
WAIT #140092549877616: nam='Disk file operations I/O' ela= 40 FileOperation=2 fileno=1 filetype=2 obj#=106 tim=1542780935083885 WAIT #140092549877616: nam='db file sequential read' ela= 8945 file#=1 block#=69315 blocks=1 obj#=106 tim=1542780935092868 WAIT #140092549877616: nam='db file sequential read' ela= 8859 file#=1 block#=69378 blocks=1 obj#=104 tim=1542780935101864 WAIT参数: nam:等待事件名称 ela:运行时间,微秒 p1:等待事件的第一个参数 p2:等待事件的第二个参数 p3:等待事件的第三个参数 obj#:对象编号,也就是dba_object.object_id tim:时间戳
5.绑定变量条目
BINDS #140092551821528: Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=1000000 frm=00 csi=00 siz=24 off=0 kxsbbbfp=7f69d6c94c20 bln=22 avl=02 flg=05 value=20 BINDS参数: Bind#N:绑定变量被使用的位置 oacdty: 绑定变量数据类型 mxl:绑定变量值的最大长度 mxlc :未知 mal:数组长度 scl:比例. pre:精度. oacflg:指示绑定选项的特殊标志 fl2:oacflg的第二部分 frm:未知 csi:数据库字符集或国际字符集的字符集标识符 siz:给该chunk分配的内存总量 off:该绑定缓冲区在chunk中的偏移 kxsbbbfp: 绑定地址 bln:绑定缓冲区长度 avl:实际值的长度 flg:绑定变量状态 value:绑定变量值 数据类型代码: 1 varchar2/nvarchar2 2 number 12 date 96 char/nchar 112 clob/nclob 113 blob 180 timestamp 常见字符集和标识符: 1 US7ASCII 31 WE8ISO8859P1 46 WE8ISO8859P15 170 EE8MSWIN1250 178 WE8MSWIN1252 871 UTF8 873 AL32UTF8 2000 AL16UTF16
6.释放游标
CLOSE #140092551821528:c=15,e=15,dep=0,type=0,tim=1542780378208132 参数: c:CPU开销。9i之前厘秒,9i之后是微秒 e:运行时间。9i之前厘秒,9i之后是微秒 dep:游标递归深度 type:type of close operation tim:Timestamp 时间戳
