Oracle SQL语句追踪


1  SQL语句追踪

  追踪SQL语句的执行过程需要在Oracle服务器端进行,Oracle服务器端会检测并记录访问进程所执行的所有SQL语句。下面使用的命令都是在命令行模式下执行的,所以我们需要使用命令行以管理员身份登陆Oracle数据库。下面就是该工具使用的详细步骤。

  首先要追中SQL语句,我们需要确定追踪客户端进程的会话ID,下面命令枚举了当前服务器所有访问进程会话ID和串口,然后选择需要检测的会话ID和串口。

Select username, sid, serial# from v$session where username is not null;

  然后针对选中的会话ID和串口进行SQL语句追踪,如下命令所示。

EXECUTE sys.dbms_system.set_sql_trace_in_session(10,  2642, TRUE);

  开始追踪SQL语句后,我们可以在客户端进行操作,而这些操作过程使用的SQL语句都将被记录下来,直到我们结束SQL语句追踪。

  最后客户端操作完成之后,使用下面命令便可以结束SQL语句追踪。

EXECUTE sys.dbms_system.set_sql_trace_in_session(10,  2642, FALSE);

  追中结束后Oracle服务端文件夹下会产生一个最新的.trc后缀的文件,我们可以使用Search Everything工具查找最近时间生产的.trc文件,然后使用tkprof工具对该文件进行解析。

2 TRC文件解析

  解析生成的.trc文件,需要使用tkprof工具,该工具有非常多的复杂参数可供使用,如果不做复杂要求,可以使用下面简单的命令将.trc文件输出成文本文件。

  解析命令如下:

tkprof sqlplus_007.trc out.txt

    sqlplus_007.trc为数据追踪文件

    out.txt 为输出格式化文件

  打开out.txt文件,便可以查阅到SQL语句的执行情况。

相关内容