Re: [External] : Re: SQLcl 24.3 java issues

From: Jeff Smith <"Jeff>
Date: Fri, 8 Nov 2024 21:09:22 +0000
Message-ID: <SJ0PR10MB468631660BB8592F06A0EE1EA35D2_at_SJ0PR10MB4686.namprd10.prod.outlook.com>



Don't mess with the jar files.

Latest sqlcl uses a 23ai jdbc client, so if you MUST have a 'thick' connection, you'll need to use a 23ai Oracle Client or Instant Client paired with it.

Jeff



From: oracle-l-bounce_at_freelists.org <oracle-l-bounce_at_freelists.org> on behalf of Jeff Chirco <backseatdba_at_gmail.com> Sent: Friday, November 8, 2024 3:40 PM
To: Mikhail Velikikh <mvelikikh_at_gmail.com> Cc: oracle-l-freelist <oracle-l_at_freelists.org> Subject: [External] : Re: SQLcl 24.3 java issues

Thanks for that help about Boolean issue. I put ojdbc11.jar original file back. But now I don't know how to get around this issue when I try to connect to an instance. sql user/password_at_database
Error Message = no ocijdbc23 in java.library.path

On Fri, Nov 8, 2024 at 4:23 AM Mikhail Velikikh <mvelikikh_at_gmail.com<mailto:mvelikikh_at_gmail.com>> wrote: Also I had to copy ojdbc11.jar from my 21c client folder over to my c:\sqlcl\lib folder.

ojdbc11.jar that comes with 21.3 client does not include the oracle/sql/BOOLEAN Java class whereas the ojdbc11.jar shipped with SQLcl 24.3 does:

[oracle_at_myhostname lib]$ unzip -l ojdbc11.jar.client21 oracle/sql/BOOLEAN.class
Archive: ojdbc11.jar.client21
  Length Date Time Name
--------- ---------- ----- ----

---------                     -------
        0                     0 files

[oracle_at_myhostname lib]$ unzip -l ojdbc11.jar.sqlcl oracle/sql/BOOLEAN.class
Archive: ojdbc11.jar.sqlcl
  Length Date Time Name
--------- ---------- ----- ----
     1914  07-03-2024 05:14   oracle/sql/BOOLEAN.class
---------                     -------
     1914                     1 file

That is why you are getting this error, which I also reproduced on Linux. You need to copy ojdbc11.jar back and resolve any issues from there.

SQLcl 24.3 (24.3.0.285.0530) is perfectly fine using OCI JDBC coming from Oracle Client 21c on Linux. I forced a "thick" connection by using the `-thick` flag and can run queries without any issues. I also confirmed that SQLcl uses the OCI JDBC 21 library:

[oracle_at_myhostname lib]$ lsof -p 21310 | grep ocijdbc
java 21310 oracle mem REG 252,0 153584 78071644 /u01/app/oracle/tmp/client21/lib/libocijdbc21.so

On Windows it would be some DLL obviously. Rather than trying to resolve OCI library issues (check your environment variables first and then ensure that the library is present), you might as well use the local JDBC driver (it can be forced via the `-thin` flag).

On Thu, 7 Nov 2024 at 22:58, Jeff Chirco <backseatdba_at_gmail.com<mailto:backseatdba_at_gmail.com>> wrote:

I am able to connect to my database with SQLCL 24.3 but as soon as I execute any query I get this error message and it disconnects me. Windows 11, running 21c client, not instance client. Any one encounter this before?

Running java:
openjdk 23.0.1 2024-10-15
OpenJDK Runtime Environment (build 23.0.1+11-39) OpenJDK 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)

I've also tried regular Java from Oracle and get the same result.

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/sql/BOOLEAN

at oracle.dbtools.raptor.nls.OracleNLSProvider.format(OracleNLSProvider.java:212)
at oracle.dbtools.raptor.utils.NLSUtils.format(NLSUtils.java:187)
at oracle.dbtools.raptor.format.ANSIConsoleFormatter.printColumn(ANSIConsoleFormatter.java:168)
at oracle.dbtools.raptor.format.ResultSetFormatterWrapper.print(ResultSetFormatterWrapper.java:280)
at oracle.dbtools.raptor.format.ResultSetFormatterWrapper.print(ResultSetFormatterWrapper.java:228)
at oracle.dbtools.raptor.format.ResultsFormatter.print(ResultsFormatter.java:519)
at oracle.dbtools.db.ResultSetFormatter.formatResults(ResultSetFormatter.java:137)
at oracle.dbtools.db.ResultSetFormatter.formatResults(ResultSetFormatter.java:72)
at oracle.dbtools.raptor.newscriptrunner.SQL.processResultSet(SQL.java:920)
at oracle.dbtools.raptor.newscriptrunner.SQL.executeQuery(SQL.java:822)
at oracle.dbtools.raptor.newscriptrunner.SQL.run(SQL.java:100)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.runSQL(ScriptRunner.java:439)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.lambda$run$0(ScriptRunner.java:249)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunnerContext.runWithStoredContext(ScriptRunnerContext.java:833)
at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.run(ScriptRunner.java:119)
at oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:364)
at oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:245)
at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.processLine(SqlCli.java:1223)
at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.runSqlcl(SqlCli.java:1401)
at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.main(SqlCli.java:370)
Caused by: java.lang.ClassNotFoundException: oracle.sql.BOOLEAN
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528)
... 20 more

Also I had to copy ojdbc11.jar from my 21c client folder over to my c:\sqlcl\lib folder. Before I did that I would get this while trying to connect. Doing that solved that issue.

Error Message = no ocijdbc23 in java.library.path:

--
http://www.freelists.org/webpage/oracle-l
Received on Fri Nov 08 2024 - 22:09:22 CET

Original text of this message