Oracle利用errorstack追踪tomcat报错ORA-00903 无效表名的问题_oracle

来源:脚本之家  责任编辑:小易  

使用 Oracle Multimedia 的导出方法导出数据库中的 DICOM 数据要求数据库向数据库服务器的文件系统进行写入操作。向文件系统写入要求对您希望在其中写入输出 DICOM 文件的目录对象上的用户(PM 用户)授予写入权限。执行以下步骤:1.创建一个将 DICOM 数据导出到IMAGEDIR目录中的文件的过程。从 SQL*Plus 会话中,执行以下脚本:create_export_proccreate_export_proc.sql代码如下:Java代码create or replace procedure dicom_export(source_id number,filename varchar2)asdcmSrc ordsys.orddicom;beginselect dicom into dcmSrc from medical_image_tablewhere id=source_id;dcmSrc.export(FILE,IMAGEDIR,filename);end;show errors;create or replace procedure dicom_export(source_id number,filename varchar2)asdcmSrc ordsys.orddicom;beginselect dicom into dcmSrc from medical_image_tablewhere id=source_id;dcmSrc.export(FILE,IMAGEDIR,filename);end;show errors;2.现在可以执行过程了。从 SQL*Plus 会话中,执行以下命令:Java代码execute dicom_export(1,dicom_orig.dcm);execute dicom_export(1,dicom_orig.dcm);3.要查看创建的文件,打开另一个终端窗口,并在IMAGEDIR目录下执行以下命令。Java代码ls-al dicom_orig.dcmls-al dicom_orig.dcmwww.zgxue.com防采集请勿采集本网。

现象

tomcat错误日志断断续续报ORA-00903: invalid table name,并无具体SQL与表名,需要排查哪段代码写入了无效表名,

实际上存储过程向表中插入数据和sql执行的区别是不大的,只不过是存储过程是用loop等循环插入,之后顺序执行sql语句,不用命令行执行。123456789101112131415161718192021222324252627282930

可以通过ORACLE提供的errorstack追踪报错SQL。

这应该32313133353236313431303231363533e78988e69d8331333332613161是个bug,metalink上的说明如下 ORA-20001,ORA-2074:Consolidation Cross Instance 20001Errors ORA-20001;ORA-2074;PLS-115

由于生产数据无法取出,以下皆为测试环境测试还原生产错误。

凭感觉,你的语法没错。今天连不起公司服务器。周一连上给你试试,等着。我们创建的时候,用的是create or replace package。我将你包的内容改变了(因为我没有创建你的那个数据表emp),运行

errorstack简介

看提示.so文件找能安装前补丁没安装安装几包:libaio-0.3.106-3.2.i386.rpm libXp-1.0.0-8.1.el5.i386.rpm xorg-x11-deprecated-libs-6.8.2-1.EL.13.37.i386.rpm Oracle数据库打看数据库告警志

设置errorstack,在发生特定的ORA错误时会记录发生问题的会话,语句以及各个进程的trace文件,

在alert日志中有记录错误记录的trace文件位置,也可以给单独会话开启errorstack,追踪会话报错信息,可以通过

下面两个方法开启:

