-- set events 能够产生trace file 常用的event 有哪些呢?
ORALCE中的诊断事件,用来产生trace file,对数据库进行诊断。
这些Event types包括三大类:Dump eventsTrace eventsChange the behaviour
设置一个事件有三种途径:
through the event init parameter
alter session set event
oradebug(orambx on VMS)
在alter system 时可以dump datafile
如:
alter system dump datafile 5 block min 50 block max 55;
关于 dump one ore more blocks 参考《dump_datafile.sql》
比较常用的事件有10046 和 10053.
-- 如何查找当前会话的trace file?
select
u_dump.value || '/' ||
db_name.value || '_ora_' ||
v$process.spid ||
nvl2(v$process.traceid, '_' || v$process.traceid, null )
|| '.trc' "Trace File"
from
v$parameter u_dump
cross join v$parameter db_name
cross join v$process
join v$session
on v$process.addr = v$session.paddr
where
u_dump.name = 'user_dump_dest' and
db_name.name = 'db_name' and
v$session.audsid=sys_context('userenv','sessionid');
-- 如何设置10046事件?
10046事件用来跟踪SQL语句,比较常用,功能类似于sql_trace=true ;
其level参数含义如下:
1: Standard SQL tracing
4: Level 1 + tracing bind variables
8: Level 1 + tracing wait events
12: Level 4 + Level 8 (SQL tracing, bind vars and wait events)
使用例子:
alter session set events '10046 trace name context forever, level 4';
其结果是在udump目录下产生一个日志文件,从日志文件中可以看出SQL bind variable的情况。
oracle10g中增加了一个视图可以更方便地查看bind variable. v$sql_bind_capture
结束事件
SQL> alter session set events '10046 trace name context off';
-- 如何使用10053 事件?
SQL> alter session set events '10053 trace name context forever, level 1';
会话已更改。
-- 运行一些能产生硬解析的语句
SQL> select count(1) from user_tables where table_name like '%DYHSB%';
COUNT(1)
----------
13
alter session set events '10053 trace name context off' ;
-- 到udump目录下找产生的日志文件,如果没有硬解析发生,就不会产生日志
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/271063/viewspace-1013213/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/271063/viewspace-1013213/