返回顶部
首页 > 资讯 > 数据库 >如何使用ErrorStack进行错误跟踪及诊断
  • 812
分享到

如何使用ErrorStack进行错误跟踪及诊断

2024-04-02 19:04:59 812人浏览 八月长安
摘要

这篇文章主要为大家展示了“如何使用ErrorStack进行错误跟踪及诊断”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用ErrorStack进行错误跟踪及

这篇文章主要为大家展示了“如何使用ErrorStack进行错误跟踪及诊断”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用ErrorStack进行错误跟踪及诊断”这篇文章吧。

使用ErrorStack进行错误跟踪及诊断

在使用

数据库的过程中,可能会遇到各种各样的错误或异常,很多异常的提示并不具体,我们有必要了解一下的跟踪方式。

是提供的一种对于错误堆栈进行跟踪的方法,通过设置跟踪可以将一些错误的后台信息详尽地转储出来,写入跟踪文件,对于错误的研究与诊断非常有效。

ErrorStack40 1 2 Level1 + ProcessState

(显示所有,着重显示当前)

可以在实例级或会话级别设置,也可以在参数文件中设置,这个设置仅当某个特定的错误出现时才被触发,如设置事件的跟踪:

一个客户曾经出现如下错误,提示数据的精度超过允许值,是后台调度的任务:

Errors in file /admin/erpdb/bdump/erpdb1_j000_447020.trc:
ORA-01438: value larger than specified precision allowed for this column
ORA-06512: at line 1

sqlErrorStackSQLalter system set events='1438 trace name errorstack forever,level 3';

alter system set events='1438 trace name errorstack off';

oracle 10gMon Jul 13 10:48:392009
Mon Jul 13 10:56:06 2009
ORA-01438: value larger than specified precision allowed for this column
Trace dumping is perfORMing id=[cdmp_20090713105608]
OS Pid: 541528 executed alter system set events '1438 trace name Errorstackoff'

SQLSQLSQLNumber***SESSION ID:(857.16304) 2009-07-13 10:56:06.429
ksedmp: internal or fatal error
Current SQL statement for this session:
----- PL/SQL Call Stack -----
handle number name
700000336a1a070 236 procedure ERP.PROC_AUTOBATPROC
700000342eb7c20 1 anonymous block

可以很容易地测试这一功能的使用,比如使用如下代码中的测试过程:

SQL> connect eygle/eygle
Table created.
insert into t values(a,1)
ERROR at line 1:
SQL> alter system set events '984 trace name errorstack off';

Mon Jul 13 22:55:592009
Mon Jul 13 22:59:12 2009
ORA-00984: column not allowed here
OS Pid: 2431 executed alter system set events '984 trace name errorstack off'

insert*** 2009-07-13 22:59:12.928
ORA-00984: column not allowed here
insert into t values(a,1)
calling call entry argument values in hex
-------------------- -------- -------------------- ----------------------------



以下引用在ITPUB上的一个讨论,是使用ErrorStack跟踪解决问题的典型案例(原文链接指向ITPUB)

Import: Release 10.2.0.1.0 - Production on Tue Mar 18 14:19:49 2008

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

Export file created by EXPORT:V10.02.01 via conventional path

. importing DBA_MGR's objects into DBA_MGR

IMP-00058: ORACLE error 1438 encountered

IMP-00028: partial import of previous table rolled back: 20501 rows rolled back

System altered

然后重新执行IMP;

2、查看UDUMP下日志,如下:

/opt/oracle/admin/orcl/udump/orcl_ora_32355.trc

With the Partitioning, OLAP and Data Mining options

System name:linux

Release:2.6.9-22.ELsmp

Machine:x86_64

Redo thread mounted by this instance: 1

Unix process pid: 32355, image: oracle@zhx25.cccc.com (TNS V1-V3)


*** SESSION ID135.949) 2008-03-18 17:11:02.014

ksedmp: internal or fatal error

Current SQL statement for this session:

