如何在 SQL 开发人员目录之外 运行 sqlcl

How to run sqlcl outside of SQL Developer directory

我已经安装了Oracle客户端WINDOWS.X64_213000_client.zip
我想在我的项目目录中使用捆绑的 sql.exe 到 运行 SQL 脚本。

sql.exe 位于我已添加到路径环境变量中的以下目录中:

E:\Oracle_21c\app\client\product.0.0\client_1\sqldeveloper\sqldeveloper\bin

jar 文件在

E:\Oracle_21c\app\client\product.0.0\client_1\sqldeveloper\sqldeveloper\lib

以下作品:

cd E:\Oracle_21c\app\client\product.0.0\client_1\sqldeveloper

\sqldeveloper\bin\sql -LOGON user/password@tns_db_alias  
   select 'a' as a from dual;  

但我只能从该目录 运行 它,如果我尝试从路径目录 运行 sql.exe 不将其限定为 bin\sql 那么一个例外被抛出。

>sql -LOGON user/password@tns_db_alias

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hc/core5/http/ParseException

我该怎么做才能使 sql.exe 运行 可以通过路径访问?
这样我就可以在任何任意目录中,例如\projects\myproj\
运行 脚本使用 sql.exe

cd \projects\myproj\
sql -LOGON user/password@tns_db_alias my_db_script.sql

有一个错误。

当我尝试从这个发行版 运行 包含的 'sql' (SQLcl) 程序时 -

c:\oracle\client\product.0.0\client_1\bin>sql /nolog
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hc/core5/http/ParseException
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
        at java.lang.Class.getConstructor0(Class.java:3075)
        at java.lang.Class.newInstance(Class.java:412)
        at oracle.dbtools.raptor.newscriptrunner.CommandRegistry.addListener(CommandRegistry.java:75)
        at oracle.dbtools.raptor.newscriptrunner.CommandRegistry.addForAllStmtsListener(CommandRegistry.java:649)
        at oracle.dbtools.commands.NetCommands.registerCommands(NetCommands.java:28)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.initSqlcl(SqlCli.java:196)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.runSqlcl(SqlCli.java:962)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.main(SqlCli.java:369)
Caused by: java.lang.ClassNotFoundException: org.apache.hc.core5.http.ParseException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 10 more

转到 oracle.com/sqlcl - 下载独立 Zip。放在自己的目录下,运行就好了。

我们将尽快更新 21c 发行版以修复此客户端下载问题。

解决方法,更新您的路径以包含 ..product.0.0\client_1\sqldeveloper\sqldeveloper\bin

如果你 运行 从这个目录中取出 sql.exe,它就可以工作 -