Oracle事件跟踪及结构数据dump

Oracle提供了一类命令,可以将Oracle各种内部结构所包含的信息转储(dump)到跟踪文件中,提供给用户做跟踪分析收集Dump信息要求数据库必须在mountopen状态下。发起DumpOracle用户必须拥有alter session和必备的管理员权限。DumpTrace文件路径由初始化参数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 2level 1 + 通用文件头信息

level>=3level 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 2level 1 + 通用文件头信息

level>=3level 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值