ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle跟踪事件及转储

oracle跟踪事件及转储

原创 Linux操作系统 作者:shengzhitan 时间:2010-08-17 15:10:53 0 删除 编辑
大家都知道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来转换成易读的格式,方便我们的分析。
 
        另外关于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博客 ” ,链接:https://blog.itpub.net/24095423/viewspace-671154/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle flashback
请登录后发表评论 登录
全部评论

注册时间:2010-07-16

  • 博文量
    20
  • 访问量
    29376