Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103678960
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-16 13:34:13

    来源:赛迪网    作者:廉子桥

Oracle 10g增强

在10g中增强了跟踪,引入了DBMS_MONITOR包,这个包可以使跟踪更加容易。

当前,跟踪自己的会话只需要执行以下命令:

execute dbms_monitor.session_trace_enable(waits=>true, binds=>true)

跟踪其他的数据库会话:

execute dbms_monitor.session_trace_enable(, waits=>true, binds=>true)

在跟踪连接池的会话中,DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE过程特别有用,其允许跟踪一个给定客户端标识符的会话的所有活动。如果多个数据库会话为一个客户端标识符服务,该过程将写入多个跟踪文件。

另一个重要过程是DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE,其允许跟踪service_name, module_name, action_name确定的特定模块,如果应用程序进行了恰当的组织,该过程将比较有用。

另一个提高是trcsess工具,其用来将DBMS_MONITOR创建的多个跟踪文件结合在一起:

trcsess [output=] [session=] [clientid=] \

[service=] [action=] [module=] \

为全部跟踪文件,然后我们可以应用TKPROF到新的文件。

举例说明:

在实际的使用过程中,通过在页面开始时设置会话标识符:

PROCEDURE set_ora_session_id (p_session_id IN VARCHAR2)

IS

BEGIN

dbms_session.set_identifier (p_session_id);

END set_ora_session_id;

在页面结束时清除会话标识符:

PROCEDURE clear_ora_session_id

IS

BEGIN

dbms_session.clear_identifier;

END clear_ora_session_id;

然后我们就可以在会话活动期间进行跟踪:

exec dbms_monitor.client_id_trace_enable('20558307491688865029', waits=> true, binds=> true);

会话退出后关闭监控:

exec dbms_monitor.client_id_trace_disable ('20558307491688865029');

你可以通过DBA_ENABLED_TRACES查看所有正启用的跟踪。

阅读(763) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~