如何使用Oracle TRCA分析10046 Trace RAW文件

这篇文章将为大家详细讲解有关如何使用Oracle TRCA分析10046 Trace RAW文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

 

Oracle 10046是我们常用的一种性能诊断工具。它可以将SQL执行过程中,每个步骤操作的内容、时间和对象等细节信息记录在Trace文件里面。

 

10046直接生成的Trace文件我们称为RAW格式文件,RAW格式记录了所有的步骤操作细节。直接阅读RAW文件可以帮助我们更细的理解Oracle行为方式,但是RAW格式一般都是体积较大,可读性较差。

 

Tkprof是随着10046 Trace工具推出的一个小工具,用于处理RAW格式文件。Tkprof可以将跟踪的文件步骤抽取为各个SQL语句的分项统计,并且依据时间和CPU情况进行排序处理。但是,基于命令行的Tkprof也有一些缺点,比如对SQL语句之间关联性(Recursive Call)的分析不是很强,一些细节信息缺失等。

 

于是,Oracle Support提供了另一种分析RAW格式文件的手段方式,就是TRCATrace Analyzer)工具包。

 

1、安装和卸载

 

TRCAOracle Support提供了一个免费工具,我们可以从MOS 224270.1中下载安装包和说明文档。

 

Tkprof不同的是,TRCA是需要额外安装在数据库服务器中的工具。运行过程需要额外的表空间和账号对应。

 

我们首先将其zip包上传到服务器目录上,解压到目录。

 

 

[oracle@SimpleLinux upload]$ ls -l | grep trca

drwxr-xr-x 7 root   root       4096 Oct 25 09:36 trca

 

 

创建TRCA表空间,表空间大小尽量维持在200M-500M左右,过小的存储容易在运行处理的时候报错。

 

 

SQL> create tablespace trcatbl datafile size 100m autoextend on

  2  extent management local uniform. size 1m

  3  segment space management auto;

 

Tablespace created

 

[root@SimpleLinux upload]# chown -R oracle:oinstall trca

[root@SimpleLinux upload]# ls -l

total 716

-rwxr-xr-x 1 oracle oinstall   3037 Oct 22 09:42 hugepages_settings.sh

drwxr-xr-x 3 root   root       4096 Oct 15 11:28 iftop-0.17

-rw-r--r-- 1 root   root     716800 Oct 15 11:27 iftop-0.17.tar.gz

drwxr-xr-x 7 oracle oinstall   4096 Oct 25 09:36 trca

 

 

进入trca目录,在其中可以运行安装脚本。

 

 

[oracle@SimpleLinux upload]$ cd trca/

[oracle@SimpleLinux trca]$ ls -l

total 36

drwxr-xr-x 2 root root  4096 Oct 25 09:36 dict

drwxr-xr-x 2 root root  4096 Oct 25 09:36 doc

drwxr-xr-x 2 root root  4096 Oct 25 09:36 install

drwxr-xr-x 2 root root  4096 Oct 25 09:36 run

-rw-r--r-- 1 root root 16227 Oct 25 09:36 trca_instructions.html

drwxr-xr-x 2 root root  4096 Oct 25 09:36 utl

[oracle@SimpleLinux trca]$ cd install/

[oracle@SimpleLinux install]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 25 09:40:59 2013

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL>

 

 

执行安装脚本tacreate.sql,根据提示内容和信息回答脚本问题。

 

 

SQL> @tacreate.sql

        zip warning: name not matched: *_ta*.log

 

zip error: Nothing to do! (TRCA_installation_logs_archive.zip)

 

Below are the list of online tablespaces in this database.

Decide which tablespace you wish to create the TRCANLZR tables

and indexes.  This will also be the TRCANLZR user default tablespace.

 

(篇幅原因,有省略……)

 

TRCA users must be granted TRCA_USER_ROLE before using this tool.

TACREATE completed. Installation completed successfully.

 

 

注意,上面部分代码片段截取比较多。在安装过程中,有两个问题需要注意:首先是输入TRCA工具表空间和临时表空间名称,安装脚本会将其列出来,我们输入的时候要注意大小写。另一个是安装过程中需要输入一个可以用TRCA工具的Oracle用户名,这里可以输入一个。但是不用着急,以后可以通过赋予角色TRCA_USER_ROLE给其他用户来让他人有使用权限。

 

 

SQL> grant TRCA_USER_ROLE to public

  2  ;

 

Grant succeeded.

 

 

到此,TRCA就安装完成。

 

卸载TRCA比较简单,只需要单独执行install目录中的tadrop.sql脚本就可以了。

 

 

[oracle@SimpleLinux install]$ ls -l | grep tadrop

-rw-r--r-- 1 root root   1308 Oct 25 09:36 tadrop.sql

[oracle@SimpleLinux install]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 25 09:47:48 2013

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL> @tadrop.sql

Uninstalling TRCA, please wait

 

