甲骨文错误信息
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 数据库
【讨论】:
以上是关于甲骨文错误信息的主要内容,如果未能解决你的问题,请参考以下文章