利用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';

第5章循环结构

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

解决问题的个人总结

本文纯属自己总结的一些解决问题的逻辑思路,适合本人自己,因为每个人都思维定向不一样,也许你的解决问题的思路更加简洁方便。我在这里只想和分享一下我自己的一些思考问题的思路,最近在做IOS方向的开发,其实...
  • liuzhihui666
  • liuzhihui666
  • 2017年03月24日 01:25
  • 175

三年IT经验的感悟之解决问题才是王道

三年IT经验的感悟 ——解决问题才是王道     最近,在QQ群中看到一些刚毕业的IT大学生谈自己的工作遭遇比如:加班很厉害,干着自己不怎么感兴趣的活,感觉自己能力很强但得不到重视。我在QQ上和他们...
  • letian0805
  • letian0805
  • 2013年11月23日 00:32
  • 1357

ORACLE数据库部分面试题目

1. 解释冷备份和热备份的不同点以及各自的优点   解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于...
  • u013700340
  • u013700340
  • 2014年05月03日 17:50
  • 685

谈谈程序员解决问题的能力

谈谈程序员解决问题的能力 解决问题的能力,程序员立业之本。 一般写文章我不会特意去写,而是有感而发的时候刚好又有时间我就会去写写文字。本想推些技术文章的,但写技术文章又很耗时,写得太浅显又没有技术...
  • wwj_748
  • wwj_748
  • 2017年03月25日 12:36
  • 5657

在Linux中如何利用backtrace信息解决问题

在Linux中如何利用backtrace信息解决问题 一、导读 在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈信息来找到出错的地方,这一点我们在调试一些高级编程语...
  • Ag6aww4FHO
  • Ag6aww4FHO
  • 2017年02月20日 21:09
  • 65

利用switch解决问题 课后题目

项目一 代码: /*利用switch解决问题 课后一 投票表决器*/ #include int main() { char c; scanf("%c",&c); swit...
  • wzting
  • wzting
  • 2015年12月06日 20:53
  • 316

三种最基础的博弈知识模型

博弈论——取石子问题 博弈论——取石子问题 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物 体若干,规定最后取光物体者取胜。这是我国民间很古老的一...
  • xuanandting
  • xuanandting
  • 2016年07月27日 16:45
  • 2552

在Linux中如何利用backtrace信息解决问题

在Linux中如何利用backtrace解决问题 一、导读 在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈信息来找到出错的地方,这一点我们在调试一些高级编程语言程序的时候...
  • jxgz_leo
  • jxgz_leo
  • 2016年12月05日 00:27
  • 5027

创造性的解决问题

创造性的解决问题 适用于问题不清楚并且复杂的情况。 例如:     Q1  要将新产品推向市场很困难。     Q2  某一条流水线上的机器一直重复当机。 六个阶段 1) 寻找切入点 2) 环...
  • wangzhiyu1980
  • wangzhiyu1980
  • 2013年12月01日 19:12
  • 979
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用errorstack event解决问题
举报原因:
原因补充:

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