怎么理解ORACLE事件跟踪

65次阅读
没有评论

共计 5741 个字符,预计需要花费 15 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关怎么理解 ORACLE 事件跟踪,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

ORACLE 事件跟踪

  Oracle 跟踪文件分为三种类型:

   1:警告日志文件。记录了数据库启动、运行、关闭时的活动情况。当数据库出现问题时,首先要查看该文件,文件名为 alert_sid.log

   2:后台跟踪文件。记录了 oracle 后台进程的运行状况,名称为 sid_processname_processid.trc, 存储目录为 BACKGROUND_dump_dest

   3:用户跟踪文件。记录了连接到数据库的用户进程的运行信息,名称为 SID_ORA_PROCESSID.TRC, 存储目录为 USER_DUMP_DEST.

  在 oracle11g 中,这三种文件位于同一目录下:

跟踪事件

    设置跟踪事件,会导致 oracle 将与该事件有关的信息转储到跟踪文件中。依据设置事件的方式,可以将跟踪事件分为 2 类:PROCESS-EVENT(通过初始化参数文件设置的事件)、SESSION-EVENT(通过 alter session set events 或者 alter system set events 设置的时间)。要使 PROCESS-EVENT 事件生效,必须重新启动数据库实例,PROCESS-EVENT 事件会影响连接到数据库的每一个用户进程。在参数文件中设置多个事件可以采用“:”分隔符,如 event= event1:event2:event3。也可以依次设置多个 event,如:

event= event1

event= event2

(注意,在 event1 和 event2 之间不要存在其他参数,否则只有最后的 event 即 event2 生效)。

        对不同的跟踪事件,oracle 会产生不同的行为,根据行为的不同,我们大致可以将跟踪事件分为 4 类:

        1. 转储 oracle 中的某部分内容,如数据块、控制文件内容等。转储活动会在收到跟踪事件命令的同时执行。这类事件不可以通过参数文件进行设置。

        2. 跟踪错误信息。设置这类事件,oracle 会将特定错误的堆栈信息转储到跟踪文件中。

        3. 更改 oracle 的执行路径。这类事件会影响 oracle 代码段的执行路径,例如 10269 事件,会促使 smon 进程停止对 free-space 的合并操作。

        4. 跟踪进程的相关信息。例如 10046 事件和 10053 事件。该类事件会将进程上下文中的特定信息转储到跟踪文件中。

语法格式

        alter system|session set events‘[eventnumber|immediate]trace nameeventname[forever][, level levelnumber] :  …….’

    通过: 符号,可以连续设置多个事件,也可以通过连续使用 alter session set events 来设置多个事件。

    格式说明:eventnumber 指触发 dump 的事件号,事件号可以是 Oracle 错误号或 oralce 内部事件号,内部事件号在 10000 到 10999 之间,不能与 immediate 关键字同用;immediate 关键字表示命令发出后,立即将指定的结构 dump 到跟踪文件中,这个关键字只用在 alter session 语句中,并且不能与 eventnumber、forever 关键字同用。trace name 是关键字。eventname 指事件名称(见后面),即要进行 dump 的实际结构名。若 eventname 为 context,则指根据内部事件号进行跟踪。forever 关键字表示事件在实例或会话的周期内保持有效状态,不能与 immediate 同用。level 为事件级别关键字。但在 dump 错误栈 (errorstack) 时不存在级别。levelnumber 表示事件级别号,一般从 1 到 10,1 表示只 dump 结构头部信息,10 表示 dump 结构的所有信息。

    对于 alter session 设置的事件,仅仅只对当前 session 有效。对于 alter system 设置的事件,除对当前 session 有效外,对新登录的 session 同样有效,但是对于 alter system 命令执行之前打开的 session 是无效的。

IMMEDIATE 相关的事件

一.Memory Dumps

1).Global Area 

Alter SESSION SET EVENTS immediate trace name global_area level n  

1 包含 PGA 

2 包含 SGA 

4 包含 UGA 

8 包含 indrect memory

2).Library Cache 

Alter SESSION SET EVENTS immediate trace name library_cache level n  

1 library cache 统计信息  

2 包含 hash table histogram 

3 包含 object handle 

4 包含 object 结构(Heap 0)

3).Row Cache 

Alter SESSION SET EVENTS immediate trace name row_cache level n  

1 row cache 统计信息  

2 包含 hash table histogram 

8 包含 object 结构

4).Buffers 

Alter SESSION SET EVENTS immediate trace name buffers level n  

1 buffer header 

2 level 1 + block header 

3 level 2 + block contents 

4 level 1 + hash chain 

5 level 2 + hash chain 

6 level 3 + hash chain 

8 level 4 + users/waiters 

9 level 5 + users/waiters 

10 level 6 + users/waiters

5).Buffer 

Alter SESSION SET EVENTS immediate trace name buffer level n  

n 为某个指定 block 的 rdba,该命令可以转储某个 block 在 buffer 中的所有版本。

6).Heap 

Alter SESSION SET EVENTS immediate trace name heapdump level level  

1 PGA 摘要  

2 SGA 摘要  

4 UGA 摘要  

8 Current call(CGA)摘要  

16 User call(CGA)摘要  

32 Large call(LGA)摘要  

1025 PGA 内容  

