出错了:Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at oracle.jdbc.driver.T2CConnection$1.run(T2CConnection.java:3147)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java:3143)
at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:221)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:132)
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:78)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
。。。。。。。
出错了:org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.co
mmon.jdbc.exception.NestedSQLException:
--- The error occurred in com/eshore/idep/schedule/dao/po/ThreadControl.xml.
--- The error occurred while applying a parameter map.
--- Check the selectThreadControl-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLException: ORA-00932: inconsistent datatypes: expected %s got %s
。。。。。。。
为什么?怎么解决?请继续...
声明:下面的问题以ORACLE10g为参考版本(同样适用于ORACLE11g),因为在ORACLE9i中基本上是不会出现这些信息的,只要我们遵照通用的原则(自行google吧),但我们若以此文为参考,完全适应!
插序:关于JDBC Driver for ORACLE详细信息可参考http://redsnow-fenglin.iteye.com/blog/520618,我们常用的驱动应该的应该是第3、4类和第2类的OCI,据传OCI的性能优于THIN,但并未看到有力的证明,而且经个人测试也未必如此,参见我的帖子:
写道
http://www.iteye.com/topic/242902?page=11#1163693
PS:之说以这么说是因为我最近做了一个纯后台的项目时遇到持久层的性能瓶颈争论问题,我给大家一个粗略的性能测试数据,即便我不说,相信大家横行对比也知道这里面的含义了(据说C的oracle oci可以到达3k条/秒的insert速度,而我测java的oci或thin最好测试记录也无非1.3k多条/秒,比较汗):
测试环境:主机 HP-UX rp3440 B.11.23 U 9000/800 (td) 数据库 ora9i
插入速度测试数据
模式 驱动模式 数据量 2w 2w 10w 10w
原始jdbc模式 thin 时间(速率) 17秒(1176条/秒) 18秒(1111条/秒) 1.26分(1162条/秒 1.26分(1162条/秒)
oci 18秒(1111条/秒) 18秒(1111条/秒) 1.25分(1176条/秒 1.28分(1136条/秒)
JdbcTemplate模式 thin 24秒(833条/秒) 24秒(833条/秒) 1.59分(840条/秒) 1.54分(877条/秒)
oci 29秒(689条/秒) 29秒(689条/秒) 2.33分(653条/秒) 2.21分(709条/秒)
其实,开发中最常见的就是ORACLE的THIN模式,但为何我这里提出这个OCI模式呢?这是因为经过多方查资料显示在使用ORACLE的RAC模式时,推荐OCI模式~~
其实OCI模式使用起来配置也是蛮简单的,但可能种种原因,我们会遇到种种预期不到的问题,这里我给出一些注意事项:
解决之道:
写道
1、采用OCI的server必须有作为客户端访问ORACLE的能力;
2、OCI的jdbcURL有两种配置风格:简略模式和详尽模式,建议采用简略模式,尤其是在我们使用ORACLE的RAC功能时,两种模式的样例如下:
A. 简略模式 jdbc:oracle:oci:@x_tnsname,其中x_tnsname是您配置在$ORACLE_HOME/.../network/admin/tnsname.ora中的标示符
B. 详尽模式 jdbc:oracle:oci:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=x_ip)(PORT=x_port)))(CONNECT_DATA=(SERVICE_NAME=x_sid)(SERVER=DEDICATED))),其中x_ip、x_port、x_sid是对应oracle的相应配置
3、ORACLE JDBC DRIVER驱动版本 在ORACLE 的 THIN模式我曾说过:
写道
http://redsnow-fenglin.iteye.com/blog/526192
原以为最好的方法是用oracle版本一致的驱动版本,但经过多次测试发现,采用高版本的JDBC DRIVER报错的时间会向后推迟久点(10.2.0.1大约1天多后,10.2.0.4大意两天左右),
但它并不单纯适应于OCI模式,因为OCI模式与本地动态库有关联,一般情况下,推荐使用和我们ORACLE数据库版本一致的驱动JAR及动态库,这些都可以在我们的ORACLE安装目录下找到,当然,我们也可以采用高版本的驱动JAR及相应的动态库,但是,我们绝对不可以采用版本不一致的驱动JAR及相应的动态库,否则,那就会有Cause: java.sql.SQLException: ORA-00932: inconsistent datatypes: expected %s got %s之类的异常
4、libocijdbc.so 这个家伙是关键,也许我们google说只要将ORACLE相应的这个家伙放入libpath就ok,比如LD_LIBRARY_PATH=/data/ora10g/10.2.0.1/product/lib32:/lib:/data/ora10g/code/ace-5.5/ace,但很不幸,即便如此,我们依旧可能收到java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path
,至少我们在IBM AIX5.3上(因我们的HP-UX是ORACLE9i的,没必要理会这个,一切OK),那么,它的解决之道就是用-Djava.library.path强制导入我们ORACLE相应的这个动态库(分lib32、lib(64的),根据需要自行选择);
按照上面的4点,ORACLE OCI模式无忧矣。
导致两个异常的元凶:
A.解决之道4中没用-Djava.library.path强制导入我们ORACLE相应的这个动态库(在IBM AIX5.3) 引起异常
java.lang.UnsatisfiedLinkError: no ocijdbc10 in java.library.path
B.解决之道4中没有保持版本一致的JDBC DRIVER及相应的OCI所需本地动态库引起异常
java.sql.SQLException: ORA-00932: inconsistent datatypes
问题已解决,希望对同僚们有所帮助~~
分享到:
相关推荐
无需安装客户端远程连接oracle服务器所需dll文件
oracle10g用jdbc:oracle:oci方式连接访问数据库时,报no ocijdbc10 in java.library.path。 解决方法: 将下载好的ocijdbc10.dll(注意区分版本)复制到jdk安装目录下的bin目录中(D:\work\Java\jdk1.7.0_45\bin)...
最近在工作中遇到了一个问题,错误是Oracle dbca时报错:ORA-12547: TNS:lost contact,通过查找相关的资料终于找到了解决的方法,下面分享给大家,话不多说了,来一起看看详细的介绍吧。 环境: OS:RHEL6.5 x86-...
解决Navicat Premium连接Oracle出现ORA-28547:connection to server failed
ORA-12737: Instant Client Light: unsupported server character set CHS16GBK/ZHS16GBK解决方案oci sqlplus instantclient_12_2
oracle10g用jdbc:oracle:oci方式连接访问数据库时,报no ocijdbc10 in java.library.path。 解决方法: 将下载好的ocijdbc10.dll(注意区分版本)复制到jdk安装目录下的bin目录中(D:\work\Java\jdk1.7.0_45\bin)...
我们用Navacat连接Oracle数据库的时候,会提示ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK
1.Navicat OCI引⽤位置可以从Navicat菜单栏“⼯具”-》“选项”-》环境-》“OCI”中找到 2.Navicat替换的⽂件
各windows版本下的oci.dll oci_10.2.0.5.dll oci_11.1.0.7.0.dll oci_11.2.0.4.0.dll oci_12.2.0.1.0.dll oci_21.3.0.0.0.dll
Navicat 连接 oracle library is not loaded的解决方法
将OCI library(oci.dll)目录填写成已安装的oracle目录下的地址(例如我的:C:\app\luohaiyuan\product\11.2.0\dbhome_1\BIN\oci.dll) 然后,将SQL *Plus目录换成已安装的oracle目录下的C:\app\luohaiyuan\product...
Navicat Premium 连接oracle ORA-28547:connection to server failed,probable Oracle Net admin error错误,在Navicat安装目录中创建instanrclient_11_2目录,将下载的压缩文件解压到instanrclient_11_2目录中,...
提供oracle客户端windows64客户端文件,PLSQL Developer客户端连接oracle服务端,一般需要在客户端单独安装oracle客户端,可通过下载该文件,配置oracle主目录和oci.dll,免去安装oracle客户端(根据服务端oracle版本...
oracle最新OCI文件,兼容一切版本! 本地安装的是64位的Oracle,但由于Navicat仅支持32位的,因此我们还需下载一个32位的客户端。 解决方案 下载32位客户端,配置进navicat中。 第1步:下载 最新OCI文件最新...
export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:$PATH 1.6 使配置完的环境变量生效 #source ~/.bashrc 1.7 连接数据库测试 #sqlplus /nolog SQL>conn scott/tiger@orcl 2)zip格式包...
为解决 navicat连接oracle报错:ORA-12737 Instant Client Light:unsupported server character set ZHS16GBK 错误,而准备的文件
OCI(Oracle Call Interface) Oracle调用接口(OCI)是最全面的,高性能的,本土的非托管访问ORACLE的官方接口。
资源分类:Python库 所属语言:Python 资源全名:gardener_oci-1.1187.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:gardener_oci-1.1320.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:gardener_oci-1.1449.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059