问题描述
我们有一个大游标,每晚运行,在一个随机的晚上,我们得到以下错误从调用游标的作业:
180911 180019 (APPS.GAINS_COMMON,1194) 开始导出数据
180911 194348 (APPS.GAINS_COMMON,4735) 开始导出sla
180911 205839 (APPS.GAINS_COMMON,5526) ORA-06512: 在 “APPS.DCRD_GAINS_COMMON”,第4744行
180911 205839 (APPS.GAINS_COMMON,5527) export_sla中的错误: ORA-08103: 对象不再存在
按照时间戳,导出光标从19:43开始,在20:58以ORA_08103错误结束。我遇到的问题是我无法识别缺少对象的对象id或名称。
我已经搜索了大约在那个时候创建的trc文件,但是结果是空的。
如何从ORA-08103错误中捕获对象id?
180911 180019 (APPS.GAINS_COMMON,1194) 开始导出数据
180911 194348 (APPS.GAINS_COMMON,4735) 开始导出sla
180911 205839 (APPS.GAINS_COMMON,5526) ORA-06512: 在 “APPS.DCRD_GAINS_COMMON”,第4744行
180911 205839 (APPS.GAINS_COMMON,5527) export_sla中的错误: ORA-08103: 对象不再存在
按照时间戳,导出光标从19:43开始,在20:58以ORA_08103错误结束。我遇到的问题是我无法识别缺少对象的对象id或名称。
我已经搜索了大约在那个时候创建的trc文件,但是结果是空的。
如何从ORA-08103错误中捕获对象id?
专家解答
我要做的第一件事是查看该软件包的第474行。大概 (或接近) 将是一个SQL语句,它将为您提供相关的潜在对象。如果只有1张表,那么就有您的答案。如果有多个表,那么一些人工评估可以帮助找出哪一个是罪魁祸首。
当查询开始时存在的段不再存在或已重新定位时,将发生ora-8103。因此,请查看这些表,看看是否有人正在进行定期维护,例如截断或移动操作。
如果所有其他方法均失败,则可以看到一个错误堆栈,以在发生该错误时收集更多信息,例如
alter会话集事件 '8103跟踪名称errorstack级别3';
得到一个完整的跟踪转储。
当查询开始时存在的段不再存在或已重新定位时,将发生ora-8103。因此,请查看这些表,看看是否有人正在进行定期维护,例如截断或移动操作。
如果所有其他方法均失败,则可以看到一个错误堆栈,以在发生该错误时收集更多信息,例如
alter会话集事件 '8103跟踪名称errorstack级别3';
得到一个完整的跟踪转储。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




