当前位置:文章写作网 >日记 >日记 >DBMS_MONITOR 使用

DBMS_MONITOR 使用

2008-05-04 13:15 作者:tshfang 阅读量:10670 推荐23次 | 我要投稿

sql server提供了事件查看器,用来跟踪后台的sql执行。oracle如何跟踪呢,oralce提供了多种跟踪方

法,下面先介绍10g提供的新包。 DBMS_MONITOR,它提供了多种级别的trace.

一、语法:

· 模块级别跟踪:

SQL> exec dbms_monitor.serv_mod_act_trace_enable(service_name => 'EDGAR', module_name =>

'product_module', action_name => ‘INSERT_DATA’);

其中,module_name和action_name可以通过在程序中调用模块DBMS_APPLICATION_INFO来定义。也可以通

过dbms_monitor.all_modules和dbms_monitor.all_actions来设置对所有模块和动作进行跟踪。

·用户级别跟踪:

SQL> exec dbms_monitor.client_id_trace_enable(client_id => 'DEMO');

Client_id就是数据库中的用户名。

·会话级别跟踪:SQL> exec dbms_monitor.session_trace_enable(138);138就是会话ID.

二、修改生成跟踪的文件名称:

激活跟踪后,就可以用新工具trcsess来生成trace文件,先跳转到udump目录。C:> cd

<ORACLE_HOME>admin<SID>udump 可以生成不同级别的的trace文件(前提是该级别的trace已经激活)

· 模块级别:C:\oracle\product10.2.0\admine\orcl\udump> trcsess output="abc.trc"

service="EDGAR" module="product_module" action="INSERT_DATA"

· 用户级别:C:\oracle\product10.2.0\admine\orcl\udump>trcsess output="abc.trc"

clientid="DEMO"

· 会级别:C:\oracle\product10.2.0\admine\orcl\udump>trcsess output="abc.trc"

session=138.12432其中session必须是SID.SERIAL#的格式(可以从v$session中查到) 打开产生的trace

文件,会发现内面的内容实际上相当于10046和10053事件产生的trace文件内容的组合。

三、使用tkprof进行分析:

C:\oracle\product10.2.0\admine\orcl\udump> tkprof abc.trc abc.txt

四、简单测试例子,通过会话跟踪。

1、打开PL/SQL Developer sql测试窗口

输入select * from hr.job 执行后报错。确定就可以了。

2、打开sql*plus 执行

select sid ,serial#,action from v$session

找到sql窗口-新建的那行,代表PL/SQL Developer sql测试窗口的会话.

部分截图:

143 1379 SQL 窗口 - 新建

执行如下语句,打开跟踪功能.

begin

dbms_monitor.session_trace_enable(session_id => 143,serial_num => 1379);

--dbms_monitor.session_trace_disable(session_id => 143, serial_num => 1379);

end;

3、进入命令提示符,进入相应的目录,将跟踪文件命名为abc.trc

C:\oracle\product\10.2.0\admin\orcl\udump>trcsess output="abc1.trc" session=143.

1379

4、执行命令,关闭跟踪功能。

begin

--dbms_monitor.session_trace_enable(session_id => 143,serial_num => 1379);

dbms_monitor.session_trace_disable(session_id => 143, serial_num => 1379);

end;

5、进入命令提示符,将跟踪文件输出成txt格式。

C:\oracle\product\10.2.0\admin\orcl\udump>tkprof abc1.trc ac.txt

6、打开ac.txt

跟踪文件部分内容:

The following statement encountered a error during parse:

select * from hr.job

Error encountered: ORA-00942

后台使用oracle的其他软件跟踪道理是相同的。使用plsqldev做个简单的例子。

其他人在看啥

    《DBMS_MONITOR 使用》的评论 (共 0 条)

    • Guest::ding