大家都知道oracle跟踪文件包括在$ORACLE_BASE/admin/中,其中包括alert,后台进程、用户进程转储文件等。以下地址中有一些简单的说明http://blog.csdn.net/hailang99/archive/2007/10/12/1821623.aspx)
参考了些资料,谈谈对oracle跟踪事件的理解:
1、set events命令格式
oracle提供进行事件跟踪及转储的命令,个人认为在用户的连接终端(也就是用户连接到oracle的session)中,执行跟踪事件命令是灵活的、方便的,常用的。使用方法如下:
SQL> alter session set events ‘immediate trace name controlf level 1′;
会话已更改。
基本命令是“alter session set events ‘…’
引号中为要指定跟踪的事件定义,有两种方法:
1)事件号方式
一种是在引号中指定一个“事件号(eventnumber)”,指触发dump的事件号,事件号可以是Oracle错误号(出现相应错误时跟踪指定的事件)或oralce内部事件号(仅当同时使用trace name context 时),内部事件号在10000到10999之间,不能与immediate关键字同用。
SQL> alter session set events ‘ 10013′;
2)事件名方式
另一种是在引号中指定“事件名称(eventname)”,需要加上“trace name”关键字。
SQL> alter session set events ‘trace name controlf ‘;
3)跟踪级别
这两种方式,都需要指定跟踪事件的级别,一般为1至10,级别超高,跟踪的信息越全。这里有个解释:
1 :only the file header
2 :just the file header, the database info record, and checkpoint progress records
3 :all record types, but just the earliest and latest records for circular reuse record types
4 :as above, but includes the 4 most recent records for circular reuse record types
5+ :as above, but the number of circular reuse records included doubles with each level
SQL> alter session set events ‘trace name controlf level 3′;
4)一直跟踪
在引号中加入“forever”关键字,放置于后端,且与level关键字之间有一个逗号。
SQL> alter session set events ‘trace name controlf forever, level 3′;
5)立即执行
在引号中加入“immediate”关键字,放置于前端。immediate和forever关键字不能同时使用。
SQL> alter session set events ‘immediate trace name controlf level 3′;
通常这个例子为常用的使用方法。
2、跟踪sql的执行
通过以下方式可以手动的开启sql的跟踪
1.select sid,serial#,username,osuser,machine from v$session; //先查询到session的sid,serial#
2.exec dbms_system.set_sql_trace_in_session(sid,sid_serial#,true); //开始跟踪
3.exec dbms_system.set_sql_trace_in_session(sid, sid_serial#,false); //停止跟踪
4.tkprof *.trc *.txt //通过tkprof可以将trc文件转换成易读的格式(实际就是一些统计信息)。
说了这些总结一下,我们可以通过alter session set event的方式获得我们想了解的事件的详细信息,当然也包括一些oracle的文件中的配置内容(如controlfile,这也是我们通常学习oracle必不可少的一项工作),我们得到了一些trace、日志文件,有些可以通过tkprof来转换成易读的格式,方便我们的分析。
参考了些资料,谈谈对oracle跟踪事件的理解:
1、set events命令格式
oracle提供进行事件跟踪及转储的命令,个人认为在用户的连接终端(也就是用户连接到oracle的session)中,执行跟踪事件命令是灵活的、方便的,常用的。使用方法如下:
SQL> alter session set events ‘immediate trace name controlf level 1′;
会话已更改。
基本命令是“alter session set events ‘…’
引号中为要指定跟踪的事件定义,有两种方法:
1)事件号方式
一种是在引号中指定一个“事件号(eventnumber)”,指触发dump的事件号,事件号可以是Oracle错误号(出现相应错误时跟踪指定的事件)或oralce内部事件号(仅当同时使用trace name context 时),内部事件号在10000到10999之间,不能与immediate关键字同用。
SQL> alter session set events ‘ 10013′;
2)事件名方式
另一种是在引号中指定“事件名称(eventname)”,需要加上“trace name”关键字。
SQL> alter session set events ‘trace name controlf ‘;
3)跟踪级别
这两种方式,都需要指定跟踪事件的级别,一般为1至10,级别超高,跟踪的信息越全。这里有个解释:
1 :only the file header
2 :just the file header, the database info record, and checkpoint progress records
3 :all record types, but just the earliest and latest records for circular reuse record types
4 :as above, but includes the 4 most recent records for circular reuse record types
5+ :as above, but the number of circular reuse records included doubles with each level
SQL> alter session set events ‘trace name controlf level 3′;
4)一直跟踪
在引号中加入“forever”关键字,放置于后端,且与level关键字之间有一个逗号。
SQL> alter session set events ‘trace name controlf forever, level 3′;
5)立即执行
在引号中加入“immediate”关键字,放置于前端。immediate和forever关键字不能同时使用。
SQL> alter session set events ‘immediate trace name controlf level 3′;
通常这个例子为常用的使用方法。
2、跟踪sql的执行
通过以下方式可以手动的开启sql的跟踪
1.select sid,serial#,username,osuser,machine from v$session; //先查询到session的sid,serial#
2.exec dbms_system.set_sql_trace_in_session(sid,sid_serial#,true); //开始跟踪
3.exec dbms_system.set_sql_trace_in_session(sid, sid_serial#,false); //停止跟踪
4.tkprof *.trc *.txt //通过tkprof可以将trc文件转换成易读的格式(实际就是一些统计信息)。
说了这些总结一下,我们可以通过alter session set event的方式获得我们想了解的事件的详细信息,当然也包括一些oracle的文件中的配置内容(如controlfile,这也是我们通常学习oracle必不可少的一项工作),我们得到了一些trace、日志文件,有些可以通过tkprof来转换成易读的格式,方便我们的分析。
另外关于User的跟踪主要涉及到两种,一种是直接在user的session更改,alter session set sql_trace=true ;
另外一种就是通过DBA使用DBMS更改:
exec
dbms_system.set_sql_trace_in_session(
sid,serial#,true
);
sid,serial#,可以通过v$session查看到;
通过上面的设置就可以跟踪到用户访问数据库的所有操作,还有一个是基于system级别的,不过这个一般不使用,因为这样一设置,就会记录所有的用户记录;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24095423/viewspace-671154/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24095423/viewspace-671154/