> 历史信息查看请查看个人网页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)