历史信息查看请查看个人网页www.zhaibibei.cn 这是一个坚持Oracle,Python原创内容的公众号,欢迎关注


这节讲ERRORSTACK的使用

1. ERRORSTACK介绍

ERRORSTACK可以用来:

  • 获取失败的SQL语句
  • 分析Oracle 错误的原因 (e.g ORA 4030, ORA- 4031).
  • 也可以被用于hang 的分析
  • 他也包含一些执行计划,可以用它来斩断ORA-1652错误(Excessive temp usage)

2. 调用ERRORSTACK

ERRORSTACK可以在system和session层调用

例如我们要诊断ORA - 1652错误

ERRORSTACK只有三个等级,三级为最高

alter system set events '1652 trace name errorstack level 3';
alter session set events '1652 trace name errorstack level 3';

我们也可以使用oradebug命令来调用

这里分析1234进程

sqlplus "/ as sysdba"

oradebug setospid 1234

oradebug unlimit

oradebug dump errorstack 3

3. ORA - 942错误

我们这里简单的以ORA - 942 table or view does not exist为例

SQL> alter session set events '942 trace name errorstack level 3';

Session altered.

SQL> 
SQL> select * from err;
select * from err
              *
ERROR at line 1:
ORA-00942: table or view does not exist

trace文件会在user_dump_dest 目录下

4. 文件分析

主要包含如下几个部分:

4.1 Trace file Header

主要为Oracle实例的一些信息

1.png

4.2 Failing SQL

这里显示的是失败的SQL

dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)
----- Error Stack Dump -----
----- Current SQL Statement for this session (sql_id=0wjycn5zghkkh) -----
select * from err

4.3 Call Stack

2.png

这里为一些内存里面的内容,看不懂~

一般为Oracle官方或开发人员分析使用

也可以用来搜索metalink查看相关的bug

4.4 PROCESS STATE DUMP

3.png

这里主要有一些进程相关的信息,Oracle Process id (pid),OS Process Id (ospid) 等

4.5 Execution Plan

这里语句没有执行成功所有没有执行计划

6.参考资料

https://askdba.org/weblog/2008/04/errorstack-oracle-debugging-event/

Oracle ErrorStack 使用和阅读详解