Oracle JDBC Driver

Metabase version: 0.32.10
O.S: Ubuntu
Running: tried both docker and jar mode and had the same error.
Metabase DB: H2
Data Source: Oracle

I’m trying to connect to a Oracle 12c database, but my metabase menu doesn’t show ‘Oracle’ optional when adding a new database.

Said that, I looked for help here and saw a lot of people recommending installing Oracle Drivers on metabase/plugins.
After I did that, everytime I try to start metabase it crashes. If I remove ojdbc(7/8).jar from /plugins, metabase starts normally.

Is there an official driver? Already tried https://metabase.com/docs/v0.32.1/administration-guide/databases/oracle.html

Errors:

- When I start metabase WITHOUT ojdbc8.jar inside /plugins:
08-02 18:32:39 INFO plugins.dependencies :: Metabase cannot initialize plugin Metabase Oracle Driver due to required dependencies. Metabase requires the Oracle JDBC driver in order to connect to Oracle databases, but we can’t ship it as part of Metabase due to licensing restrictions. See https://metabase.com/docs/latest/administration-guide/databases/oracle.html for more details.

08-02 18:32:39 INFO plugins.dependencies :: Metabase Oracle Driver dependency {:class oracle.jdbc.OracleDriver} satisfied? false
08-02 18:32:39 INFO plugins.dependencies :: Plugins with unsatisfied deps: [“Metabase Vertica Driver” “Metabase Oracle Driver”]

- When I start metabase WITH ojdbc8.jar inside /plugins:
08-02 18:31:05 INFO metabase.core :: Starting Metabase version v0.32.10 (5d40681 release-0.32.x) …
08-02 18:31:05 INFO metabase.core :: System timezone is ‘Etc/UTC’ …
08-02 18:31:05 INFO metabase.plugins :: Loading plugins in /home/ubuntu/metabase/plugins…
08-02 18:31:05 ERROR metabase.core :: Metabase Initialization FAILED
java.util.zip.ZipException: zip END header not found
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1713)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.findEND(ZipFileSystem.java:1029)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1038)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.(ZipFileSystem.java:128)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:136)
at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:413)
at metabase.plugins.files$file_exists_in_archive_QMARK_.invokeStatic(files.clj:134)
at metabase.plugins.files$file_exists_in_archive_QMARK_.doInvoke(files.clj:131)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at metabase.plugins$has_manifest_QMARK_.invokeStatic(plugins.clj:107)
at metabase.plugins$has_manifest_QMARK_.invoke(plugins.clj:106)
at clojure.core$sort_by$fn__5978.invoke(core.clj:3131)
at clojure.lang.AFunction.compare(AFunction.java:51)
at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:360)
at java.base/java.util.TimSort.sort(TimSort.java:220)
at java.base/java.util.Arrays.sort(Arrays.java:1441)
at clojure.core$sort.invokeStatic(core.clj:3115)
at clojure.core$sort_by.invokeStatic(core.clj:3119)
at clojure.core$sort_by.invokeStatic(core.clj:3119)
at clojure.core$sort_by.invoke(core.clj:3119)
at metabase.plugins$init_plugins_BANG_.invokeStatic(plugins.clj:115)
at metabase.plugins$init_plugins_BANG_.invoke(plugins.clj:109)
at metabase.plugins$load_plugins_BANG_.invokeStatic(plugins.clj:137)
at metabase.plugins$load_plugins_BANG_.invoke(plugins.clj:121)
at metabase.core$init_BANG_.invokeStatic(core.clj:67)
at metabase.core$init_BANG_.invoke(core.clj:55)
at metabase.core$start_normally.invokeStatic(core.clj:122)
at metabase.core$start_normally.invoke(core.clj:116)
at metabase.core$_main.invokeStatic(core.clj:142)
at metabase.core$_main.doInvoke(core.clj:137)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at metabase.core.main(Unknown Source)
08-02 18:31:05 INFO metabase.core :: Metabase Shutting Down …
08-02 18:31:05 INFO metabase.server :: Shutting Down Embedded Jetty Webserver
08-02 18:31:05 INFO metabase.core :: Metabase Shutdown COMPLETE

Hi @mgalvani
Interesting, it seems one of the drivers or perhaps the metabase.jar is corrupted.

Can you verify that the metabase.jar matches this checksum 360b97a4d9c948388e054d2e1fe5f309f527bf174073bc3a20f9a6a837e7fc37 ?