("PRTNO", "SEQNO", "SEQDESC", "PRTEFLAG", "SEQCC", "SEQNXTNO", "SEQDEPT", "WKCCODE", "WKCALTCODE", "SEQSETHR", "LAB_SEQSETHR", "SEQRUNHR", "LAB_SEQRUNHR", "SEQQUEHR", "LAB_SEQQUEHR", "SEQtRANHR", "LAB_SEQTRANHR", "SEQNOQLTRAT", "SEQCHGDAT", "SEQCHGRSN", "SEQCHGCTLR", "MACHCODE", "MACHALTCODE", "RESCODE", "KEYSEQ", "SEQCRYLOT", "INITOVERRATE", "COMWORK", "SEQLOTFLAG", "SEQEFDAT", "SEQIEFDAT", "SEQEFLOTNO", "SEQIEFLOTNO", "SEQECONO", "PRTSEQCST", "SEQSELFCST", "INVYORN", "SEQQTY", "SEQNOTE", "NOPRTAVELZ", "OUTSEQFLAG", "WXCST", "SEQGSCHGCTLR", "SEQGSCHGDAT", "SEQSHCTL", "SEQSHDAT", "SEQSHSIGN", "PRICE", "ACCNO", "ROUSTAT", "FIXMFLAG", "BANCL"  (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25, :26, :27, :28, :29, :30, :31, :32, :33, :34, :35, :36, :37, :38, :39, :40, :41, :42, :43, :44, :45, :46, :47, :48, :49, :50, :51, :52)

calling

entry

location

point

…………


Offsi = 48, Offsi = 1440


Bind Twotask Scalar Sql In (may be out) Copy 


Offsi = 48, Offsi = 1472


Bind Twotask Scalar Sql In (may be out) Copy 


Offsi = 48, Offsi = 1504


Bind Twotask Scalar Sql In (may be out) Copy 


Offsi = 48, Offsi = 1536


Bind Twotask Scalar Sql In (may be out) Copy 


Offsi = 48, Offsi = 1568


Bind Twotask Scalar Sql In (may be out) Copy 


Offsi = 48, Offsi = 1600


Bind Twotask Scalar Sql In (may be out) Copy 


Offsi = 48, Offsi = 1632

Bind#0

oacflg=03 fl2=1000010 frm=01 csi=852 siz=3344 off=0


bln=32

flg=05


<span "="" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important;">value="?


oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00

kxsbbbfp=2a974dc3b8

value=###

Dump of memory from 0x0000002A974CDE88 to 0x0000002A974CDE9E

2A974CDE90 C9BBC6C8 52024D01 30310248 00003304[.....M.RH.10.3..]


oacdty=01 mxl=32(30) mxlc=00 mal=00 scl=00 pre=00

kxsbbbfp=2a974dc3D0

avl=00

Bind#3

oacflg=03 fl2=1000010 frm=01 csi=852 siz=0 off=88

bln=32

flg=01


…………

从跟踪文件可以看到,问题是系统认为地址为2A974CDE88的数值非法,在导入会提示ORA-1438错误。

3、找到DMP中相关数据

用winhex打开dmp文件,搜索十六进制串“2E313133 02C10604 C8C6BBC9 014D0252 48023130 0433F3FF”(对trace文件中的值要进行顺序调整)

5、对数据库相关数据项的类型进行调整

把数据项的类型由number(*)改为number(38);

6、重新进行数据导入

[oracle@zhx25 ~]$ imp system/ceshi fromuser=dba_mgr touser=dba_mgr tables=t_routdef ignore=y file=1.dmp


Copyright (c) 1982, 2005, Oracle.Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

Export file created by EXPORT:V10.02.01 via conventional path

. importing DBA_MGR's objects into DBA_MGR

"T_ROUTDEF"

以上是“如何使用ErrorStack进行错误跟踪及诊断”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何使用ErrorStack进行错误跟踪及诊断

本文链接: https://lsjlt.com/news/64122.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用ErrorStack进行错误跟踪及诊断!
    在使用oracle数据库的过程中,可能会遇到各种各样的错误或异常,很多异常提示并不具体,我们有必要了解一下oracle的ErrorStack跟踪方式。ErrorStack是oracle提供的一种对于错...
    99+
    2024-04-02
  • 如何使用ErrorStack进行错误跟踪及诊断
    这篇文章主要为大家展示了“如何使用ErrorStack进行错误跟踪及诊断”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用ErrorStack进行错误跟踪及...
    99+
    2024-04-02
  • 如何利用errorstack事件进行错误跟踪和诊断
    这篇文章主要为大家展示了“如何利用errorstack事件进行错误跟踪和诊断”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用errorstack事件进行错...
    99+
    2024-04-02
  • Python OpenCV如何使用dlib进行多目标跟踪
    这篇文章主要讲解了“Python OpenCV如何使用dlib进行多目标跟踪”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python OpenCV如何使用dlib进行多...
    99+
    2023-06-29
  • PHP中如何进行故障诊断和容错分析?
    PHP是一种流行的编程语言,被广泛用于网站开发和服务端程序编写等领域。由于PHP应用程序的规模和复杂性不断增加,程序中的故障和错误也不可避免。因此,进行故障诊断和容错分析是PHP程序员必备的技能之一。本文将介绍PHP中故障诊断和容错分析的基...
    99+
    2023-05-22
    PHP 故障诊断 容错分析
  • 使用类型断言进行错误处理是错误的吗?
    使用类型断言进行错误处理是一种常见的做法,但是否错误取决于具体情况。类型断言可以用于验证传入的参数类型是否符合预期,从而在代码中提前捕获错误。然而,如果错误处理依赖于类型断言而忽略了其...
    99+
    2024-02-10
  • SAP-BASIS税码变更及如何进行账号角色变更跟踪查询
    这篇文章给大家介绍SAP-BASIS税码变更及如何进行账号角色变更跟踪查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。SAP税码变更,属于后台配置操作,更改前,需要考虑其会影响整个系统的所有涉及税码的报表,一般的Ab...
    99+
    2023-06-05
  • STM32在Keil环境下怎么使用Cm_Backtrace进行错误追踪
    小编给大家分享一下STM32在Keil环境下怎么使用Cm_Backtrace进行错误追踪,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一...
    99+
    2024-04-02
  • C#中如何使用日志记录跟踪程序运行
    C#中如何使用日志记录跟踪程序运行,需要具体代码示例引言:在开发软件时,常常需要对程序运行情况进行跟踪和记录,以便在出现问题时能够准确找到问题所在。日志记录是一种重要的技术手段,可以记录程序的运行状态、错误信息和调试信息,以便进行异常定位和...
    99+
    2023-10-22
    跟踪 程序运行 C#: 日志记录
  • CocosCreator如何使用cc.follow进行镜头跟随
    小编给大家分享一下CocosCreator如何使用cc.follow进行镜头跟随,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CC.Follow使用一、设置地图适...
    99+
    2023-06-14
  • php如何使用curl进行跟随跳转
    今天小编给大家分享一下php如何使用curl进行跟随跳转的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、什么是跟随跳转跟随...
    99+
    2023-07-05
  • 如何使用 Golang 协程进行错误处理?
    在 go 协程中处理错误可使用 panic 和 recover 机制。panic 可触发异常,而 recover 用于在协程中捕获异常,可返回指向 panic 值的指针。通过使用 pan...
    99+
    2024-05-21
    golang 协程
  • 在PHP和Bash中使用日志记录:如何轻松诊断和修复错误?
    在开发和维护一个应用程序时,出现错误是不可避免的。为了更好地诊断和修复这些错误,我们需要使用一些工具来记录应用程序的运行情况和错误信息。其中,日志记录是一个非常重要的工具。本文将介绍如何在PHP和Bash中使用日志记录来轻松诊断和修复错误...
    99+
    2023-09-01
    bash 日志 http
  • 如何使用describe命令进行Kubernetes pod错误排查
    本篇内容主要讲解“如何使用describe命令进行Kubernetes pod错误排查”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用describe命令进行Kubernetes pod错...
    99+
    2023-06-05
  • 如何使用 Python Spring 开发技术日志记录来诊断和解决应用程序中的错误?
    Python Spring 是一种流行的开发框架,它提供了许多强大的工具来帮助开发人员构建高质量的应用程序。其中一个重要的工具就是技术日志记录,它可以帮助开发人员诊断和解决应用程序中的错误。在本文中,我们将探讨如何使用 Python Spr...
    99+
    2023-07-05
    spring 开发技术 日志
  • 404和500等错误如何使用SpringBoot拦截器进行拦截
    这篇文章将为大家详细讲解有关404和500等错误如何使用SpringBoot拦截器进行拦截,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天给大家介绍一下SpringBoot中拦截器的用法,...
    99+
    2023-05-31
    springboot 拦截器
  • 如何在R语言中使用Fisher进行判断
    如何在R语言中使用Fisher进行判断?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 判别分析与Fisher判别不严谨但是通俗的说法,判别分析(Discriminant...
    99+
    2023-06-14
  • 如何使用调试诊断工具排查IIS中进程CPU使用率过高的问题
    要使用调试诊断工具来排查IIS中进程CPU使用率过高的问题,可以按照以下步骤进行操作:1. 确认问题:首先,需要确认是否真的存在进程...
    99+
    2023-09-08
    CPU
  • 如何使用Visual Studio Code对Node.js进行断点调试
    这篇文章主要介绍如何使用Visual Studio Code对Node.js进行断点调试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在开发的过程中,几乎不可能一次性就能写出毫无破绽...
    99+
    2024-04-02
  • golang 如何使用类型断言进行类型转换
    go 中类型断言用于将接口值转换为更具体的类型。它包含以下步骤:声明接口值和目标类型。使用类型断言语法将接口值转换为目标类型,并将结果赋值给变量。使用布尔变量检查转换是否成功。如果转换失...
    99+
    2024-05-01
    类型转换 类型断言 golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作