> 历史信息查看请查看个人网页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实例的一些信息


[image:272 size:orig]



###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

[image:273 size:orig]

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

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

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

###4.4 PROCESS STATE DUMP

[image:274 size:orig]

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


###4.5 Execution Plan

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


##6.参考资料


[https://askdba.org/weblog/2008/04/errorstack-oracle-debugging-event/](https://askdba.org/weblog/2008/04/errorstack-oracle-debugging-event/)

[Oracle ErrorStack 使用和阅读详解](https://blog.csdn.net/oradh/article/details/36184107)