開發環境一直使用jdbc14.jar "Oracle JDBC Driver version - 9.0.2.0.0"版本連接Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 服務器,突然今天不能連接了,報錯誤如下:
java.sql.SQLException: 不能在 UTF8 和 UCS2 之間轉換: failUTF8Conv
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1130)
at oracle.jdbc.dbaccess.DBConversion.failUTF8Conv(DBConversion.java:2261
)
at oracle.jdbc.dbaccess.DBConversion.utf8BytesToJavaChars(DBConversion.j
ava:2061)
at oracle.jdbc.dbaccess.DBConversion.utf8BytesToString(DBConversion.java
:1976)
at oracle.jdbc.dbaccess.DBConversion.CharBytesToString(DBConversion.java
:543)
at oracle.jdbc.ttc7.TTIoer.processWarning(TTIoer.java:334)
at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:523)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:278)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:346)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at JDBC.main(JDBC.java:9)
然后更換為Oracle 11g的驅動,可以正常連接了,但是會顯示下面異常
javax.management.MalformedObjectNameException: Invalid character '
' in value part of property
at javax.management.ObjectName.construct(ObjectName.java:529)
at javax.management.ObjectName.<init>(ObjectName.java:1304)
at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:209)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
采用9i驅動還碰到下面錯誤
java.sql.SQLException: 違反協議
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160)
at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:548)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:279)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:371)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:551)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:351)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)















































- 最終查詢資料,發現還是jdbc驅動問題,原因因該是與bug有關,因此從新從otn.oracle.com下載驅動升級解決問題。
ojdbc6.jar的驅動版本可以運行java -jar ojdbc6.jar查看,如果是Oracle 11.1.0.6.0-Production+ JDBC 4.0 compiled with JDK6,帶+號就是補丁版本,否則是沒有打補丁的,仍然可能出錯。 - 我遇到的請況,采用10.2.0.4的jdbc驅動就沒有問題了
- oracle jdbc驅動下載地址如下: