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