2050 SGA 内容  

4100 UGA 内容  

8200 Current call 内容  

16400 User call 内容  

32800 Large call 内容

7).Sub Heap 

oracle 9.0.1 版本之前  

Alter SESSION SET EVENTS immediate trace name heapdump_addr level n  

若 n 为 subheap 的地址,转储的是 subheap 的摘要信息  

若 n 为 subheap 的地址 +1,转储的则是 subheap 的内容  

oracle 9.2.0 版本之后  

Alter SESSION SET EVENTS immediate trace name heapdump_addr level n, addr m  

其中 m 为 subheap 的地址  

n 为 1 转储 subheap 的摘要,n 为 2 转储 subheap 的内容

8).Process State 

Alter SESSION SET EVENTS immediate trace name processstate level n

9).System State 

Alter SESSION SET EVENTS immediate trace name systemstate level n

10).Error State 

Alter SESSION SET EVENTS immediate trace name errorstack level n  

0 Error stack 

1 level 0 + function call stack 

2 level 1 + process state 

3 level 2 + context area

11).Hang Analysis 

Alter SESSION SET EVENTS immediate trace name hanganalyze level n

12).Work Area 

Alter SESSION SET EVENTS immediate trace name workareatab_dump level n  

1 SGA 信息  

2 Workarea Table 摘要信息  

3 Workarea Table 详细信息

13).Latches 

Alter SESSION SET EVENTS immediate trace name latches level n  

1 latch 信息  

2 统计信息

14).Events 

Alter SESSION SET EVENTS immediate trace name events level n  

1 session 

2 process 

3 system

15).Locks 

Alter SESSION SET EVENTS immediate trace name locks level n

16).Shared Server Process 

Alter SESSION SET EVENTS immediate trace name shared_server_state level n  

n 取值为 1~14

17).Background Messages 

Alter SESSION SET EVENTS immediate trace name bg_messages level n  

n 为 pid+1

二.File Dumps

1).Block 

oracle 7 之前  

Alter SESSION SET EVENTS immediate trace name blockdump level n  

n 为 block 的 rdba 

oracle8 以后  

Alter SYSTEM DUMP DATAFILE file# BLOCK block#; 

Alter SYSTEM DUMP DATAFILE file# 

BLOCK MIN minimum_block# 

BLOCK MAX maximum_block# 

2).Tree Dump   查看索引的结构

Alter SESSION SET EVENTS immediate trace name treedump level n  

n 为 object_id

object_id 可以从 select object_id from user_objects where object_name = 索引的名字 得到。

3).Undo Segment Header   查看回滚段头部信息

Alter SYSTEM DUMP UNDO_HEADER segment_name

4).Undo for a Transaction 

Alter SYSTEM DUMP UNDO BLOCK segment_name XID xidusn xidslot xidsqn;

5).File Header 

Alter SESSION SET EVENTS immediate trace name file_hdrs level n  

1 控制文件中的文件头信息

2 level 1 + 通用文件头信息  

3 level 2 + 数据完整文件头信息  

10 level 3

6).Control file 

Alter SESSION SET EVENTS immediate trace name controlf level n  

1   控制文件中的文件头信息

2  level 1 + 数据库信息 + 检查点信息  

3  level 2 + 可重用节信息  

10 level 3

7).Redo log Header 

Alter SESSION SET EVENTS immediate trace name redohdr level n  

1   控制文件中的 redo log 信息  

2  level 1 + 通用文件头信息  

3  level 2 + 完整日志文件头信息  

10 level 3

8).Redo log 

Alter SYSTEM DUMP LOGFILE FileName  

Alter SYSTEM DUMP LOGFILE FileName  

SCN MIN MinimumSCN 

SCN MAX MaximumSCN 

TIME MIN MinimumTime 

TIME MAX MaximumTime 

LAYER Layer 

OPCODE Opcode 

DBA MIN FileNumber . BlockNumber 

DBA MAX FileNumber . BlockNumber 

RBA MIN LogFileSequenceNumber . BlockNumber 

RBA MAX LogFileSequenceNumber . BlockNumber; 

其中 time = (((((yyyy – 1988)) * 12 + mm – 1) * 31 + dd – 1) * 24 + hh) * 60 + mi) * 60 + ss;

  详细内容请看:http://blog.csdn.net/yidian815/article/details/12568027

9).Loghist 

Alter SESSION SET EVENTS immediate trace name loghist level n  

n=1 dump 控制文件中最早和最迟的日志历史项  

n 1 dump 2^n 个日志历史项

获取诊断事件号

    大部分的诊断事件的数值都是在 10000 至 10999 范围内,使用如下的脚本可以查看到所有的诊断事件:

[sql] 

SET SERVEROUTPUT ON  

  DECLARE  

  err_msg VARCHAR2(120);  

  BEGIN  

  dbms_output.enable (1000000);  

  FOR err_num IN 10000..10999  

  LOOP  

  err_msg := SQLERRM (-err_num);  

  IF err_msg NOT LIKE %Message ||err_num|| not found% THEN  

  dbms_output.put_line (err_msg);  

  END IF;  

  END LOOP;  

 END;  

  / 

上述就是丸趣 TV 小编为大家分享的怎么理解 ORACLE 事件跟踪了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计5741字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)