首页 > Linux操作系统 > Linux操作系统 > client端的sql语句跟踪
鉴于有时候客户会反映业务处理很慢,所以我们有必要学习如何追踪他们的sql语句,了解他们到底慢在哪里。下面是我在学习过程中的一些体会,由于本人纯属菜鸟,以下内容如有不妥,敬请各位大牛指点。
以下主要针对多用户使用共同账户连接服务器的情况。
1、首先获取client的IP、端口等信息 ipconfig/ifconfig
2、在服务器端查看具体哪个进程为客户端连接服务: $netstat -anp //具体含义 $man netstat(在window下c:>netstat --help)
3、根据客户提供的IP和端口号,找到对应的进程信息PID //这里,对应列的含义:Proto--协议 local address--本机IP
//foreign address--外连进来的IP PID/Program--进程号
找到后,可以通过$ps -ef | grep *** 查看相关信息
4、通过动态性能视图v$process,查看对应进程的详细信息,主要是该进程的内存地址。
SQL>select addr,spid,username from v$process where spid='进程号';
5、因为需要跟踪sql语句,所以需要先查看当前哪个用户正在执行哪些事务,有哪些sql,借助v$session、v$transaction
SQL>select addr,sid,username,s.status,process,sql_address,prev_sql_addr from v$session s,v$transaction t
where s.saddr=t.ses_addr and paddr='进程地址';
6、查询结果显示出对应用户的事务和sql语句的内存地址,接下来就可以根据v$sql视图进一步了解具体是哪些sql语句
SQL>select sql_text,address,hash_value from v$sql where address='sql语句地址';
7、查询结果显示具体sql语句内容,此时,SQL语句跟踪基本完成,可以把结果反映给客户,进行优化
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26715705/viewspace-722514/ ,如需转载,请注明出处,否则将追究法律责任。