oracle无法跟踪web发送的sql,如何通过跟踪客户端程序发出的sql的方法来优化SQL

news/2024/11/10 0:23:41 标签: oracle无法跟踪web发送的sql

简要说来,跟踪一个客户程序发出的SQL主要分成下面几步:

1) 识别要跟踪的客户端程序到数据库的连接(后面都用session代替),主要找出能唯一识别一个session的sid与serial#.

2) 设定相应的参数,如打开时间开关(可以知道一个sql执行了多长时间),存放跟踪数据的文件的位置、最大值。

3) 启动跟踪功能

4) 让系统运行一段时间,以便可以收集到跟踪数据

5) 关闭跟踪功能

6) 格式化跟踪数据,得到我们易于理解的跟踪结果。

现在就每一步,给出详细的说明:

1) 识别要跟踪的客户端程序到数据库的数据库连接

查询session信息(在sql*plus中运行):

set linesize 190

col machine format a30 wrap

col program for a40

col username format a15 wrap

set pagesize 500

select s.sid sid, s.SERIAL# "serial#", s.username, s.machine, s.program,

p.spid ServPID, s.server

from v$session s, v$process p

where p.addr = s.paddr ;

如得到的一个查询结果如下:

SID serial# USERNAME MACHINE PROGRAM SERVPID SERVER

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

8 3 SCOTT WORKGROUP\SUNNYXU SQLPLUS.EXE 388 DEDICATED

LOGON_TIME

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

2005.06.28 18:50:11

上面的结果中比较有用的列为:

sid, serial# : 这两个值联合起来唯一标识一个session

username : 程序连接数据库的用户名

machine : 连接数据库的程序所在的机器的机器名,可以hostname得到

program : 连接数据库的程序名,所有用java jdbc thin的程序的名字都一样,

servpid : 与程序对应的服务器端的服务器进程的进程号,在unix下比较有用

server : 程序连接数据库的模式:专用模式(dedicaed)、共享模式(shared)。

只有在专用模式下的数据库连接,对其进程跟踪才有效

logon_time : 程序连接数据库的登陆时间

根据machine, logon_time 可以方便的识别出一个数据库连接对应的session,从而得到该sesion的唯一标识sid, serial#, 为对该session进行跟踪做好准备

2) 设定相应的参数

参数说明:

timed_statistics : 收集跟踪信息时,是否将收集时间信息,如果收集,

则可以知道一个sql的各个执行阶段耗费的时间情况

user_dump_dest : 存放跟踪数据的文件的位置

max_dump_file_size : 放跟踪数据的文件的最大值,防止由于无意的疏忽,

使跟踪数据的文件占用整个硬盘,影响系统的正常运行

设置的方法:

SQL> exec sys.dbms_system.set_bool_param_in_session( -

sid => 8, -

serial# => 3, -

parnam => 'timed_statistics', -

bval => true);

SQL> alter system set user_dump_dest='c:\temp';

-- 注意这个语句会改变整个系统的跟踪文件存放的位置,所以我一般不改这个参数,而用系统的缺省值,要查看当前系统的该参数的值,可以用system用户登陆后:

SQL> show parameter user_dump_dest

SQL> exec sys.dbms_system.set_int_param_in_session( -

sid => 8, -

serial# => 3, -

parnam => 'max_dump_file_size', -

intval => 2147483647)

3) 启动跟踪功能

SQL> exec sys.dbms_system.set_sql_trace_in_session(8, 3, true);

注意,只有跟踪的session再次发出sql语句后,才会产生trc文件

4) 让系统运行一段时间,以便可以收集到跟踪数据

5) 关闭跟踪功能

SQL> exec sys.dbms_system.set_sql_trace_in_session(8,3,false);

6) 格式化跟踪数据,得到我们易于理解的跟踪结果。

对产生的trace文件进行格式化:

在命令提示符下,运行下面的命令

tkprof dsdb2_ora_18468.trc dsdb2_trace.out SYS=NO EXPLAIN=SCOTT/TIGER


http://www.niftyadmin.cn/n/1494297.html

相关文章

oracle的默认编码是,ORACLE 默认编码 GBK -UTF8编码

查看oracle数据库字符集:select userenv(language) from dual;SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 135337420 bytesFixed Size …

nodemailer + express + h5 拖拽文件上传 实现发送邮件

一、部署 1、部署Express 2、准备一个邮箱并开始SMTP服务 二、服务器端 三、客户端 四、效果: 转载于:https://www.cnblogs.com/cwxwdm/p/10601646.html

下载github指定文件夹下的内容

傻瓜操作 http://downgit.zhoudaxiaa.com/#/home 窒息操作 sudo apt-get install subversiongithubdir #!/usr/bin/env pythonimport sys,osif __name__ __main__:urlsys.argv[1]durlurl.replace(tree/master,trunk)cmdf"svn checkout {durl}"os.system(cmd)./g…

dockerfile 的最佳实践

Dockerfile 编写nginx容器 [rootmast nginx]# cat Dockerfile FROM centos MAINTAINER zhaoruidong RUN yum -y install gcc gcc-c make openssl-devel pcre-devel gd-devel iproute net-tools telnet wget curl && yum clean all && rm -rf /var/cache/…

Java配合爬虫代理IP采集大众点评店铺信息

大众点评店铺网址格式如下:http://www.dianping.com/shop/6000000/http://www.dianping.com/shop/6000001/ shop后面的ID是连续的,范围是1-1500万,当然有许多店铺是不存在的(404错误),实际的店铺数量在700万左右,这里是…

oracle oms启动慢,寻求帮助:oms起不来

先说下oem的结构,三个oms服务器(04,05,06),repository database是个三节点的RAC(A,B,C),现在04上的oms服务可以起来,oem也能用,但是05,06上的oms服务都起不来…

oracle 存储loop,oracle 写存储过程有返回值时 注意在loop循环处添加返回值:=

例子:create or replace procedure p_xl isv_count NUMBER(10);beginfor rs in(select yhbh from dbyh) loopv_count : osm_pkg_arc_limited_configs.F_LIMITED_METERS_CREATE(‘rs.yhbh‘,10001,---限量用水idsysdate,201706,0.00,10000);end loop;commit;end p_xl…

Linux 下 MATLAB2017 键位修改

把Emacs的默认键位改为Windows