Oracle用户进程跟踪
用户进程跟踪
分为 基于会话级别跟踪和 实例级别跟踪;
会话级别跟踪又包括 当前会话跟踪和 非当前会话跟踪
跟踪文件位置由user_dump_dest设定,大小由max_dump_file_size 决定
生成的跟踪文件名为<SID>_ora_<SPID>.trc 其中SID为实例名称,SPID为系统进程号
通过v$session中的SQL_TRACE,SQL_TRACE_WAITS,SQL_TRACE_BINDS展示了一个会话的跟踪状态
注:
在专用服务器模式中:仅仅需要标识该会话并为该会话启用跟踪(专用模式为一对一模式,即一个用户进程对应一个服务器进程)
在共享模式中:对任何一个会话的跟踪会分布到每个共享服务器进程所生成的跟踪文件内。这时可以用tkprof合并多个sql跟踪文件
1.1 基于会话级别跟踪
1.1.1 针对当前会话跟踪
--以DBA权限 查看用户跟踪文件所在的位置
SQL> show parameter user_dump NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest string /u01/admin/sun/udump
SQL> --清空先前产生的跟踪文件
SQL> ! rm -f /u01/admin/sun/udump/*.trc --开启一个会话连接
SQL> conn hr/hr123
Connected.
SQL> --开启当前会话跟踪
SQL> alter session set sql_trace=true; Session altered. SQL> --执行测试SQL语句
--跟踪完毕后执行下面的语句关闭跟踪
SQL> alter session set sql_trace = false; Session altered. SQL> --通过DBA用户获取其SPID
SQL> select s.username,s.sid,p.spid from v$session s,v$process p
2 where s.paddr = p.addr and s.username = 'HR'; USERNAME SID SPID
------------------------------ ---------- ------------
HR 141 1255 SQL>
#可以使用vi,taik等工具 查看产生的跟踪会话文件
bash-3.00$ vi sun_ora_1255.trc
............
=====================
PARSING IN CURSOR # len= dep= uid= oct= lid= tim= hv= ad='5d4e9008'
select * from jobs --此处是我的测试sql
END OF STMT
PARSE #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
EXEC #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
FETCH #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
FETCH #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
FETCH #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
STAT # id= cnt= pid= pos= obj= op='TABLE ACCESS FULL JOBS (cr=9 pr=6 pw=0 time=37479 us)'
*** -- ::16.843
=====================
PARSING IN CURSOR # len= dep= uid= oct= lid= tim= hv= ad='5d4e3c80'
alter session set sql_trace = false --关闭当前跟踪操作
END OF STMT
PARSE #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
EXEC #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
1.1.2 针对非当前会话跟踪
--开启user1 会话连接
SQL> conn user1/user1
Connected.
SQL> --用DBA 用户查看
SQL> select s.username,s.sid,p.spid from v$session s,v$process p
2 where s.paddr = p.addr and s.username = 'USER1'; USERNAME SID SPID
------------------------------ ---------- ------------
USER1 137 1325 SQL> select sid,serial# from v$session where username = 'USER1'; SID SERIAL#
---------- ----------
137 118 SQL> --另开启hr 会话连接
SQL> conn hr/hr123
Connected.
SQL>
--在hr会话中开启对user1的跟踪
SQL> exec dbms_monitor.session_trace_enable(session_id=>137,serial_num=>118); PL/SQL procedure successfully completed. SQL> --执行SQL 语句则开始跟踪
--跟踪完毕后执行下面的语句关闭跟踪
SQL> exec dbms_monitor.session_trace_disable(session_id=>137,serial_num=>118); PL/SQL procedure successfully completed. SQL>
--查看产生的跟踪会话文件
bash-3.00$ vi sun_ora_1325.trc
=====================
PARSING IN CURSOR # len= dep= uid= oct= lid= tim= hv= ad='5d4ddba4'
update t
set name = 'TRACE'
WHERE ID =
END OF STMT
PARSE #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
EXEC #:c=,e=,p=,cr=,cu=,mis=,r=,dep=,og=,tim=
WAIT #: nam='SQL*Net message to client' ela= driver id= #bytes= p3= obj#= tim=
WAIT #: nam='SQL*Net message from client' ela= driver id= #bytes= p3= obj#= tim=
STAT # id= cnt= pid= pos= obj= op='UPDATE T (cr=37 pr=0 pw=0 time=17923 us)'
STAT # id= cnt= pid= pos= obj= op='TABLE ACCESS FULL T (cr=37 pr=0 pw=0 time=263 us)'
WAIT #: nam='SQL*Net message to client' ela= driver id= #bytes= p3= obj#= tim=
1.2 基于实例级别跟踪
--清除跟踪文件夹下先前产生的跟踪文件
SQL> ! rm -f /u01/admin/sun/udump/*.trc --设置实例级别的跟踪
SQL> conn /as sysdba
Connected.
SQL> alter system set sql_trace = true;
System altered.
SQL> --开启hr会话测试
SQL> conn hr/hr123
Connected.
SQL> select JOB_TITLE,MIN_SALARY,MAX_SALARY from jobs where JOB_ID='ST_MAN'; JOB_TITLE MIN_SALARY MAX_SALARY
----------------------------------- ---------- ----------
Stock Manager 5500 8500 SQL> --开启user1会话测试
SQL> conn user1/user1
Connected.
SQL> select * from t; ID NAME
---------- ----------------
8 inspur
1 oracle 。。。。。 --查看SPID
SQL> select s.username,s.sid,p.spid from v$session s,v$process p
2 where s.paddr = p.addr; USERNAME SID SPID
------------------------------ ---------- ------------
HR 137 1378
USER1 141 1384
--查看其各自产生的跟踪文件
bash-3.00$ ls -l *.trc
-rw-r----- oracle oinstall Aug : sun_ora_1378.trc --对hr用户的跟踪
-rw-r----- oracle oinstall Aug : sun_ora_1384.trc --对USER1用户的跟踪
bash-3.00$ --关闭实例级别的跟踪
SQL> alter system set sql_trace = false; System altered. SQL>
Oracle用户进程跟踪的更多相关文章
- ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程
执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...
- ORACLE处理用户进程大剖析[阅读]
下面我们要讲ORACLE服务器进程如何处理用户进程的请求,当一个用户进程发出了一条SQL语名: UPDATE TABBLEA SET SALARY=SALARY*2: 首先,服务器进程把这条语 ...
- 如何查找ORACLE中的跟踪文件
一.跟踪文件是干什么用的? 跟踪文件中包含了大量而详细的诊断和调试信息.通过对跟踪文件的解读和分析,我们可以定位问题.分析问题和解决问题.从跟踪文件的产生的来源来看,跟踪文件又可以分为两 ...
- Oracle SQL 脚本跟踪
NC Oracle SQL 脚本跟踪 脚本: select * from v$sqlarea a and a.LAST_ACTIVE_TIME >= to_date( '2013-02-21 1 ...
- oracle 用户与表空间关系
oracle用户与表空间关系用户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于一个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放入A和B3. 仓库不属于任何商 ...
- Oracle用户,权限,角色以及登录管理 scoot 授权
Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者syspoer系统权限. sy ...
- Linux内存点滴:用户进程内存空间
原文出处:PerfGeeks 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的.VIRT , Virtual Image (kb)RES, Residen ...
- Oracle CheckPoint进程
在实例经过分配内存结构,加载控制文件后,然后要打开数据库的时候,需要做到控制文件,数据文件,联机重做日志保持相互状态一致性,数据库才可以打开.当数据库发生实例不正常关闭时(比如系统掉电或者Shutdo ...
- Linux内存点滴 用户进程内存空间
Linux内存点滴 用户进程内存空间 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的. VIRT, Virtual Image (kb) RES, Re ...
随机推荐
- Cable master
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- Team Queue
Team Queue Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 2471 Accepted: 926 Descrip ...
- java6内置JS引擎初接触
本文系转载 原文地址:http://blog.csdn.net/sdyy321/article/details/6959199 由于要用到该技术,所以写了几个测试,直接上代码. 定义外部资源E:/Sc ...
- 【策略】UVa 1344 - Tian Ji -- The Horse Racing(田忌赛马)
Here is a famous story in Chinese history. That was about 2300 years ago. General Tian Ji was a high ...
- hdu 2709 Sumsets
Sumsets Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 【转】【CDC翻客】移动端App测试实用指南
译者注:本文从测试人员的角度出发,提出了100多个在测试移动App过程中需要考虑的问题.不管你是测试人员.开发.产品经理或是交互设计师,在进行移动App开发时,这些问题都很有参考价值.我和Queen ...
- SuperMapDeskTop中去除面图层边框
0.项目中有个功能需要在超图DeskTop中修改面图层的符号,将要素的边框去掉.搞来搞去这个功能并不像ArcGisDeskTop一样直接有无边框的符号,通过请教,通过修改面图层的线样式的RGB颜色管理 ...
- CSS3—三角形
话不多说看效果:演示效果,runjs 1.加了宽高和border,边用不同颜色显示,每条边都是一个梯形 2.去掉宽高,每条边都是三角形 3.只显示其中一条边就是不同的三角形了,是不是很简单,改变bor ...
- Redis - 发布/订阅模式
Redis 提供了一组命令可以让开发者实现 “发布/订阅” 模式.“发布/订阅” 可以实现进程间的消息传递,其原理是这样的: “发布/订阅” 模式中包含两种角色,分别是发布者和订阅者.订阅者可以订阅一 ...
- Jquery EasyUI的datagrid页脚footer使用及数据统计
最近做一个统计类的项目中遇到datagrid数据显示页脚footer合计的问题,对于构造统计结果数据格式,是在程序端构造一个{"rows":[],"total" ...