小知识:使用errorstack定位特定问题

知识,使用,errorstack,定位,特定,问题 · 浏览次数 : 152

小编点评

## Using ErrorStack to Diagnose ORA-2289 The following example demonstrates how to use the `errorstack` feature in Oracle to diagnose the `ORA-2289` error: **Step 1: Start the errorstack** ```sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Wed Apr 26 22:00:21 2023Version 19.16.0.0.0Copyright (c) 1982, 2022, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.16.0.0.0SQL> select s2.nextval from dual; select s2.nextval from dual *ERROR at line 1:ORA-02289: sequence does not existSQL> exit ``` **Step 2: Analyze the errorstack** The output shows the following details: - **Error number:** 2289 - **Sequence:** `null` - **SQL statement:** `select s2.nextval from dual` - **Location:** `dbkda.c@298` (this indicates the file and line where the error occurred) **Step 3: Investigate further** - Check the `demo_ora_3435.trc` file in the `Oracle database` directory. This file should contain the actual SQL statement that caused the error. - Use the `sqlplus -l` option to run the SQL statement directly. This can help you determine if the error is caused by the database or by other factors. **Possible causes of ORA-2289:** - **Database issue:** The sequence `null` could indicate an issue with the database itself. - **Application issue:** The application might be trying to access a non-existent sequence or be making a mistake in the SQL statement. - **Misconfiguration:** The application might be configured to use a specific sequence that is not available. **Additional tips:** - Use the `errorstackalter` commands to control the level and depth of the error stack. - Use the `sqlplus -V` option to get more verbose error information. By following these steps, you can diagnose the `ORA-2289` error and identify the underlying cause.

正文

有客户遇到ORA-2289的报错,同事协助去现场排查,我帮着远程共同check下。
客户只是应用端报出的错误,为了进一步定位,服务端需要开errorstack协助定位具体问题。
下面就以这个ORA-2289为例,示范下errorstack的使用方法。

--开启errorstack
alter system set events '2289 trace name errorstack level 3';

--关闭errorstack
alter system set events '2289 trace name errorstack off';

开启errorstack期间,模拟一个会话发生了ORA-02289的报错:

[oracle@bogon trace]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Apr 26 22:00:21 2023
Version 19.16.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.16.0.0.0

SQL> select s2.nextval from dual;
select s2.nextval from dual
       *
ERROR at line 1:
ORA-02289: sequence does not exist


SQL> exit

在alert告警日志可以看到提示:

2023-04-26T22:00:27.300427+08:00
Errors in file /u01/app/oracle/diag/rdbms/demo/demo/trace/demo_ora_3435.trc:
ORA-02289: sequence does not exist

进而在trc文件中进一步查询具体报错的SQL信息等:

[oracle@bogon trace]$ vi demo_ora_3435.trc 
...
   17 *** 2023-04-26T22:00:27.300081+08:00 (CDB$ROOT(1))
   18 *** SESSION ID:(2548.56891) 2023-04-26T22:00:27.300150+08:00
   19 *** CLIENT ID:() 2023-04-26T22:00:27.300158+08:00
   20 *** SERVICE NAME:(SYS$USERS) 2023-04-26T22:00:27.300164+08:00
   21 *** MODULE NAME:(sqlplus@bogon (TNS V1-V3)) 2023-04-26T22:00:27.300170+08:00
   22 *** ACTION NAME:() 2023-04-26T22:00:27.300177+08:00
   23 *** CLIENT DRIVER:(SQL*PLUS) 2023-04-26T22:00:27.300182+08:00
   24 *** CONTAINER ID:(1) 2023-04-26T22:00:27.300189+08:00
   25 
   26 dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)
   27 ----- Error Stack Dump -----
   28 <error barrier> at 0x7ffed8393280 placed dbkda.c@298
   29 ORA-02289: sequence does not exist
   30 ----- Current SQL Statement for this session (sql_id=c6bu1kcbt5z3f) -----
   31 select s2.nextval from dual
   32 
   33 ----- Call Stack Trace -----
   34 calling              call     entry                argument values in hex
   35 location             type     point                (? means dubious value)
   36 -------------------- -------- -------------------- ----------------------------
   37 ksedst1()+95         call     kgdsdst()            7FFED83926E0 000000002