(篇幅原因,有省略……)

SQL>

SQL> SET ECHO OFF;

TADUSR completed.

TADROP completed.

 

 

2Trace RAW实验文件准备

 

为了进行实验,我们先准备出一个10046Trace文件。

 

 

SQL> select value from v$diag_info where name='Default Trace File';

VALUE

----------------------------------------------------------------------

/u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_3121.trc

 

 

SQL> alter session set events '10046 trace name context forever, level 12';

Session altered.

 

SQL> select count(*) from dba_objects;

  COUNT(*)

----------

     75296

 

SQL> alter session set events '10046 trace name context off';

Session altered.

 

[oracle@SimpleLinux trace]$ ls -l | grep 3121

-rw-r----- 1 oracle oinstall   21352 Oct 25 09:06 ora11g_ora_3121.trc

-rw-r----- 1 oracle oinstall     244 Oct 25 09:06 ora11g_ora_3121.trm

 

 

额外说明:11g中,Trace文件生成后,还会有对应的一个trm文件。根据MOS的说明,trm文件用于Oracle官方的一些性能诊断工具,其中包括一些Metadata信息。所以,还是不要轻易删除掉。

 

3、运行TRCA分析

 

得到trace文件目录之后,就可以进行分析了。TRCA是一个性能分析工具,但是自身的CPU和内存消耗量是不大的。原则上,我们还是选择使用Trace源数据库进行分析就好。

 

运行TRCA,需要在sqlplus中运行run目录的脚本。

 

 

[oracle@SimpleLinux trca]$ cd run/

[oracle@SimpleLinux run]$ ls -l

total 20

-rw-r--r-- 1 root root 8587 Oct 25 09:36 trcanlzr.sql

-rw-r--r-- 1 root root 7784 Oct 25 09:36 trcasplit.sql

 

 

使用具有TRCA_USER_ROLE权限的用户执行程序。

 

 

[oracle@SimpleLinux run]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 25 09:54:32 2013

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL> @trcanlzr.sql /u01/app/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_3121.trc

 

PL/SQL procedure successfully completed.

 

Parameter 1:

Trace Filename or control_file.txt (required)

 

 

TKPROF: Release 11.2.0.3.0 - Development on Fri Oct 25 10:07:21 2013

 

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

(篇幅原因,有省略……)

 

  adding: trca_e79866.html (deflated 90%)

  adding: trca_e79866.log (deflated 83%)

  adding: trca_e79866_nosort.tkprof (deflated 86%)

  adding: trca_e79866_sort.tkprof (deflated 86%)

  adding: trca_e79866.txt (deflated 87%)

  adding: trcanlzr_error.log (deflated 83%)

test of trca_e79866.zip OK

deleting: trcanlzr_error.log

Archive:  trca_e79866.zip

  Length     Date   Time    Name

 --------    ----   ----    ----

   172492  10-25-13 10:07   trca_e79866.html

    16093  10-25-13 10:07   trca_e79866.log

    22867  10-25-13 10:07   trca_e79866_nosort.tkprof

    22899  10-25-13 10:07   trca_e79866_sort.tkprof

    88541  10-25-13 10:07   trca_e79866.txt

 --------                   -------

   322892                   5 files

 

File trca_e79866.zip has been created

TRCANLZR completed.

SQL>


最后,在处理目录上,会出现一个新的压缩包,其中包括了RAW文件处理结果。


[oracle@SimpleLinux run]$ ls -l

total 60

-rw-r--r-- 1 oracle oinstall 39283 Oct 25 10:07 trca_e79866.zip

-rw-r--r-- 1 oracle oinstall  8587 Oct 25 09:36 trcanlzr.sql

-rw-r--r-- 1 oracle oinstall  7784 Oct 25 09:36 trcasplit.sql

注意,在处理过程中,有一个部分描述了处理的结果文件,其中包括处理日志、结果报告的htmltxt文件。另外,TRCA也融合了tkprof的功能,在结果文件中包括了排序和未排序处理的tkprof结果文件。

 

4TRCA结果分析

 

相对于tkprof的处理结果,TRCA的内容要丰富的多,而且处理结果可读性强得多。针对SQL中常见的recursive call的关系,TRCA html格式输出都有不错的处理展示。

首先在其中的是SQL消耗响应时间的统计情况。

还有针对Recursive Call关系,查看一个SQL语句执行过程中,是哪个环节消耗比较高。

针对每条SQL语句,我们也可以查看到执行计划和对应统计信息。

注意一个问题,TRCA是有处理门限值的。并不是每条语句都能出现在报告中,只有消耗达到一定程度(10%)的情况才会有体现。

借助Oracle提供的很多工具,我们可以方便的了解遇到的问题,进行分析处理。TRCA作为tkprof的一种补充,在报告可读性、信息详实程度上,有了很大的提升。

关于如何使用Oracle TRCA分析10046 Trace RAW文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。