Oracle 12.2: OJVM will no longer support compilation of SQLJ source – and JPub does not get shipped anymore

In Oracle Database, OJVM will no longer support the compilation of SQLJ source or executing SQLJ classes.

SQLJ on the client side will continue to be developed, shipped and supported.  Only the part inside the DB is affected. Existing SQLJ code that runs inside the DB will need to be re-coded to use generic JDBC.

Furthermore JPub (client-side and inside-DB) will not get shipped anymore with Oracle Database 12.2. It got removed from the RDBMS code. There is no replacement.


Share this:

11 thoughts on “Oracle 12.2: OJVM will no longer support compilation of SQLJ source – and JPub does not get shipped anymore

  1. Hi Mike

    I’m not quite clear on which version will introduce the “Deprecation of SQLJ Inside the Server”.
    If I refer to, this seems to be deprecated in 12.1.
    I’d appreciate your input to understand this. Does it mean there’s no fix on this from 12.1 and it will not work anymore at all from
    Keeping 12.1 means we can still use SQLJ in OJVM till Jul 2021 if we pay extended support ?

    Vielen Dank

    • Hi Jerome,

      I tried to explain here what DEPRECATED really means:

      So basically in this case it means that we won’t develop it further – but it is fully supported and you get bug fixes and such. And you don’t have to pay extended support – but if you demand ERROR CORRECTION (aka bug fixes) after the Premier Support has ended (and the already announced first year of free extended support has ended as well) then you need to sign a contract for “paid” Extended Support. But without it you still get support but no NEW fixes.

      Now coming back to SQLJ in Oracle Database 12.2:
      There it is now DESUPPORTED meaning for Oracle Database 12.2 you won’t get fixes anymore. You can use the feature on your own risk but Support may refuse to assist you with 12.2 (!!! not 12.1 !!!) in case of issues.

      Hope this helps – cheers

      • Hi Mike
        Thanks a lot for your answer.
        So, if I’m not mistaken, I don’t have any interest (considering SQLJ situation) to upgrade from my actual to 12.1 or 12.2 (perhaps 12.1 to keep support) as long as I don’t change my code to use generic JDBC, ins’t it ?

        Vielen Dank

        • Jerome,

          with an upgrade to nothing seems to change for you. Only in 12.2 you may get in trouble due to the “not supported anymore” situation.


  2. Hi Mike,

    our java classes and sources became INVALID after upgrade.

    import oracle.sqlj.runtime.Oracle; lines are giving me error cannot find symbol errors.

    is this something fixable? Or do we need to contact the vendor to give us the new code?

    • Hi Bilegt,

      thanks a lot for your comment – and glad to hear that you’ve upgraded to
      With the issue, I have to confess that I have no idea how to solve it. Contacting the vendor would be a good idea, involving Oracle Support via a Service Request is something I’d do as well.


      • Hi Mike, thank you for your reply.

        Oracle confirmed it as a bug and provided some fix, which is nothing but grant java permissions to schema and re-compile invalid objects. Since SQLJ is no longer supported in, I really did not get why they are not just saying it is unsupported and advise me to go for earlier version rather than providing some scripts.

        Thanks, Bilegt

        • Hi Mike and Bilegt Bat-Ochir,

          We upgrade our development database from to recently.
          We meet an issue with the sqlj classes, especially this instruction doesn’t compile :

          sqlj.runtime.ref.DefaultContext defc = sqlj.runtime.ref.DefaultContext.getDefaultContext();

          We get this error :

          error: cannot find symbol
          [Error] (0: 0): sqlj.runtime.ref.DefaultContext defc = sqlj.runtime.ref.DefaultContext.getDefaultContext();

          When I compare the java class objects starting with sqlj exiting in the two databases, i get this result :

          select *
          from dba_objects
          where object_type LIKE ‘%JAVA%’
          and object_name like ‘sqlj%’;

          12.1 : 90 objects in schema SYS
          12.2 : 0 objects

          So it’s normal that the java classes referencing sqlj in 12.2 became invalid.

          My question is :

          Is there any mean to have the sqlj classes installed in the 12.2 databases?

          Thank you in advance.


          • Mohand,

            do you intend to reinstall the missing libs?
            SQLJ sources can’t be compiled in 12.2 anymore.
            As far as I know there’s no way of moving anything to 12.2 which allows you to have the functionality of 12.1 or before.


  3. Hi Mike,

    Thank you for the answer.

    I have no idea about what to do in order to have SQLJ classes appearing in the SYS schema of the 12.2 database.
    I open an SR at the Oracle Support in order to have a the answer to the above question. If it’s impossible to compile Java Classes using SQLJ in 12.2 in the server, I hope, they can give us a workaround.


Leave a Reply

Your email address will not be published. Required fields are marked *

* Checkbox to comply with GDPR is required


I agree

This site uses Akismet to reduce spam. Learn how your comment data is processed.