Unable to load on-demand data with a JDBC connection from the Oracle database.

Unable to load on-demand data with a JDBC connection from the Oracle database.

book

Article ID: KB0079645

calendar_today

Updated On:

Products Versions
Spotfire Analyst All versions

Description

When you are using an Oracle JDBC connection to an analysis file which is migrated from a different version of Spotfire, you may come across issues when loading on-demand data from the same DXP which worked fine in the previous version of Spotfire.

You may see the below error messages: 
 
ERROR 2018-12-11T04:58:56,190-0500 [*pool-13-thread-6, USER_NAME, #785569, #3311168*] im.ds.SQLUtilities: Could not rollback transaction
java.sql.SQLException: Protocol violation: [ 0, ]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:669) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4C7Ocommoncall.doOROLLBACK(T4C7Ocommoncall.java:66) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CConnection.doRollback(T4CConnection.java:906) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:4539) ~[ojdbc7.jar:12.1.0.1.0]
    at com.spotfire.server.util.sql.PooledConnection.rollback(PooledConnection.java:534) ~[server.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLUtilities.rollback(SQLUtilities.java:262) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.closeConnection(SQLDataSource.java:445) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.loggedCloseConnection(SQLDataSource.java:421) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:391) ~[server-is.jar:?]
    at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Pipe.doGetData(Pipe.java:172) ~[server-is.jar:?]
    at com.spotfire.ws.im.QueryPipe.doGetData(QueryPipe.java:209) ~[server-is.jar:?]
    at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Formatter.getNextRow(Formatter.java:158) ~[server-is.jar:?]
    at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getDataForSlice(SpotfireBinaryDataFormatter.java:388) ~[server-is.jar:?]
    at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.writeData(SpotfireBinaryDataFormatter.java:242) ~[server-is.jar:?]
    at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getData(SpotfireBinaryDataFormatter.java:194) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Job$GetDataTask.execute(Job.java:951) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Job$Task.run(Job.java:753) ~[server-is.jar:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
 
ERROR 2018-12-11T04:58:56,190-0500 [*pool-13-thread-6, USER_NAME, #785569, #3311168*] ws.dat.AbstractOperator: Get data from job failed.
com.spotfire.ws.dat.OperatorException: com.spotfire.ws.im.IMException: Failed to get data: java.io.IOException: Protocol violation: [ 14, 76, ]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:393) ~[server-is.jar:?]
    at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Pipe.doGetData(Pipe.java:172) ~[server-is.jar:?]
    at com.spotfire.ws.im.QueryPipe.doGetData(QueryPipe.java:209) ~[server-is.jar:?]
    at com.spotfire.ws.dat.AbstractOperator.getData(AbstractOperator.java:306) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Formatter.getNextRow(Formatter.java:158) ~[server-is.jar:?]
    at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getDataForSlice(SpotfireBinaryDataFormatter.java:388) ~[server-is.jar:?]
    at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.writeData(SpotfireBinaryDataFormatter.java:242) ~[server-is.jar:?]
    at com.spotfire.ws.dat.sbdf.formatter.SpotfireBinaryDataFormatter.getData(SpotfireBinaryDataFormatter.java:194) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Job$GetDataTask.execute(Job.java:951) ~[server-is.jar:?]
    at com.spotfire.ws.dat.Job$Task.run(Job.java:753) ~[server-is.jar:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_144]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_144]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]
Caused by: com.spotfire.ws.im.IMException: Failed to get data: java.io.IOException: Protocol violation: [ 14, 76, ]
    ... 14 more
Caused by: java.sql.SQLException: java.io.IOException: Protocol violation: [ 14, 76, ]
    at com.spotfire.ws.dat.FasterBasicRow$BasicFieldSetter$AbstractClobFieldSetter.setValue(FasterBasicRow.java:459) ~[server-is.jar:?]
    at com.spotfire.ws.dat.FasterBasicRow.setValues(FasterBasicRow.java:136) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLQuerySession.doGetData(SQLQuerySession.java:422) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLQuerySession.getData(SQLQuerySession.java:408) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:388) ~[server-is.jar:?]
    ... 13 more
Caused by: java.io.IOException: Protocol violation: [ 14, 76, ]
    at oracle.jdbc.driver.OracleClobReader.needChars(OracleClobReader.java:264) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OracleClobReader.read(OracleClobReader.java:195) ~[ojdbc7.jar:12.1.0.1.0]
    at java.io.Reader.read(Reader.java:140) ~[?:1.8.0_144]
    at com.spotfire.ws.dat.FasterBasicRow$BasicFieldSetter$AbstractClobFieldSetter.setValue(FasterBasicRow.java:450) ~[server-is.jar:?]
    at com.spotfire.ws.dat.FasterBasicRow.setValues(FasterBasicRow.java:136) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLQuerySession.doGetData(SQLQuerySession.java:422) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLQuerySession.getData(SQLQuerySession.java:408) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:388) ~[server-is.jar:?]
    ... 13 more
Caused by: java.sql.SQLException: Protocol violation: [ 14, 76, ]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:669) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4C8TTIClob.read(T4C8TTIClob.java:245) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CConnection.getChars(T4CConnection.java:3901) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.sql.CLOB.getChars(CLOB.java:517) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OracleClobReader.needChars(OracleClobReader.java:245) ~[ojdbc7.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OracleClobReader.read(OracleClobReader.java:195) ~[ojdbc7.jar:12.1.0.1.0]
    at java.io.Reader.read(Reader.java:140) ~[?:1.8.0_144]
    at com.spotfire.ws.dat.FasterBasicRow$BasicFieldSetter$AbstractClobFieldSetter.setValue(FasterBasicRow.java:450) ~[server-is.jar:?]
    at com.spotfire.ws.dat.FasterBasicRow.setValues(FasterBasicRow.java:136) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLQuerySession.doGetData(SQLQuerySession.java:422) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLQuerySession.getData(SQLQuerySession.java:408) ~[server-is.jar:?]
    at com.spotfire.ws.im.ds.sql.SQLDataSource.doGetData(SQLDataSource.java:388) ~[server-is.jar:?]
    ... 13 more

Issue/Introduction

Unable to load on-demand data with a JDBC connection from the Oracle database.

Environment

All Supported OS

Resolution

Confirm the JDBC driver which you are using for the Oracle (ojdbcX.jar). This will be present either at:

C:\TIBCO\tss\7.XX.X\tomcat\lib

or 

C:\TIBCO\tss\7.XX.X\tomcat\webapps\spotfire\WEB-INF\lib

You may need to verify if the ojdbc driver which is being used in both the versions of Spotfire is correct and also confirm the exact driver compatible with your version of Oracle database.
 

Additional Information

https://confluence.atlassian.com/confkb/java-sql-sqlexception-protocol-violation-caught-while-accessing-a-page-and-oracle-db-is-used-781393258.html