【IT168 技术文章】

Oracle 为RDBMS 提供了多种的诊断工具,诊断事件(Event)是其中一种常用、好用的方法,它使DBA 可以方便的转储数据库各种结构及跟踪特定事件的发生.

一、Event 的通常格式及分类

1、通常格式如下

EVENT=""

2、 Event 分类

诊断事件大体上可以分为四类:

a. 转储类事件:它们主要用于转储Oracle 的一些结构,例如转储一下控制文件、数据文件头等内容。

b. 捕捉类事件:它们用于捕捉一些Error 事件的发生,例如捕捉一下ORA-04031 发生时一些Rdbms 信息,以判断是Bug 还是其它原因引起的这方面的问题。

c. 改变执行途径类事件:它们用于改主一些Oracle 内部代码的执行途径,例如设置10269 将会使Smon 进程不去合并那些Free 的空间。

d. 跟踪类事件:这们用于获取一些跟踪信息以用于Sql 调优等方面,最典型的便是10046 了,将会对Sql 进行跟踪。

3、说明

a. 如果immediate 放在第一个说明是无条件事件,即命令发出即转储到跟踪文件。

b. trace name 位于第二、三项, 除它们外的其它限定词是供Oracle 内部开发组用的。

c. level 通常位于1-10 之间(10046 有时用到12),10 意味着转储事件所有的信息。例如当转储控制文件时,level1 表示转储控制文件头,而level 10 表明转储控制文件全部内容。

d. 转储所生成的trace 文件在user_dump_dest 初始化参数指定的位置。

二、设置的问题了

可以在init.ora 中设置所需的事件,这将对所有会话期打开的会话进行跟踪,也可以用alter session set event 等方法设置事件跟踪,这将打开正在进行会话的事件跟踪。

1、在init.ora 中设置跟踪事件的方法

a. 语法

EVENT=”event 语法|,level n|:event 语法|,level n|…”

b. 举例

event=”10231 trace name context forever,level 10’

c. 可以这样设置多个事件:

EVENT="\10231trace name context forever,level10:\10232trace name context forever,level10"

2、通过Alter session/system set events 这种方法举个例子大家就明白了

Example:

Altersessionsetevents ‘immediate trace name controlflevel10’;Altersessionsetevents ‘immediate trace name blockdumplevel112511416’; (*)

在oracle8x 及之上的版本也有这样的语句:

Alter system dump datafile 13 block 15; 实现的功能与(*)是类似的。

3、使用DBMS_SYSTEM.SET_EV 的方法

a. 过和定义如下

DBMS_SYSTEM.SET_EV(

SI Binary_integer,

SE Binary_integer,

EV Binary_integer,

LE Binary_integer,

NM Binary_integer);

SI: 即v$session 中的sid SE:即v$session 中的serial# EV: 要设置的事件LE:要设置事件的级别NM:名称

