我正在Web应用程序中使用Oracle的ojdbc7 瘦驱动程序(12.1.0.2)来访问Oracle 12.1数据库服务器。
这在查询数据库和执行操作方面效果很好。 但是,当数据库引发合理的错误时(例如以下情况,当抱怨打开的游标过多时),由于缺少消息文件 ,该错误中的错误消息是不完整的:
java.sql.SQLException: ORA-01000: Message 1000 not found; No message file for product=RDBMS, facility=ORA
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:774)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:4845)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1501)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1849)
at org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:472)
... 16 more
搜索该特定的“ No message file ...”短语时,可以找到大量注释,但是基本上所有注释都与缺少/错误的ORACLE_ *环境设置有关,而这些环境设置没有指向本地Oracle-Client-Installaton。 但是,使用此处使用的瘦驱动程序,不需要本地客户端安装!
Oracle在JDBC-Developers-Guide中的状态:
JDBC Thin驱动程序完全用Java编写,因此它是 平台无关。另外,此驱动程序不需要任何 客户端上的其他Oracle软件。
那么,我在这里想念什么? 正确显示完整的错误消息有什么必要?