Oracle提供了一类命令,可以将Oracle各种内部结构所包含的信息转储(dump)到跟踪文件中,提供给用户做跟踪分析。收集Dump信息要求数据库必须在mount或open状态下。发起Dump的Oracle用户必须拥有alter session和必备的管理员权限。Dump的Trace文件路径由初始化参数user_dump_dest指定,并保证操作系统环境中有足够的空间存放Trace文件。
一、事件跟踪的两种方法
1、在init.ora文件中设置事件,这样open数据库后,将影响到所有的会话。设置格式如下:
event = "eventnumber trace name eventname [forever][, level levelnumber] : ......."
通过“:”符号,可以连续设置多个事件,也可以通过连续使用event来设置多个事件。
2、在会话过程中使用alter session set events命令,只对当前会话有影响。设置格式如下:
alter session set events '[eventnumber|immediate] trace name eventname [forever][, level levelnumber] : .......'
通过“:”符号,可以连续设置多个事件,也可以通过连续使用alter session set events来设置多个事件。
二、事件跟踪的格式说明
eventnumber:触发dump的事件号,事件号可以是Oracle错误号(出现相应错误时跟踪指定的事件)或oralce内部事件号,内部事件号在10000到10999之间,eventnumber不能与immediate关键字同用。
immediate:表示命令发出后,立即将指定的结构dump到跟踪文件中,这个关键字只用在alter session语句中,并且不能与eventnumber、forever关键字同用。
trace name:关键字。
eventname:事件名称,即要进行dump的实际结构名。若eventname为context,则指根据内部事件号进行跟踪。
forever:表示事件在实例或会话的周期内保持有效状态,不能与immediate同用。
level:事件级别关键字。
levelnumber:表示事件级别号,从1到12,一般1表示只dump结构头部信息,12表示dump结构的所有信息。
三、常见事件及结构数据的dump
buffer事件
dump SGA中的buffer cache block
需要执行两条命令
alter session set events 'immediate trace name set_tsn_p1 level N';
N是文件号 + 1
alter session set events 'immediate trace name buffer level N';
N是文件号 * 4194304 + 块号
controlf事件
dump控制文件结构
alter session set events 'immediate trace name controlf level N';
locks事件
dump LCK进程的锁信息
alter session set events 'immediate trace name locks level N';
redohdr事件
dump redo日志的头部信息
alter session set events 'immediate trace name redohdr level N';
level 1:控制文件中的信息
level 2:level 1 + 通用文件头信息
level>=3:level 2 + 日志文件头信息
level 10:完整文件头信息
loghist事件
dump控制文件中的日志历史项
alter session set events 'immediate trace name loghist level N';
N = 1:最早和最迟的日志历史项
N大于等于2时,表示2的N次方个日志历史项
file_hdrs事件
dump所有数据文件的头部信息
alter session set events 'immediate trace name file_hdrs level N';
level 1:控制文件中的信息
level 2:level 1 + 通用文件头信息
level>=3:level 2 + 数据文件头信息
level 10:完整文件头信息
errorstack事件
跟踪Oracle错误号信息
alter session set events '984 trace name errorstack forever, level 3';
alter session set events '984 trace name errorstack off';
systemstate事件
dump所有系统状态和进程状态
alter session set events 'immediate trace name systemstate level 10';
coalesec事件
dump指定表空间中的自由区间
levelnumber以十六进制表示时,两个高位字节表示自由区间数目,两个低位字节表示表空间号,如0x00050000表示dump系统表空间中的5个自由区间,转换成十进制就是327680,即:
alter session set events 'immediate trace name coalesec level 327680';
processsate事件
dump进程状态
alter session set events 'immediate trace name processsate level N';
library_cache事件
dump共享池中库缓存的信息
alter session set events 'immediate trace name library_cache level N';
N=1,转储Library Cache统计信息
N=2,转储Hash Table概要
N=4,转储Library Cache对象,只包含基本信息
N=8,转储Library Cache对象,包含详细信息
N=16,增加heap sizes信息
N=32,增加heap信息
row_cache事件
dump共享池中数据字典缓存信息
alter session set events 'immediate trace name row_cache level N';
N=1,转储dictionary cache的统计信息
N=2,转储hash表的汇总信息
N=8,转储dictionary cache中对象的结构信息
heapdump事件
dump PGA汇总信息
alter session set events 'immediate trace name heapdump level 1';
dump 共享池中共享内存的信息
alter session set events 'immediate trace name heapdump level 2';
dump SGA固定地址空间的信息
alter session set events 'immediate trace name heapdump_addr level 1, addr n';
这里的地址如果是16进制,则需要先转换为十进制
select to_number('dcd00c0', 'xxxxxxxxxx') from dual; -- 231538880
treedump事件
dump b-tree索引块
alter session set events 'immediate trace name treedump level object_id';
object_id为索引对象的ID
dump数据块
以下表示dump数据文件号为11中的第9个数据块
alter system dump datafile 11 block 9;
dump日志文件
alter system dump logfile '/home/oracle/app/oracle/oradata/mes/redo01.log';
dump回滚段头
alter system dump undo header '_SYSSMU1_3780397527$';
这里指定了回滚段名
强制刷新Buffer Cache,将Buffer Cache中的数据都写出到数据文件
alter session set events = 'immediate trace name flush_cache';
四、Oracle内部事件号说明
10012:跟踪崩溃事务
10013:跟踪数据库启动时的事务恢复
10015:跟踪回滚段头信息
event = "10015 trace name context forever"
10029:用于给出会话期间的登陆信息
10030:用于给出会话期间的注销信息
10032:转储排序的统计信息
10033:转储排序增长的统计信息
10035:跟踪解析出错的SQL语句
alter session set events '10035 trace name context forever,level 12';
开启后可在警告日志中查看解析出错的SQL语句
10045:跟踪Freelist管理操作
10046:跟踪SQL语句
alter session set events '10046 trace name context forever, level 12';
alter session set events '10046 trace name context off';
10050:跟踪SMON进程的活动
10053:转储优化策略
10059:模拟redo日志中的创建和清除错误
10061:阻止SMON进程在启动时清除临时段
10079:转储 SQL*NET统计信息
10081:转储高水位标记变化
10104:转储Hash连接统计信息
10128:转储分区休整信息
10200:转储一致性读信息
10201:转储一致性读中Undo应用
10203:跟踪数据库的块清除操作
alter system set event="10203 trace name context forever" scope=spfile;
10209:允许在控制文件中模拟错误
10210:触发数据块检查事件
event = "10210 trace name context forever, level 10"
10211:触发索引检查事件
10213:模拟在写控制文件后崩溃
10214:模拟在控制文件中的写错误
levelnumber从1-9表示产生错误的块号,大于等于10则每个控制文件将出错
10215:模拟在控制文件中的读错误
10220:转储Undo头部变化
10221;转储Undo变化
10224:转储索引的分隔与删除
10225:转储基于字典管理的区间的变化
10229:模拟在数据文件上的I/O错误
10231:设置在全表扫描时忽略损坏的数据块
alter session set events '10231 trace name context forever, level 10';
10232:将设置为软损坏(DBMS_REPAIR包设置或DB_BLOCK_CHECKING为TRUE时设置)的数据块dump到跟踪文件
10235:用于内存堆检查
alter session set events '10235 trace name context forever, level 1';
10241:转储远程SQL执行
10246:跟踪PMON进程的活动
10248:跟踪dispatch进程
10249:跟踪MTS进程
10252:模拟写数据文件头部错误
10253:模拟写redo日志文件错误
10262:允许连接时存在内存泄漏
alter session set events '10262 trace name context forever, level 300';
这里表示允许存在300个字节的内存泄漏
10270:转储共享游标
10285:模拟控制文件头部损坏
10286:模拟控制文件打开错误
10287:模拟归档出错
10357:调试直接路径机制
10500:跟踪SMON进程
10608:跟踪位图索引的创建
10704:跟踪enqueues
10706:跟踪全局enqueues
10708:跟踪RAC的buffer cache
10710:跟踪对位图索引的访问
10711:跟踪位图索引合并操作
10712:跟踪位图索引OR操作
10713:跟踪位图索引AND操作
10714:跟踪位图索引MINUS操作
10715:跟踪位图索引向ROWID的转化
10716:跟踪位图索引的压缩与解压
10719:跟踪位图索引的修改
10731:跟踪游标声明
10928:跟踪PL/SQL执行
10938:转储PL/SQL执行统计信息
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28974745/viewspace-2138019/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28974745/viewspace-2138019/