ORACLE提供了记录SQL分析执行情况和解析跟踪文件的工具:SQL TRACE和TKPROF。下面记录一下设置跟踪及解析跟踪文件的过程。
一 打开跟踪开关
在打开控制跟踪开闭的开关前,先确定一些初始化参数的设置情况。
这里要确认的有四个参数:STATISTICS_LEVEL, TIMED_STATISTICS, USER_DUMP_DEST, MAX_DUMP_FILE_SIZE。
sys$orcl@localhost.localdomain SQL> show parameters statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
timed_os_statistics integer 0
timed_statistics boolean TRUE
sys$orcl@localhost.localdomain SQL> show parameters dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_core_dump string partial
background_dump_dest string /u01/app/oracle/admin/orcl/bdump
core_dump_dest string /u01/app/oracle/admin/orcl/cdump
max_dump_file_size string UNLIMITED
shadow_core_dump string partial
user_dump_dest string /u01/app/oracle/admin/orcl/udump
在确认这些参数设置正常之后,打开控制跟踪的开关参数:SQL_TRACE。根据是trace整个数据库还是单个session,分别使用alter session和alter system修改SQL_TRACE。
sys$orcl@localhost.localdomain SQL> show parameters sql_trace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sql_trace boolean FALSE
sys$orcl@localhost.localdomain SQL> alter session set sql_trace=true;
Session altered.
sys$orcl@localhost.localdomain SQL> show parameters sql_trace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sql_trace boolean TRUE
二 执行一些SELECT语句,之后关闭会话。
三 使用TKPROF对产生的trc文件进行解析,解析后的文件即可以用于查看会话过程中SQL语句的分析和执行情况及各种统计信息。
[oracle@localhost udump]$ pwd
/u01/app/oracle/admin/orcl/udump
[oracle@localhost udump]$ ls -lt |head
total 736
-rw-r----- 1 oracle oinstall 2467 Oct 12 18:04 orcl_ora_6127.trc
-rw-r----- 1 oracle oinstall 49304 Oct 12 17:23 orcl_ora_5917.trc
-rw-r----- 1 oracle oinstall 3121 Oct 12 16:54 orcl_ora_5770.trc
-rw-r----- 1 oracle oinstall 689 Oct 12 07:47 orcl_ora_2620.trc
-rw-r----- 1 oracle oinstall 632 Oct 12 07:47 orcl_ora_2592.trc
-rw-r----- 1 oracle oinstall 2255 Oct 11 22:05 orcl_ora_27764.trc
-rw-r----- 1 oracle oinstall 1632 Oct 11 09:46 orcl_ora_3772.trc
-rw-r----- 1 oracle oinstall 689 Oct 11 09:16 orcl_ora_3468.trc
[oracle@localhost udump]$ tkprof orcl_ora_6127.trc test.txt explain=y sys=n
TKPROF: Release 10.2.0.1.0 - Production on Tue Oct 12 18:10:25 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
[oracle@localhost udump]$ ls -lt |head
total 732
-rw-r--r-- 1 oracle oinstall 2866 Oct 12 18:10 test.txt
-rw-r----- 1 oracle oinstall 2467 Oct 12 18:04 orcl_ora_6127.trc
-rw-r----- 1 oracle oinstall 49304 Oct 12 17:23 orcl_ora_5917.trc
-rw-r----- 1 oracle oinstall 3121 Oct 12 16:54 orcl_ora_5770.trc
-rw-r----- 1 oracle oinstall 689 Oct 12 07:47 orcl_ora_2620.trc
-rw-r----- 1 oracle oinstall 632 Oct 12 07:47 orcl_ora_2592.trc
-rw-r----- 1 oracle oinstall 2255 Oct 11 22:05 orcl_ora_27764.trc
-rw-r----- 1 oracle oinstall 1632 Oct 11 09:46 orcl_ora_3772.trc
-rw-r----- 1 oracle oinstall 689 Oct 11 09:16 orcl_ora_3468.trc
[oracle@localhost udump]$ less test.txt
至此,完成了设置SQL TRACE跟踪SQL并解析跟踪文件的操作。当然,这只是万里长城的第一步,从解析后的文件中分析查找性能问题,优化SQL,才是根本的目的。