Run sha256sum metabase.jar
And can you also run sha256sum/home/ubuntu/metabase/plugins/* just to check the drivers - post the result here.

Also, it might be related to this issue, since both 0.32.10 and 0.33.0-RC1 are using a lot of the same core code:
https://github.com/metabase/metabase/issues/10475

Hey there!

First of all, thanks a lot for your time.

I’m not sure if it is related with the issue you mentioned. I tried with 0.31 version and it didn’t work as well.
Metabase doesn’t recognize oracle plugin when it’s started.
I’m currently using Java 8. Will try to use Java 10 to see what happens.

There it goes:

360b97a4d9c948388e054d2e1fe5f309f527bf174073bc3a20f9a6a837e7fc37 metabase.jar

4d737c00430c0c185818ff3847a5cd44e6ff7083b483e9cc70ae4e6fdcf4b993 /home/ubuntu/metabase/plugins/bigquery.metabase-driver.jar
65cac8c4b5f3b0fb604b78d2dc16b64754a13914f4c4b3c4f9f180c02109c943 /home/ubuntu/metabase/plugins/druid.metabase-driver.jar
75c818e708509e6bbefb091fcbd8210740a0aabd7e7dc5a83cc815186b753527 /home/ubuntu/metabase/plugins/google.metabase-driver.jar
ea42217b87dbf9880bc80df106910494c3a7e9a6f52580c356e9b56ab0be3de9 /home/ubuntu/metabase/plugins/googleanalytics.metabase-driver.jar
91f1089be4414e342b2b3ffc7221201ca62a7d47ca3971205db62c0559283d75 /home/ubuntu/metabase/plugins/mongo.metabase-driver.jar
8de61002636f3eab96d6653d2aa0e372646da79dfabfbf1a4791e1713068bc1b /home/ubuntu/metabase/plugins/oracle.metabase-driver.jar
bce6ec3a77d55a0fc10d8d73fd51691e0de951558d256a48d829918ac006afa3 /home/ubuntu/metabase/plugins/presto.metabase-driver.jar
b21ce85a61e1a004261f0b1b5a135df4d02017cb9461b75da3a51c5359a1cb83 /home/ubuntu/metabase/plugins/redshift.metabase-driver.jar
9b33a19d6f77b09a8cba22bd16c40faab85d524766e6a62c43800921b235ac9e /home/ubuntu/metabase/plugins/snowflake.metabase-driver.jar
75ed3461bcc6b4eeaa35f4d9f8ea1aeab92027a311703f394280d095ec84942b /home/ubuntu/metabase/plugins/sparksql.metabase-driver.jar
17d2e3a14c3d13b9766225e8cec30dc935272140c1937c7411d09a7e47c2e794 /home/ubuntu/metabase/plugins/sqlite.metabase-driver.jar
2acceeb2603c7d44814164c233ffef276e13af78316c479f8eac7ff595834466 /home/ubuntu/metabase/plugins/sqlserver.metabase-driver.jar
7ebf44bf63ba2af4e9ae24473b91527d1d3666620737cda7845fea6af108fba6 /home/ubuntu/metabase/plugins/vertica.metabase-driver.jar

@mgalvani
Okay, do not try Java 10 - either use Java 8 or Java 11. Are you using the latest Java 8u221?
Remember to backup your metadata (your H2 database) before attempting to downgrade, since it might corrupt your metadata.
You could try 0.32.9 instead.
Can you also post the checksum of ojdbc8.jar, since Metabase is only failing when you add that - or maybe you should try downloading it again.

EDIT: The sha1sum ojdbc8.jar should be 60f439fd01536508df32658d0a416c49ac6f07fb

@mgalvani did using Java 11 work for you?

@mgalvani I was able to connect to Oracle with no problem with a fresh install of Metabase 0.32.10 (using the JAR) and ojdbc8.jar from here https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/jdbc-ucp-19c-5460552.html

I think the file you downloaded is incomplete or otherwise corrupted. The SHA1 sum for the version I downloaded is 967c0b1a2d5b1435324de34a9b8018d294f8f47b

@camsaul Should the Oracle link in the docs be changed to something more generic?
https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/index.html

Yeah, probably

@flamber want to open a PR? :wink:

1 Like

I’m also having this issue since uprading to 32.10. Tried with both openjdk 8 and 11, no dice.

Hi @ami
What issues are you having specially? Are you seeing errors?
Have you tried with Oracle Java instead of OpenJDK?
Which version of Oracle JDBC driver are you trying with?
Can you post the Metabase log from the startup - specifically all the INFO plugins.* is interesting.

Hi! I was getting these: java.util.zip.ZipException: zip END header not found

I built out a new VM with java 11 (instead of 8) and started from scratch. Now it’s working.

1 Like

Hey there!

The problem actually was my ojdbc7.jar file.

Solution is: on oracle website, download instant_client for the exact same version of the database you want to connect to.
Example: my database ir oracle 12c, so I download ‘Instant client for oracle 12c’.
Once I extracted the instant_client.zip file to /opt/oracle it gave me both ‘ojbc7.jar’ and ‘ojdbc8.jar’ files.

All I had to do was ‘# cp ojdbc7.jar /path-to-metabase/plugins’

Didn’t have to set any environment variable or other changes.

I think the great secret here is to use the same ojdbc*.jar file that’s zipped inside instant_client.zip.

@ami try this method with java 8. It would be nice if you could start a fresh ubuntu instance to remove possible dirty you might have with old files and version.

If you need more help, reach me on twitter.com/mgalvani