技术开发 频道

监控操作系统进程对应SQL语句


二、通过进程ID查看ORACLE的SID
    比如,我们看到上面TOP语句中PID,我们可以根据这个PID,提取出ORACLE对应会话ID。
SQL>select ses.sid,ses.serial#,ses.username from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr;


   
在出现SPID提示时,输入上面显示的PID,我们这里输入15943

SQL> select ses.sid,ses.serial#,ses.username from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr; SID SERIAL# USERNAME ---------- ---------- ------------------------------ 106 5654 BILL

这里,查询到15943进程对应的会话ID为106。

三、跟踪会话
    如果我们只看一次SQL语句,可能无法判断程序性能,因此,我们最好跟踪一段时间该进程,这时,我们就要使用ORACLE提供的sys.dbms_system.set_sql_trace_in_session
函数进行跟踪,比如我们对上面的会话ID为106的会话进行跟踪,直接执行以下语句即可:
SQL> exec sys.dbms_system.set_sql_trace_in_session(106,5654,true);
--在一段时间后,一般是30分钟后,再把这个跟踪关闭。注意,一定要关闭,否则,TRACE文件会很大,也影响性能。要进行关闭,执行下面语句即可。
SQL> exec sys.dbms_system.set_sql_trace_in_session(106,5654,FALSE);
就是把最后的TRUE改为FALSE即可。

在关闭后,在后台就会产生一个跟踪文件,具体位置见:%oracle_base%/admin/sid/udump/ora_pid_sid.trc,之后把这个文件通过FTP拷贝到本地来进行分析。

四、分析TRACE文件
    我们这里使用ORACLE提供的一个分析工具,名字叫TKPROF,在DOS提示符下输入TKPROF,就可以看到帮助了。
命令格式如下:
tkprof tracefile outputfile [explain= ] [table= ]
[print= ] [insert= ] [sys= ] [sort= ]
Tracefile为trace文件
Outputfile为格化后的输出文件
Explain 登录的用户名及密码
SYS 是否生成属于SYS用户的信息,一般设置为no
例如:tkprof E:ora_15943_ora8.trc c:333.txt sys=no
将生成c:333.txt文件。

0
相关文章