产生trace文件的全部的步骤
shutdown immediate
startup nomount
oradebug setmypid
oradebug tracefile_name
alter session set events '10046 trace name context forever,level 12' ;
alter database mount;
alter database open ;
alter session set events '10046 trace name context off' ;
oradebug close_trace;
trace内容 部分记录
1.PARSING IN CURSOR #140560609199296是什么意思
在 Oracle 的跟踪文件(. trc 文件)中,"END OF STMT" 行表示 SQL 语句的执行已经结束。
当 Oracle 数据库执行一个 SQL 语句时,它会在跟踪文件中生成一系列的事件和统计信息,以记录执行过程中的各种细节。"END OF STMT" 是这些信息的结尾标识,表示当前 SQL 语句已经完成执行。
在紧随 "END OF STMT" 行之后,你可能会看到与 SQL 语句执行相关的其他信息,如 CPU 使用、I/ O 操作、等待事件、执行计划等等,这些信息可以帮助你分析 SQL 的性能和执行情况。
需要注意的是,“END OF STMT” 行的出现并不意味着 SQL 的执行一定是成功的。它只表示 SQL 的执行已经到达了结束点,但实际的执行结果可能需要进一步检查。如果在跟踪文件中出现了错误信息或异常情况,通常会在 "END OF STMT" 之前打印。
总之,"END OF STMT" 行标志着 SQL 语句的执行结束,并且在跟踪文件中提供了有关 SQL 执行过程和性能的额外信息。
2.END OF STMT是什么意思
在 Oracle 的跟踪文件(. trc 文件)中,"PARSING IN CURSOR" 行提供了正在解析的 SQL 语句的有关信息,其中包括以下各个字段的含义:
len= 499 :SQL 语句的长度,以字符为单位。
dep= 1 :语句的深度,表示语句是第几层次进行的解析。通常情况下,该值为 1 ,表示这是最外层次的语句解析。
uid= 0 :用户 ID,表示执行 SQL 语句的用户 ID。
oct= 3 :优化级别,表示 SQL 语句的优化级别。其中,0 表示基于规则的优化,1 表示基于成本的优化,2 表示基于统计信息的优化,3 表示基于自动跟踪收集的成本信息的优化。
lid= 0 :语言环境 ID,表示使用的语言环境 ID。
tim= 1694229904793009 :时间戳,表示 SQL 语句解析开始的时间(单位为毫秒)。
hv= 1830981823 :哈希值,指示 SQL 语句的哈希值。
ad= '1267ae1a8' :地址,表示 SQL 语句在共享 SQL 区存储的地址。
sqlid= '6wmch15qk545z' :SQL ID,表示 SQL 语句的唯一标识符。
这些信息可以帮助你更好地理解 SQL 语句在 Oracle 数据库中的解析过程和运行情况。例如,你可以使用它们来跟踪特定的游标、查看 SQL 语句的长度、了解优化级别以及找到 SQL 语句的地址和唯一标识符等。
3.BINDS #140560609172424: 是什么意思
在 Oracle 的跟踪文件(. trc 文件)中,"BINDS" 行提供了正在绑定的变量的相关信息。这些变量通常是在 SQL 语句中使用的占位符,通过变量绑定机制将其与实际的数值进行绑定。
以下是 "BINDS" 行的示例:
BINDS
Bind
oacdty= 01 mxl= 32 ( 06 ) mxlc= 00 mal= 00 scl= 00 pre= 00
oacflg= 08 fl2= 0001 frm= 01 csi= 123 siz= 32 off = 0
kxsbbbfp= 2 af7d4823d10 bln= 32 avl= 06 flg= 09
value = "John"
其中,“BINDS
以下是一些字段的意义:
Bind
oacdty= 01 :数据类型代码,表示绑定变量的数据类型。
mxl= 32 ( 06 ) :最大长度,表示变量的最大长度(字节),括号中的 06 表示 Unicode 字符的长度。
oacflg= 08 :标志位,表示绑定选项的标志位。
value = "John" :绑定变量的值。
这些信息可以帮助你了解正在绑定的变量的类型、长度和值。通过查看绑定变量的信息,你可以更好地理解 SQL 语句的执行过程,并进行性能分析和故障排查。
4.EXEC #140560603068344:c=21,e=20,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=2874733959,tim=1694229904813780 是什么意思
在 Oracle 的跟踪文件(. trc 文件)中,"EXEC" 行提供了正在执行的 SQL 语句的相关统计信息。以下是该行中各个字段的含义:
c= 21 :CPU 时间(单位为 centiseconds),表示此次执行消耗的 CPU 时间。
e= 20 :等待时间(单位为 centiseconds),表示此次执行的等待时间。
p= 0 :物理读取次数(单位为 blocks),表示此次执行进行的物理读取次数。
cr= 0 :逻辑读取次数(单位为 blocks),表示此次执行进行的逻辑读取次数。
cu= 0 :更新次数,表示此次执行进行的数据修改次数。
mis= 0 :缺失次数,表示此次执行查找缓存时发生的缺失次数。
r= 0 :行数,表示此次执行返回的行数。
dep= 1 :语句的深度,表示语句是第几层次进行的执行。通常情况下,该值为 1 ,表示这是最外层次的语句执行。
og= 4 :优化级别,表示 SQL 语句的优化级别。其中,4 表示基于自动跟踪收集的成本信息的优化。
plh= 2874733959 :保留信息,表示此次执行的保留信息标识符。
tim= 1694229904813780 :时间戳,表示 SQL 语句执行开始的时间(单位为毫秒)。
这些信息可以帮助你了解 SQL 语句的执行情况,包括 CPU 和等待时间、物理和逻辑读取次数、更新次数、缺失次数以及返回的行数等。通过查看这些统计信息,你可以进行性能分析和优化,定位潜在的性能问题,并做出相应的调整。
5.FETCH #140560603068344:c=3,e=2,p=0,cr=2,cu=0,mis=0,r=0,dep=1,og=4,plh=2874733959,tim=1694229904813787 呢
在 Oracle 的跟踪文件(. trc 文件)中,"FETCH" 行提供了执行 SQL 查询并获取结果的相关统计信息。以下是该行中各个字段的含义:
c= 3 :CPU 时间(单位为 centiseconds),表示这次 FETCH 操作消耗的 CPU 时间。
e= 2 :等待时间(单位为 centiseconds),表示这次 FETCH 操作的等待时间。
p= 0 :物理读取次数(单位为 blocks),表示这次 FETCH 操作进行的物理读取次数。
cr= 2 :逻辑读取次数(单位为 blocks),表示这次 FETCH 操作进行的逻辑读取次数。
cu= 0 :更新次数,表示这次 FETCH 操作进行的数据修改次数。
mis= 0 :缺失次数,表示这次 FETCH 操作在查找缓存时发生的缺失次数。
r= 0 :行数,表示这次 FETCH 操作返回的行数。
dep= 1 :语句的深度,表示语句是第几层次进行的 FETCH 操作。
og= 4 :优化级别,表示 SQL 语句的优化级别。
plh= 2874733959 :保留信息,表示此次 FETCH 操作的保留信息标识符。
tim= 1694229904813787 :时间戳,表示 FETCH 操作开始的时间(单位为毫秒)。
这些统计信息可以帮助你了解 FETCH 操作的性能情况,包括 CPU 和等待时间、物理和逻辑读取次数、更新次数以及返回的行数等。通过查看这些信息,你可以进行性能分析和优化,判断是否存在潜在的性能问题,并做出相应的调整。
6.CLOSE #140560603068344:c=0,e=0,dep=1,type=3,tim=1694229904813794 呢
在 Oracle 的跟踪文件(. trc 文件)中,"CLOSE" 行提供了关闭游标的相关统计信息。以下是该行中各个字段的含义:
c= 0 :CPU 时间(单位为 centiseconds),表示该 CLOSE 操作消耗的 CPU 时间。
e= 0 :等待时间(单位为 centiseconds),表示该 CLOSE 操作的等待时间。
dep= 1 :语句的深度,表示语句是第几层次进行的 CLOSE 操作。
type = 3 :操作类型,表示该 CLOSE 操作的类型。值为 3 表示关闭游标的操作。
tim= 1694229904813794 :时间戳,表示 CLOSE 操作开始的时间(单位为毫秒)。
CLOSE 操作用于显式地关闭已打开的游标,从而释放与游标相关的资源。通过查看 CLOSE 行中的统计信息,你可以了解 CLOSE 操作的性能情况,包括 CPU 和等待时间等。这些信息可以帮助你分析和优化代码,确保合理地使用游标并及时释放资源,以提高系统性能和资源利用率。