应用前端报错:
ORA-01460: unimplemented or unreasonable conversion requested
据排查分析是在处理clob类型时偶尔发生这个报错,再次运行便恢复正常,而且已经持续了一段时间。
2022-06-27 15:39:54,062 [DEBUG] com.mchange.v2.c3p0.impl.NewPooledConnection com.mchange.v2.c3p0.impl.NewPooledConnection@5f5d43a2 handling a throwable. java.sql.SQLException: ORA-01460: unimplemented or unreasonable conversion requested at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513) at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227) at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531) at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:205) at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1036) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1336) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3608) at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3709) at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4735) at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1090) at com.mchange.v2.c3p0.impl.NewProxyCallableStatement.execute(NewProxyCallableStatement.java:3044) at com.xxxx.cop.db.DBHelper.execute(DBHelper.java:320) at com.xxxx.cop.xscript.scriptmodel.ProcedureHandler.execute(ProcedureHandler.java:91) at com.xxxx.cop.xscript.scriptmodel.XScriptModel.runModel(XScriptModel.java:35) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runModel(XScriptRuntime.java:223) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:177) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runArrows(XScriptRuntime.java:198) at com.xxxx.cop.xscript.runtime.XScriptRuntime.execute(XScriptRuntime.java:168) at com.xxxx.cop.xscript.runtime.XScriptRuntime.runScript(XScriptRuntime.java:86) at com.xxxx.cop.dispatcher.engine.flow.BaseService.runScript(BaseService.java:77) at com.xxxx.cop.dispatcher.engine.flow.BaseService.runScript(BaseService.java:61) at com.xxxx.cop.dispatcher.engine.flow.CreateProcess.createProcess(CreateProcess.java:95) at sun.reflect.GeneratedMethodAccessor1836.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.xxxx.cop.dispatcher.engine.execute.SunDSExecEngine.invoke(SunDSExecEngine.java:118) at com.xxxx.cop.dispatcher.engine.execute.SunDSExecEngine.execute(SunDSExecEngine.java:50) at sun.reflect.GeneratedMethodAccessor1829.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.xxxx.cop.util.reflect.ReflectHandler.invoke(ReflectHandler.java:224) at com.xxxx.cop.util.reflect.ReflectHandler.invoke(ReflectHandler.java:162) at com.xxxx.cop.communication.SocketMSGUtil.bussProcess(SocketMSGUtil.java:178) at com.xxxx.cop.communication.SocketMSGUtil.run(SocketMSGUtil.java:54) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)复制
根据业务反馈,该业务模块之前从未出现问题,就是在Oracle由10g升级到19c以后频繁发生告警,最终怀疑的ojdbc驱动版本太低带来的问题。我们的ojdbc版本为ojdbc14.jar 这个版本是9i、10g时候使用的,所以决定升级到对应的版本
ojdbc8.jar,升级到目前为止不再报ORA-01460错误。
Oracle适配的驱动版本:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