b. 举个例子,以10046 为例SQL> EXECUTE SYS.DBMS_SYSTEM.SET_EV(sid,serial#,10046,12,'''');

4、使用Oradebug 来设置诊断事件的方法同样举个例子大家就明白了:

a. 找到spid SQL>select username, sid, serial#, paddr from v$session where username=''qiuyb'';

USERNAME SID SERIAL# PADDR

HRB3 265 910 C000000084435AD8

SQL>SELECT ADDR,PID,SPID FROM V$PROCESS WHERE ADDR=

C000000084435AD8'';

ADDR PID SPID

C000000084435AD8 91 4835

b. 设置事件,以10046 为例sqlplus /nolog SQL>connect / as sysdba; SQL>oradebug setospid 4835

SQL>oradebug unlimit --不限制转储文件的大小SQL> oradebug event 10046 trace name context

forever,level 12 --设置事件进行sql 跟踪

SQL> oradebug event 10046 trace name context off --关闭跟踪,注意不要用oradug 去跟踪oracle 的smon,pmon 等几个进程,操作不当可能会杀掉这几个后台进和引起宕库。

三、可能遇到的问题

1、我如何知道在系统中设置了哪些event?

回答:

a. 如果你的事件是在init.ora 中设置的可以用SQL>show parameter event;

来查看

b.

Michael R.Ault 给的SQL serveroutputonsize1000000declareevent_levelnumber;beginforiin10000..10999loop sys.dbms_system.read_ev(i,event_level);if(event_level>0)thendbms_output.put_line(''Event''||to_char(i)||''setatlevel''||to_char(event_level));endif;endloop;end;/

2、在oracle9i 中使用spfile 的那种如何设置诊断事件呢?

回答:

简单,Alter system 命令就可以完成

alter system set event=''10046 trace name context forever, level 12'' scope=spfile;

重启一下就生效了。

3、坏了,我的9i 设置完诊断事件,起不来了,报ORA-02194 错怎么办?

回答:

那你一定是在使用Alter system 时把某一项写错了, 比如把context 写成了conetxt 了,

可以做如下的解决:

a.由spfile 生成pfile

SQL>create pfile from spfile;

File created.

b.编辑pfile 以修正错误

Change... *.event=''10046 trace name conetxt forever, level 12''

-to- *.event=''10046 trace name context forever, level 12''

c.用pfile 启动

SQL>startup pfile=/.....

d.重新生成 SPFILE. SQL>create spfile from pfile; File created. 不同事件 level 有不同的意思例如:

10046 level 1:跟踪sql 语句,包括解析、执行、提取、提交和回滚等。level 4:包括变量的详细信息level

8:包括等待事件level 12:包括绑定变量与等待事件

我们可以通过下面的语句在SQLPLUS 中来得到可用Oracle 诊断事件列表

SETSERVEROUTPUTONDECLAREerr_msgVARCHAR2(120);BEGINdbms_output.enable (1000000);FORerr_numIN10000..10999LOOP

err_msg :=SQLERRM (-err_num);IFerr_msgNOTLIKE''%Message''||err_num||''notfound%''THENdbms_output.put_line (err_msg);ENDIF;ENDLOOP;END;/

通常事件不需要Oracle Support ,例如:

1、分析数据文件块,转储数据文件n 的块m alter system dump datafile n block m

2、分析日志文件alter system dump logfile logfilename;

3、分析控制文件的内容alter session set events ''immediate trace name CONTROLF level

10''

4、分析所有数据文件头alter session set events ''immediate trace name FILE_HDRS level

10''

5、分析日志文件头alter session set events ''immediate trace name REDOHDR level 10''

6、分析系统状态,最好每10 分钟一次,做三次对比alter session set events ''immediate trace

name SYSTEMSTATE level 10''

7、分析进程状态alter session set events ''immediate trace name PROCESSSTATE level 10''

8、分析Library Cache 的详细情况alter session set events ''immediate trace name

library_cache level 10''

oracle解析失败事件,ORACLE诊断事件及深入解析10053事件相关推荐

  1. ORACLE JOB 失败 查看,Oracle JOB异常中断原因分析

    注释 今天研发同事找我确认 PKG_WMS.proc_TaskMain 存储的 job 是否还在运行,竟发现 dba_jobs.NEXT_DATE=4000/1/1,如下看看究竟原因吧~ JOB 信息 ...

  2. oracle 登录失败次数,Oracle用户连续登录失败次数限制如何取消

    当用户连续登录失败次数过多时,Oracle会锁定该用户,"FAILED_LOGIN_ATTEMPTS"用于设置最大次数,超过该值则锁定该帐号. 要取消用户连续登录失败次数的限制可以 ...

  3. oracle启动失败怎么办,oracle 启动失败ORA-27300

    Server:  sun OS Db: 9.2.0.8 $ uname -a SunOS hsun90 5.8 Generic_117350-62 sun4u sparc SUNW,Sun-Fire- ...

  4. csv格式文件解析失败_理解CSV格式规范(解析CSV必备)

    什么是CSV 逗号分隔值(Comma-Separated Values,CSV),其文件以纯文本形式存储表格数据(数字和文本),文件的每一行都是一个数据记录.每个记录由一个或多个字段组成,用逗号分隔. ...

  5. oracle数据库连接拒绝,Oracle 数据库连接失败问题

    Oracle 数据库连接失败问题 Oracle 数据库连接失败问题 为什么80%的码农都做不了架构师?>>> 环境上安装的是oracle11g,其实oracle的安装是比较容易的,w ...

  6. 一个mapper接口有多个mapper.xml 文件_MyBatis 源码解析:映射文件的加载与解析(上)

    上一篇我们分析了配置文件的加载与解析过程,本文将继续对映射文件的加载与解析实现进行分析.MyBatis 的映射文件用于配置 SQL 语句.二级缓存,以及结果集映射等,是区别于其它 ORM 框架的主要特 ...

  7. oracle事件的特点,ORACLE 深入解析10053事件(1)

    本帖最后由 leonarding 于 2013-2-24 15:57 编辑 新年新说: 新年伊始,2012年过去了,我们又踏上了2013年的,回顾2012我们付出了很多,辛勤和汗水换来了知识和友谊,当 ...

  8. oracle resp_cpu含义,【原创】ORACLE 深入解析10053事件

    [原创]ORACLE 深入解析10053事件 发布时间:2020-08-09 16:47:25 来源:ITPUB博客 阅读:95 作者:kunlunzhiying 新年新说: 新年伊始,2012年过去 ...

  9. oracle的空闲等待事件,Oracle 常见的33个等待事件详解

    一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时 ...

  10. oracle事件号,oracle8管理员账号密码Oracle-等待事件解读

    概述 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件 ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. ...

最新文章

  1. “该文件包含不能在当前代码页(936)中表示的字符,请将该文件保存为 Unicode 格式以防止数据丢失”
  2. 自由自在意式手工冰淇淋式的生活方式
  3. 基于java的作业管理系统_基于java的作业管理系统
  4. 微信有电脑客户端吗_微信电脑版有哪些功能呢
  5. MySQL数据存储目录查找
  6. 什么是单模单纤/双纤光纤收发器?
  7. 六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)
  8. 学习Java笔记2018.3.31
  9. 移动端overflow-x去掉滑动条
  10. linux下mysql将表导出_linux下mysql导出数据表命令
  11. 在word上方添加页眉和页码,单双页不同(单页页码在右,页眉在左,偶页相反)
  12. 光遇挂_创作者与一束光的七年之约:陈星汉的Sky光遇详解
  13. Php 实现在文档只读功能,如何将只读文档变成可编辑模式?
  14. 达人评测 i5 12490f和i7 12700f差距 酷睿i512490f和i712700f对比
  15. Interop type 'Microsoft.Office.Interop.Word.ApplicationClass' cannot be embedded. Use the applicable
  16. 你必须要了解的8种数据分析思维
  17. 使用python+Selenium动态爬取《率土之滨》藏宝阁账号信息
  18. Linux对main未定义引用,当对体量使用实时时,对main的未定义引用
  19. LDPC编译码原理介绍
  20. PS网页设计教程XI——在PS中创建柔和的绿色环保的网页布局

热门文章

  1. 来自iSpy整理的最全海康大华IPC的RTSP连接地址
  2. you may be a victim of software counterfeiting 的解药(亲自验证过方法2)
  3. 《代码大全2》读书笔记 Week 1
  4. CLR探索系列:Windbg+SOS动态调试分析托管代码
  5. 如何把后台返回数据的根据某个选项去重新排序?
  6. C语言 03-第一个C程序代码分析
  7. 间接通过new 来申请一个二维的堆内存数组
  8. 帮我看看这点破事 EVENT
  9. “中文四六级”考试来了!《国际中文教育中文水平等级标准》发布
  10. Windows程序设计:MFC 、Winform 和 WPF 比较