...

我这里模拟是直接查询了不存在的序列,但是报这个错误其实未必是数据库问题,可以在MOS多搜索下相关案例,也有程序配置问题导致的情况。

与小知识:使用errorstack定位特定问题相似的内容:

小知识:使用errorstack定位特定问题

有客户遇到ORA-2289的报错,同事协助去现场排查,我帮着远程共同check下。 客户只是应用端报出的错误,为了进一步定位,服务端需要开errorstack协助定位具体问题。 下面就以这个ORA-2289为例,示范下errorstack的使用方法。 --开启errorstack alter sys

小知识:使用oracle用户查看RAC集群资源状态

正常情况按照标准配置的环境变量,只能grid用户查看RAC集群资源状态。 crsctl stat res -t 但是绝大部分操作其实都是oracle用户来操作,比如启停数据库,操作完成以后就需要检查下集群资源状态。 看到好多DBA在现场操作时就是来回各种切换或开多个窗口。 其实有两个简单的解决方法可

小知识:SQL Monitor Report的使用

在上一篇 优化利器In-Memory开启和效果 中,提到的两个SQL对比,使用的是传统的dbms_xplan.display_cursor方式来查看执行计划,好处是文本输出的通用性强,基本信息也都有。 但如果大家参加过我们的RWP培训,就会发现O原厂强烈推荐大家使用的一个工具是 SQL Monito

[转帖]Linux小知识:sudo su和su的区别

https://www.cnblogs.com/jiading/p/11717388.html su是申请切换root用户,需要申请root用户密码。有些Linux发行版,例如ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码。 而s

一文搞懂Maven配置,从此不再糊涂下载依赖(文末有成品)

一般来说Maven都是配合着idea一起使用,下载依赖速度慢就去网上找个镜像配置一下,但总会遇到莫名其妙的问题,比如镜像源不生效、Error reading file pom.xml等等。今天详细讲解一下maven配置文件settings.xml的配置方法。 小知识 maven的配置文件存在于两个地

使用ChatGPT自动构建知识图谱

1.概述 本文将探讨利用OpenAI的gpt-3.5-turbo从原始文本构建知识图谱,通过LLM和RAG技术实现文本生成、问答和特定领域知识的高效提取,以获得有价值的洞察。在开始前,我们需要明确一些关键概念。 2.内容 2.1 什么是知识图谱? 知识图谱是一种语义网络,它表示和连接现实世界中的实体

前端需要了解的计算机网络方面的知识

1.TCP/IP 五层模型 物理层、数据链路层、网络层、传输层、应用层 2.应用层中哪些基于TCP协议,哪些基于UDP?有什么区别? 2.1.TCP: FTP(文件传输协议):定义了文件传输协议,使用21端口。 TELNET(远程登陆协议):一种用于远程登陆的端口,使用23端口,用户可以以自己的身份

如何使用并查集解决朋友圈问题?

本文已收录到 GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 私信我提问。 前言 大家好,我是小彭。 今天分享到的是一种相对冷门的数据结构 —— 并查集。虽然冷门,但是它背后体现的算法思想却非常精妙,在处理特定

使用单调栈解决 “下一个更大元素” 问题

本文已收录到 GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 私信我提问。 前言 大家好,我是小彭。 今天分享到一种栈的衍生数据结构 —— 单调栈(Monotonic Stack)。栈(Stack)是一种满足后

使用单调队列解决 “滑动窗口最大值” 问题

本文已收录到 GitHub · AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 私信我提问。 前言 大家好,我是小彭。 在上一篇文章中,我们介绍了单调栈这种特殊的栈结构,单调栈是一种非常适合处理 “下一个更大元素问题” 的数据结