Errors and exceptions when running a profiling report with Oracle OCI

Overview

You may have problems when you try to generate a report document in the Profiling perspective of the studio if the report datamart is Oracle OCI. You may also have problems when you try to run a Job with tDqReportRun on the report in the Integration perspective.

For information about how to configure the Oracle OCI client to be used with Talend studio, check Installing and configuring Oracle OCI to be used as the datamart for reports.

 

Environment

This article applies to version 5.6 onwards of all platform studios with Data Quality.

 

Symptoms/Description

If you define a report datamart to be Oracle OCI in the Profiling perspective of the studio:

  • The studio may crash with a fatal error when you try to run a report and generate a document, or
  • you may get an exception when you generate a Job on this report with the tDqReportRun component and try to run it

The following error and exception are examples of such cases:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000001fab1047, pid=5132, tid=8172
#
# JRE version: Java(TM) SE Runtime Environment (7.0_40-b43) (build 1.7.0_40-b43)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.0-b56 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [OraOCIEI10.dll+0x771047]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\xqliu\.yoxoslauncher\instances\e24e8d3741426860a79f62d4553b8181\hs_err_pid5132.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
java.lang.UnsatisfiedLinkError: Native Library D:\opt\oci_client\default\ocijdbc10.dll already loaded in another classloader
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1923)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1872)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1087)
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.(PhysicalConnection.java:441)
at oracle.jdbc.driver.T2CConnection.(T2CConnection.java:132)
at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtension.java:78)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:187)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1946)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1229)
at org.talend.dataprofiler.persistence.utils.HibernateUtil.getSessionFactory(HibernateUtil.java:175)
at org.talend.dq.persistence.DatabasePersistence.persist(DatabasePersistence.java:70)
at org.talend.dataquality.reporting.engine.ReportDocGenerator.historizeData(ReportDocGenerator.java:494)
at org.talend.dataquality.reporting.engine.ReportDocGenerator.generate(ReportDocGenerator.java:269)
at org.talend.dataprofiler.core.tdq.action.LocalReportDocGenerator.generate(LocalReportDocGenerator.java:130)
at org.talend.dataprofiler.core.tdq.ui.action.GenerateReportFileAction$2.run(GenerateReportFileAction.java:334)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

 

Reason

You may be using different versions of oracle jdbc jars in the studio and the OCI client.

 

Resolution

Use the same Oracle jdbc jar file in both your machine and the studio. Copy ojdbc14.jar from the OCI client to the studio, for example from D:\opt\oci_client\default to E:\products\<Talend-Studio>\lib\java.

 

Note: If you already downloaded the ojdbc14.jar using the "Install External Jars" wizard of the studio, you must delete it before you copy it from the OCI client.

 

Version history
Revision #:
3 of 3
Last update:
‎06-12-2017 04:43 PM
Updated by:
 
Labels (1)