Database Embedded JVM (OJVM)

The embedded JVM runs Java code in user session (within the dedicated or shared server), in the same memory space as SQL and PL/SQL. These Java modules can be invoked by any database client, similarly to PL/SQL modules.

What for? In-place processing of large datasets (batch operations, LOBs, JSON, XML) without incurring network traffic; In other words, no data shipping. Here are some use cases:

  • Micro services and/or Stored procedures/functions for in-place data processing
    • using the server-side type 2 JDBC driver
  • Extending Oracle database with Java libraries
  • JDBC Callout to non-Oracle RDBMS
    • using type 4 JDBC drivers from target RDBMS (SQL Server, DB2, Informix, Sybase, Adabas, etc)
    • using the Oracle JDBC type 4 for calling out another Oracle database or another session within the same database
  • Support JVM languages
    • Scala, JavaScript/Nashorn, Jython, JRuby, Clojure, and so on
  • Calling out to external Web Services (REST, SOAP) - see the OJVMWCU utility in the doc
  • In-place indexing using Lucene and Solr