ITPub博客

首页 > 数据库 > Oracle > oracle中用户级自跟踪

oracle中用户级自跟踪

原创 Oracle 作者:spaceair 时间:2005-10-12 21:37:14 0 删除 编辑

学习相关知识,自己做的小实验。

[@more@]

oracle中用户级自跟踪
OS:WINXP & SP2
DB: ORACLE V9.2.0.1.0
用户跟踪文件的路径:%ORACLE_BASE%AdminSIDudump
1、用户启动自跟踪

SQL> alter session set sql_trace=true;

会话已更改。

2、检查当前session的SID,SERIAL#

SQL> select sid,serial#,username from v$session;

SID SERIAL# USERNAME
---------- ---------- ------------------------------
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 7 XMU

已选择9行。

确认当前session的sid,serial#为(9,7)

3、开始测试操作

SQL> drop table k;

表已丢弃。

SQL> commit;

提交完成。

SQL> create table k(a int);

表已创建。

SQL> insert into k values(1);

已创建 1 行。

SQL> commit;

提交完成。

4、停止跟踪

SQL> alter session set sql_trace=false;

会话已更改。

4、检查trace文件
检查udump目录,发现xujc_ora_3944.trc文件,文件时间吻合。
检查该trace文件,确实包含相关操作的内容。

5、用户trace文件的命名规则如何?
用户的跟踪文件生成在 admin{SID}udump{SID} _ora_{ SPID}.trc 中,spid从下面语句得到
--SELECT b.name bkpr, s.username, p.spid,s.sid,s.serial# FROM v$bgprocess b, v$session s, v$process p WHERE p.addr = b.paddr(+) AND p.addr = s.paddr and s.username=user;

select b.spid,a.sid,a.serial#,a.username from v$session a,v$process b where a.sid=b.pid and a.username='XMU' ;

SQL> select b.spid,a.sid,a.serial#,a.username from v$session a,v$process b where a.sid=b.pid and a.username='XMU' ;

SPID SID SERIAL# USERNAME
------------ ---------- ---------- ------------------------------
620 9 7 XMU
3944 12 50 XMU

6、如何阅读用户trace文件?
使用TKPROF工具。
tkprof E:oracleadminxujcudumpxujc_ora_3944.trc E:oracleadminxujcudumpxujc_ora_3944.OUT sort=PRSCPU,EXECNT,EXECPU aggregate=NO record=E:oracleadminxujcudumpxujc_ora_3944_REC.SQL

该命令将分析此trace文件,并输出2个分析文件:xujc_ora_3944.OUT和xujc_ora_3944_REC.SQL,其中xujc_ora_3944.OUT文件根据Sort options: prscpu execnt execpu 选项输出,而xujc_ora_3944_REC.SQL则重现了该跟踪文件所记录的SQL操作。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/59630/viewspace-807828/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 用户级DBA跟踪
请登录后发表评论 登录
全部评论
  • 博文量
    149
  • 访问量
    4899197