Introduction

A customer of mine asked me a licensing question regarding the usage or Oracle Java (OJVM) in an Oracle database.  Basically this customer have an Oracle Database Standard Edition License and would like to use Oracle JVM in order to load Java classes in his PL/SQL code executed by this database. The customer would like to ensure that his Oracle Database Standard Edition gives him the right to execute Java Classes in his PL/SQL code.

Sources of information

The question, even if looking obvious for some people, wasn’t so obvious for me.  Fact is that I wasn’t really able to find the information on Oracle documentation nor in a note on My Oracle Support. I started to ask to some of our internal Specialist such as Pascal Brand and Franck Pachot in order to get some piece of answer. I use this opportunity to thanks both of them for their feedbacks ;-).

Both provided me some valuable inputs:

Their understanding was that the Java License is included in Oracle Database Standard Edition according to the following documentation:

Oracle Database Standard Edition 2 On-Premise SE2 Oracle Database Standard Edition 2 includes features necessary to develop workgroup, department-level, and Web applications.

In addition they provided me some MOS (My Oracle Support) notes were it was more clearly explained such as the note 1557737.1. as well as some link to the Java FAQ where the answer was even more explicit.

“If you are an Oracle Customer with a supported Oracle product which requires Java SE, you continue to have access to Oracle Java updates, as required by your Oracle product, for the use of supported Oracle products, at no additional cost.”

Finally in order to be sure of my answer to the customer I wrote the following Service Request:

Q:
=======
A question regarding Oracle Database Standard Edition and Java.

We would like to use Oracle JVM in order to load Java classes in our PL/SQL code executed by a standard edition database. We would like to ensure that the Oracle Database Standard Edition gives us the right to execute Java Classes in PL/SQL code.

Our understanding is that the Java License is included in Oracle Database Standard Edition according to the following documentation:
https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-AB354617-6614-487E-A022-7FC9A5A08472

As far as we do understand we will however have to use the Java version provided by the Oracle Database located in the ORACLE_HOME. According to https://blogs.oracle.com/java-platform-group/oracle-java-se-releases-faq :
“If you are an Oracle Customer with a supported Oracle product which requires Java SE, you continue to have access to Oracle Java updates, as required by your Oracle product, for the use of supported Oracle products, at no additional cost.”

May you please confirm that our understanding is correct, meaning that with Oracle Database Standard Edition, the Oracle Java is included and therefore we can load java classes in PL/SQL code without additional license ?

The answer from the support was crystal clear:

A:
======
Yes, your understanding correct. Here in Oracle there are different Java products.
If you are going to use JAVAVM (Embedded JVM in Database) then DB license is enough. The embedded Database JVM is used to develop and load java source/ classes in database under custom schema.
These java stored procedures are wrapped with pl/sql and invoked by user.
ref: https://docs.oracle.com/en/database/oracle/oracle-database/19/jjdev/Java-application-strategy.html#GUID-492B0C81-24A3-4551-A151-BC0DCE23C802

Thank you.

Conclusion

Following these inputs I’ve been able to inform the customer that even with the Standard Database Edition he is fully allowed to load Java Classes in his PL/SQL Code. If you have doubts regarding usage of Java with Oracle products you will find some interesting information in the following note 1557737.1. I hope this small post will help some of you.