用户进程跟踪

 分为 基于会话级别跟踪和 实例级别跟踪;
会话级别跟踪又包括 当前会话跟踪和 非当前会话跟踪
跟踪文件位置由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用户进程跟踪的更多相关文章

  1. ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程

    执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...

  2. ORACLE处理用户进程大剖析[阅读]

    下面我们要讲ORACLE服务器进程如何处理用户进程的请求,当一个用户进程发出了一条SQL语名:   UPDATE TABBLEA SET SALARY=SALARY*2:   首先,服务器进程把这条语 ...

  3. 如何查找ORACLE中的跟踪文件

    一.跟踪文件是干什么用的?        跟踪文件中包含了大量而详细的诊断和调试信息.通过对跟踪文件的解读和分析,我们可以定位问题.分析问题和解决问题.从跟踪文件的产生的来源来看,跟踪文件又可以分为两 ...

  4. Oracle SQL 脚本跟踪

    NC Oracle SQL 脚本跟踪 脚本: select * from v$sqlarea a and a.LAST_ACTIVE_TIME >= to_date( '2013-02-21 1 ...

  5. oracle 用户与表空间关系

    oracle用户与表空间关系用户=商家表=商品表空间=仓库1. 1个商家能有很多商品,1个商品只能属于一个商家2. 1个商品可以放到仓库A,也可以放到仓库B,但不能同时放入A和B3. 仓库不属于任何商 ...

  6. Oracle用户,权限,角色以及登录管理 scoot 授权

    Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者syspoer系统权限. sy ...

  7. Linux内存点滴:用户进程内存空间

    原文出处:PerfGeeks 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的.VIRT , Virtual Image (kb)RES, Residen ...

  8. Oracle CheckPoint进程

    在实例经过分配内存结构,加载控制文件后,然后要打开数据库的时候,需要做到控制文件,数据文件,联机重做日志保持相互状态一致性,数据库才可以打开.当数据库发生实例不正常关闭时(比如系统掉电或者Shutdo ...

  9. Linux内存点滴 用户进程内存空间

    Linux内存点滴 用户进程内存空间 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的. VIRT, Virtual Image (kb) RES, Re ...

随机推荐

  1. 小白日记12:kali渗透测试之服务扫描(二)-SMB扫描

    SMB扫描 Server Message Block 协议.与其他标准的TCP/IP协议不同,SMB协议是一种复杂的协议,因为随着Windows计算机的开发,越来越多的功能被加入到协议中去了,很难区分 ...

  2. Linux系统上安装软件(JDK以及tomcat服务器)

    一:安装jdk linux系统上面如果运行java程序,就需要安装java的运行环境(jdk) 1:下载linux版本的jdk 地址:http://www.oracle.com/technetwork ...

  3. Linux 源码安装apache 与常见错误解决

    文档原位置 一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级. 升级方式有两种,一种是通过源代码编译安装,一种是直接升 ...

  4. hdu 4605 线段树与二叉树遍历

    思路: 首先将所有的查询有一个vector保存起来.我们从1号点开始dfs这颗二叉树,用线段树记录到当前节点时,走左节点的有多少比要查询该节点的X值小的,有多少大的, 同样要记录走右节点的有多少比X小 ...

  5. Android 内存分析工具 MAT(Memory Analyzer Tool)

    如果使用DDMS确实发现了我们的程序中存在内存泄漏,那又如何定位到具体出现问题的代码片段,最终找到问题所在呢?如果从头到尾的分析代码逻辑,那肯定 会把人逼疯,特别是在维护别人写的代码的时候.这里介绍一 ...

  6. CSS3秘笈第三版涵盖HTML5学习笔记1~5章

    第一部分----CSS基础知识 第1章,CSS需要的HTML HTML越简单,对搜索引擎越友好 div是块级元素,span是行内元素 <section>标签包含一组相关的内容,就像一本书中 ...

  7. UML-用例

  8. Sql Server Profiler跟踪死锁

    Sql Server Profiler一个很重要的应用场景就是监视分析死锁. 下面通过一个例子来学习Profiler是如何监视死锁的. 1. 创建测试数据模拟死锁, 创建表Table_A和Table_ ...

  9. 百度ueditor编辑器背景不显示问题

    网友办法:http://www.hongxuejing.com/hulianwang/ueditor_not_show_background-33.html 官方办法:http://fex-team. ...

  10. hexo部署到gitcafe上静态博客

    http://zanderzhang.gitcafe.io/2015/09/17/hexo部署到gitcafe上静态博客/ hexo这些事儿,zippera's blog,之类的,这些都说的很清楚了. ...