跟踪数据库的命令:event 10046等的设置(ZT)

以下是事件的有效trace级别:
 Level 0 tracing被关闭。这相当于设置sql_trace=false。
 Level 1 标准SQL trace信息(SQL_TRACE=TRUE)。这是默认级别。
 Level 4 SQL trace信息加绑定变量值。
 Level 8 SQL trace信息加等待事件信息。
 Level 12 SQL trace 信息,等待事件信息,和绑定变量值。[@more@]
以下是事件的有效trace级别:
 Level 0 tracing被关闭。这相当于设置sql_trace=false。
 Level 1 标准SQL trace信息(SQL_TRACE=TRUE)。这是默认级别。
 Level 4 SQL trace信息加绑定变量值。
 Level 8 SQL trace信息加等待事件信息。
 Level 12 SQL trace 信息,等待事件信息,和绑定变量值。
两个参数
alter session set timed_statistics = true;
alter session set max_dump_file_size = unlimited;
你能使用trace事件10046来跟踪用户会话或Oracle后台进程。
会话位置:USER_DUMP_DEST
后台位置:BACKGROUND_DUMP_DEST
跟踪自己的会话:命令格式
enable
alter session set events '10046 trace name context forever, level 8';
disable
alter session set events '10046 trace name context off';
--如果你有安装了的DBMS_SUPPORT包,你能使用以下的过程来开启和关闭跟踪:
-- To include Wait Event data with SQL trace (default option)
exec sys.dbms_support.start_trace;
-- To include Bind variable values, Wait Event data with SQL trace
exec sys.dbms_support.start_trace(waits => TRUE, binds=> TRUE)
-- Run your SQL script or program to trace wait event information
-- To turn off the tracing:
exec sys.dbms_support.stop_trace;

这个包可以通过运行 dbmssupp.sql 和 prvtsupp.plb 两个脚本来创建. 该脚本位于$ORACLE_HOME/rdbms/admin目录下

SQL> conn / as sysdba
已连接。
SQL> @?/rdbms/admin/dbmssupp.sql
程序包已创建。

程序包体已创建。
SQL> @?/rdbms/admin/prvtsupp.plb
程序包体已创建。
SQL> SELECT DBMS_SUPPORT.MYSID from DUAL;
MYSID
----------
143

如何跟踪其他人的会话
如果你不能确信参数TIMED_STATISTICS和MAX_DUMP_FILE_SIZE是否对你想跟踪的会话设置合适,你应该从V$SESSION得到SID和它的序列号(SERIAL#)。在开启trace之前,你然后能做以下过程来合适得设置这些参数。
-- Set TIME_STATISTICS to TRUE for SID 1234, Serial# 56789
exec sys.dbms_system.set_bool_param_in_session( -
sid => 1234, -
serial# => 56789, -
parnam => 'TIMED_STATISTICS', -
bval => true);
-- Set MAX_DUMP_FILE_SIZE to 2147483647
-- for SID 1234, Serial# 56789
exec sys.dbms_system.set_int_param_in_session( -
sid => 1234, -
serial# => 56789, -
parnam => 'MAX_DUMP_FILE_SIZE', -
intval => 2147483647);
如果这些过程不能用于你的oracle版本(Oracle版本8.1.5和以下),你能使用ALTER SYSTEM SET 命令来设置这些参数。
接下来的步骤是在其他会话中去开启trace,然后在你已经收集足够的trace信息之后关闭它。你能使用以下方法之一来处理:
方法1  使用DBMS_SUPPORT包过程
 -- Enable 'level 12' trace in session 1234 with serial# 56789
exec dbms_support.start_trace_in_session( -
sid => 1234, -
serial# => 56789, -
waits => true, -
binds => true);
-- Let the session execute SQL script or
-- program for some amount of time
-- To turn off the tracing:
exec dbms_support.stop_trace_in_session( -
sid => 1234, -
serial# => 56789);
2. 方法2 使用dbm_system
- Enable trace at level 8 for session 1234 with serial# 56789
execute dbms_system.set_ev( 1234, 56789, 10046, 8, '');
-- Let the session execute SQL script or
-- program for some amount of time
-- To turn off the tracing:
execute dbms_system.set_ev( 1234, 56789, 10046, 0, '');
3.方法3 使用oradebug工具。你需要知道会话的OS进程ID(SPID)或Oracle进程ID(PID)。你能查看他们在v$process视图。假设你知道你想跟踪的用户名:
select s.username,
p.spid os_process_id,
p.pid oracle_process_id
from v$session s, v$process p
where s.paddr = p.addr
and s.username = upper('&user_name');
现在使用SQL*Plus以sysdba连接并发出以下命令:
alter system set timed_statistics=true;
oradebug setospid 12345;
--12345 是会话的OS进程id
Oradebug unlimit;
Oradebug event 10046 trace name context forever ,level 8;
--让会话执行SQL脚本或程序一段时间
--关闭trace
Oradebug event 10046 trace name context off;

在ORACLE10g1版本中,你能使用DBMS_MONITOR包过程来开启基于SID,服务名,模块,或动作来跟踪。基于动作的跟踪使dba能跟踪一个指定的商业功能。这是一个捕捉:过程要求DBA知道模块和动作名。
 使用DBMS_MONITOR包来启动对会话1234和serial#56789如下:
execute dbms_monitor.session_trace_enable(1234,56789,true,true);
-- Let the session execute SQL script or
-- program for some amount of time
-- To turn off the tracing:
execute dbms_monitor.session_trace_disable(1234, 56789);
这些过程很像来自DBMS_SUPPORT包。我们推荐你在oracle10g版本1中使用DBMS_MONITOR包。
 使用DBMS_MONITOR包用于服务,模块,和基于动作的跟踪。
--开启级别12跟踪已知服务,模块,和动作
execute dbms_monitor.serv_mod_act_trace_enable(
'APPS1','GLEDGER','DEBIT_ENTRY',TRUE,TRUE,NULL);
--执行sql脚本或程序一段时间
--关闭tracing
Execute dbms_monitor.serv_mod_act_trace_disable(
'APPS1','GLEDGER','DEBIT_ENTRY');
怎样找到你的trace文件
用户会话的跟踪文件将被写到USER_DUMP_DEST目录,而后台进程的跟踪文件将被写到BACKGROUND_DUMP_DEST目录。跟踪文件命名在许多平台上包含.trc或TRC扩展名。
使用oradebug trace工具,找到你的跟踪文件是较容易的,因为专用服务的SPID数字也被写到trace文件。另外,你也能得到真正的跟踪文件名如下:
SQL> oradebug setmypid
Statement processed.
SQL> oradebug event 10046 trace name context forever,level 8
Statement processed.
SQL> oradebug tracefile_name
d:oracleadminor92udumpor92_ora_171.trc
从Oracle8.1.7开始,你能为你会话设置TRACEFILE_IDENTIFIER参数,使用ALTER SESSION命令,如下显示:
alter session set tracefile_identifier='MyTrace';

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

转载于:http://blog.itpub.net/271283/viewspace-988550/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值