/* level 0 仅转储错误堆栈

/* level 1 转储错误堆栈和函数调用堆栈

/* level 2 Level 1 + ProcessState

/* level 3 Level 2 + Context area (显示所有cursors,着重显示当前cursor)

(1)alter session/system

alter session/system set events '<error_number> trace name errorstack level 3';

/* error_number为ORA错误后编号。

(2)oradebug

/* 使用oradebug需要用户具有sysdba权限

SQL> oradebug setospid/setmypid/setorapid <pid>; 

SQL> oradebug dump errorstack 3

可以通过下面方法查看当前系统开启errorstack状态:

SQL> set serveroutput on

SQL> oradebug setmypid

SQL> oradebug eventdump session/system;

追踪

SQL> alter system set events '903 trace name errorstack level 3';

alter日志:

Tue Jun 09 14:23:44 2020

OS Pid: 10855 executed alter system set events '903 trace name errorstack level 3'

追踪结果

alert日志信息:

alert日志信息:

Tue Jun 09 14:28:04 2020

Errors in file /u01/app/oracle/diag/rdbms/honor/honor1/trace/honor1_ora_7205.trc:

ORA-00903: 表名无效

Tue Jun 09 14:28:06 2020

Dumping diagnostic data in directory=[cdmp_20200609142806], requested by (instance=1, osid=7205), summary=[abnormal process termination].

查看对应trc追踪文件:

*** 2020-06-09 14:28:04.303

*** SESSION ID:(26.661) 2020-06-09 14:28:04.303

*** CLIENT ID:() 2020-06-09 14:28:04.303

*** SERVICE NAME:(honor) 2020-06-09 14:28:04.303

*** MODULE NAME:(SQL*Plus) 2020-06-09 14:28:04.303

*** ACTION NAME:() 2020-06-09 14:28:04.303

dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=3, mask=0x0)

----- Error Stack Dump -----

ORA-00903: è¡¨å<90><8d>æ<97> æ<95><88>

----- Current SQL Statement for this session (sql_id=0vaqwchf1y3fq) -----

insert into null values(1)

找到具体sql,拿给开发人员,修改相关逻辑,错误修复。

关闭errorstack

SQL > alter system set events '903 trace name errorstack off';

总结

到此这篇关于Oracle利用errorstack追踪tomcat报错ORA-00903 无效表名的文章就介绍到这了,更多相关oracle ORA-00903 无效表名内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

试试这个:CREATE OR REPLACE TRIGGER tr_insertdeptBEFORE INSERT ON deptFOR EACH ROWbeginif:new.deptno>0 thenprint '报错';RAISE_APPLICATION_ERROR(-20001,'不能插入大于70的DEPTNO!');ROLLBACK TRANSACTION;end if;end;内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • oracle实例启动时报错:ora-32004的解决方法
  • oracle环境通过sql*plus本地登录时报错的解决过程
  • oracle sql developer连接报错(ora-12505)的解决方案(两种)
  • oracle12c安装报错:prvf-0002的解决方法
  • oracle(plsql)生成流水号
  • oracle 修改表结构 之alter constaints的使用
  • oracle删除archivelog文件的正确方法
  • oracle dataguard中手工处理日志v$archive_gap的方法
  • oracle 使用递归的性能提示测试对比
  • oracle与sql server在企业应用的比较
  • oracle12c图形化&静默安装踩坑的方法步骤
  • rman配置及rman常用命令操作
  • 基于oracle小数点前零丢失的问题分析
  • oracle常用sql查询语句部分集合(图文)
  • oracle 超简单触发器 Warning: Trigger created with compilation errors
  • oracle multimedia 干什么用的
  • oracle如何捕获存储过程报错是哪一行
  • 求oracle opatch 8350262的详细使用方法
  • oracle数据库如何利用存储过程向表中添加数据?
  • Oracle 报错 Ora-20001
  • ORACLE 过程编译错误,高手来解答!
  • oracle 10g 的告警日志alert
  • oracle数据恢复 要如何做?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页oracle实例启动时报错:ora-32004的解决方法oracle环境通过sql*plus本地登录时报错的解决过程oracle sql developer连接报错(ora-12505)的解决方案(两种)oracle12c安装报错:prvf-0002的解决方法oracle(plsql)生成流水号oracle 修改表结构 之alter constaints的使用oracle删除archivelog文件的正确方法oracle dataguard中手工处理日志v$archive_gap的方法oracle 使用递归的性能提示测试对比oracle与sql server在企业应用的比较oracle12c图形化&静默安装踩坑的方法步骤rman配置及rman常用命令操作基于oracle小数点前零丢失的问题分析oracle常用sql查询语句部分集合(图文)oracle 查看表空间的大小及使用情linux系统(x64)安装oracle11g完oracle数据库下载及安装图文操作oracle存储过程基本语法介绍oracle 10g 安装教程[图文]oracle 如何查询被锁定表及如何解基于ora-12170 tns 连接超时解决oracle数据库tns配置方法详解oracle中to_date详细用法示例(ororacle 创建表空间详细介绍将oracle的create语句更改为alter语句使用oracle 管理员账号密码忘记的快速解决方法oracle rman还原时set newname文件名有空登录oracle数据库时密码忘记的解决方法oracle中的的hint详解如何查看数据库alert日志文件oracle 11.2.0.4打补丁的方法oracle查看会话锁定的所有对象代码分享[oracle] 浅析令人抓狂的ora-01555问题浅析如何在tnsnames.ora中配置监听
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved