利用errorstack event解决问题

原创 2007年10月09日 09:09:00
Oracle提供接口用于诊断Oracle的错误信息。
诊断事件可以在Session级设置,也可以在系统级设置,通常如果要诊断全局错误,最好在系统级设置,以下是一个测试例子,所选事件只以示范为目的:


            
摘要:在任何一种解决问题之前,必须要先知道问题的原因,才可以作到有的放矢。解决问题的方法并不是很难找,难能可贵的是能够及时准确地定位问题。本文介绍一种利用trace event来定位问题所在的方法。
 
某天现场人员报告说exp的时候报权限不足的错误。
 
是用当前用户作的用户级别的exp,按理说应该没有什么权限的问题。
 
按照现场的情况作了测试,果然重现了问题。
 
d:Temp>exp parfile=exp.par
Export: Release 9.2.0.5.0 - Production on Tue Dec 21 22:27:13 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
EXP-00008: ORACLE error 1031 encountered
ORA-01031: insufficient privileges
EXP-00000: Export terminated unsuccessfully
 
其中exp.par的内容如下:
 
userid=scott/tiger
file=.scott.dmp
indexes=y
grants=y
rows=y
constraints=y
owner=scott
direct=n
compress=n
feedback=10000
resumable=y
resumable_timeout=7200
log=.export.log
 
没有发现什么问题,那么作一个trace吧,于是决定使用errorstack event,由于exp是在命令行中直接执行的,所以只能对整个数据库系统作trace,由于只是想知道ORA-01031错误的发生原因,所以用以下语句:
 
alter system set events '1031 trace name errorstack level 3';
 
如果想捕获什么错误,就直接用错误号作trace,此处我们想获知ORA-01031的错误原因,所以使用了’1031 trace name errorstack level 3
 
然后重新运行exp,仍然报错,这时候在udump目录中生成了trace文件,检查文件内容,发现:
 
*** SESSION ID:(15.210) 2004-12-21 22:22:36.704
*** 2004-12-21 22:22:36.704
ksedmp: internal or fatal error
ORA-01031: insufficient privileges
Current SQL statement for this session:
ALTER SESSION ENABLE RESUMABLE TIMEOUT 7200
 
原来问题出在ENABLE RESUMABLE部分,这是9i的新特性,用于在出现空间不足的问题时,挂起整个操作以等待操作人员解决空间问题。
 
只要确认了问题所在,就很好解决了,其实如果详细地看过adminitrator文档,也就不会犯这个错误,文档里面Enabling and Disabling Resumable Space Allocation部分很清楚地写着:如果要使用resumbale特性,那么必须有resumable系统权限。
 
检查现场用户的权限,发现只有connect和resource权限。于是:
 
grant resumable to username;
 
当然如果象一些应用里面那样,用户始终是具有DBA角色的话,那么永远也不会发生这个错误,因为DBA角色本来就具有esumable系统权限。不过为了安全起见,我们的应用中用户都不会具有DBA权限。
 
解决问题的方法很简单,没什么好说的,本文想介绍的也是发现问题的手段,也就是利用set events的方法。这个方法在我们对一个错误感到莫名其妙的时候往往会成为指路明灯。
 
作为本文的补充,提供几个常见的用于Troubleshooting或者Tuning或者Interal研究的Oracle Events。
 
10032事件:用于dump排序操作的统计值,Level 10是最详细的级别。
 
ALTER SESSION SET EVENTS '10032 trace name context forever, level 10';
 
10046事件:用于跟踪SQL执行过程,这是我们在调整一个SQL时比较常见的方法。Level 12是最详细的级别。
 
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
 
其中各个Level的含义:
 
1:显示SQL语句,执行计划和执行统计值
 
4:显示级别1的内容和绑定变量
 
8:显示级别1的那同和等待事件统计
 
12:显示级别1的内容和绑定变量、等待事件统计
 
10053事件:当Oracle使用CBO进行执行计划的生成时,可以使用这个事件对于执行计划的生成过程进行跟踪。
 
ALTER SESSION SET EVENTS '10053 trace name context forever, level 1';
 
10081事件:用于跟踪HWM(高水位标志)的变更
 
ALTER SESSION SET EVENTS '10081 trace name context forever, level 1';

errorstack 工具介绍

原文:http://www.orafan.net/blog/223.html/comment-page-1#comment-13 1.alter system set event :此方法对spfil...
  • rgb_rgb
  • rgb_rgb
  • 2013-01-03 13:43:34
  • 2520

Oracle errorstack 工具 说明

Errorstack 和 oradebug 命令类似,都是帮助我们诊断错误信息。有关oradebug 参考我的Blog:       Oracle oradebug 命令 使用说明       htt...
  • tianlesoftware
  • tianlesoftware
  • 2011-06-04 01:59:00
  • 6824

errorstack 工具使用介绍

一、概述 在Oracle数据库运行过程中,我们经常会遇到这样或那样的错误,但是错误的提示并不具体,加大了我们在诊断问题时的难度。 ErrorStack是Oracle提供的一种对于错误堆栈进行跟踪的方法...
  • shiyu1157758655
  • shiyu1157758655
  • 2017-08-24 16:31:48
  • 305

oradebug 命令使用说明

HELP           [command]                 Describe one or all commands             SETMYPID        ...
  • sharqueen
  • sharqueen
  • 2013-07-17 10:43:35
  • 906

Oracle ErrorStack 使用和阅读详解

在Oracle数据库运行过程中,我们经常会遇到这样或那样的错误,但是错误的提示并不具体,加大了我们在诊断问题时的难度。 ErrorStack是Oracle提供的一种对于错误堆栈进行跟踪的方法,通过设置...
  • oradh
  • oradh
  • 2014-07-01 13:22:42
  • 2290

跟踪事件之——alter system set event和set events的区别

今天按照Oracle Support的建议设置event的时候发现set event和set events这两种写法效果不一样,防止忘记先记下来。 1. alter system set eve...
  • okhymok
  • okhymok
  • 2017-12-13 09:45:05
  • 111

第5章循环结构

1.循环结构有哪些?       While循环;do-while循环 2.利用循环结构解决问题的步骤?       分析循环条件和循环操作;套用语法写出代码;检查循环能否退出 3.三种循环的...
  • qq_38181976
  • qq_38181976
  • 2017-04-21 22:23:42
  • 307

回溯法解决问题的3个步骤

(1)针对所给问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先的方式搜索解空间; (4)回溯法搜遍整个解空间,最后得到最优解。 N皇后问题也是回溯方法的典型应用。...
  • zhuhai__yizhi
  • zhuhai__yizhi
  • 2015-04-14 10:47:25
  • 578

解决问题的一般思路

逻辑问题:有些时候会遇到很恶心的逻辑 当想不明白或者想不通的时候,我会试着一步一步把逻辑写在纸上,写写画画,非常有助于思考,这样就会很清晰,如果在某一步被卡住了,那么问题的关键也找到了。做一些其他无关...
  • u014600626
  • u014600626
  • 2016-07-18 14:45:23
  • 200

不使用循环结构解决循环问题的方法

循环问题的另类解决办法。
  • delphiwcdj
  • delphiwcdj
  • 2011-03-12 14:38:00
  • 689
收藏助手
不良信息举报
您举报文章:利用errorstack event解决问题
举报原因:
原因补充:

(最多只允许输入30个字)