oracle跟踪事件及转储

大家都知道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博客 ” ,链接:http://blog.itpub.net/24095423/viewspace-671154/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24095423/viewspace-671154/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值