甲骨文错误信息

Posted

技术标签:

【中文标题】甲骨文错误信息【英文标题】:Oracle error messages 【发布时间】:2011-07-08 18:35:01 【问题描述】:

我对某事感到好奇...是否可以配置 Oracle 11 实例以使其不返回任何 ORA-??????错误信息?

我已经发出了许多无效查询,其中列名、表名拼写错误......我预计会出现 ORA 错误消息的地方。

为了安全起见,如果一个杂散的 java 堆栈跟踪暴露给浏览器,您是否可以强制 oracle 在堆栈跟踪中始终显示相同的虚假错误消息?

我总是得到这个:java.sql.SQLException: IO Error: Size Data Unit (SDU) mismatch

我已经用谷歌搜索了这个错误,我根本没有任何连接或数据库配置问题!我是按查询获得的。

【问题讨论】:

你用的是什么java和oracle驱动版本? Java 1.5 Oracle 11g ojdbc5.jar... 它的清单文件包含: Created-By: 1.5.0_17-b02 (Sun Microsystems Inc.) Implementation-Version: 11.2.0.1.0 So I' m 使用与创建驱动程序相同的 JDK 和 Oracle 版本。 您确定连接正确吗?你能从表中获取数据吗? “从双重选择 sysdate”可以吗?也许您实际上没有连接,因为数据库没有正确启动? 我非常肯定数据库已经启动,因为它正在生产! :) Java 1.5?真的吗?现在这是一个遗留系统...... 【参考方案1】:

不是直接的解决方案,但 SDU 不匹配掩盖了真正的错误,我遇到了同样的问题。我找到了一个链接 (http://www.rajivnarula.com/blog/2013/03/13/table-not-found-or-error-not-found/),它提供了一种间接暴露错误的方法:

我尝试用旧的 ojdbc14.jar 交换 JDBC 驱动程序,瞧 !真正的错误暴露了:好老

ORA-00942(表或视图不存在)

一旦我把桌子放进去——一切都很好——用 ojdbc14.jar 作为 好ojdbc6.jar

在有人发布一种方法来获取新驱动程序的潜在错误之前,这显然是一种痛苦但很有用...

【讨论】:

【参考方案2】:

基本上你的设置不正确。在客户端或服务器上,或者在两者上都设置了 sdu 大小,并且它们在客户端和服务器之间不匹配。 sdu大小可以在客户端设置

sqlnet.ora 文件或 在连接描述符中

在服务器上可以设置

sqlnet.ora 文件中 调度员init.ora参数 或listener.ora 文件。

如果您仍然不相信,请跟踪 tns 流量以验证这一点。可以通过将以下设置添加到 sqlnet.ora 文件来启用客户端跟踪:

trace_level_client = 10
trace_unique_client = on
trace_file_client = sqlnet.trc
trace_directory_client = <path_to_trace_dir>

可以使用以下设置启用服务器端设置:

trace_level_server = 10
trace_file_server = server.trc
trace_directory_server = <path_to_trace_dir>

如果10 级别不够,请将级别设置为16。这将创建一个您可以分析的跟踪文件。

【讨论】:

【参考方案3】:

您可以尝试将 Oracle 11g JDBC 驱动程序升级到高于 11.2.0.3.0 的版本,如 here 所述

【讨论】:

我尝试从 11.2.0.1.0 升级到 3.0 并且存在相同的 SDU 问题【参考方案4】:

查询中的表是否存在于数据库中还有另一种可能性。检查查询中的表名或尝试使用 mysql 驱动程序访问 Oracle 数据库

【讨论】:

以上是关于甲骨文错误信息的主要内容,如果未能解决你的问题,请参考以下文章

甲骨文数据阅读器。错误:无效操作。连接已关闭

ORA-00923 甲骨文错误

甲骨文“ORA-01008”错误。变量未绑定

甲骨文。使用 case 语句时缺少关键字。错误 00905

第 10 行:错误:ORA-00907 缺少右括号 |甲骨文 11g

甲骨文。查询中的参数。变量的名称/编号错误[关闭]