我已经在具有Win10-64位的企业PC上安装了Sqldeveloper版本19.1 64位版本。
它适用于嵌入式jdbc客户端,但我需要使用Oracle OCI客户端使其工作。一个原因是对取消长时间运行的查询的支持要好得多。
使用 OCI 客户端(胖驱动程序)肯定需要像 instantclient_12_2 这样的客户端。 我在工作站上没有管理员权限,因此将完整instantclient_12_2复制到企业 PC。
由于不允许我自己更改 %PATH%,因此我创建了一个具有所需设置的 start.bat 文件,因为没有,它也不会工作(已经尝试过)。
PATH="C:UsersmyuserOneDriveOracleinstantclient_12_2";%JAVA_HOME%;%PATH%
C:UsersmyuserOneDriveOraclesqldeveloper64sqldeveloper.exe
当我尝试配置另一个 Oracle 客户端而不进行此更改时,我收到另一个错误,即需要在任何其他路径之前定义即时客户端的路径。
现在,用这个蝙蝠文件启动sqldeveloper工作正常。可以使用内部 jdbc 客户机建立连接。
然后,我在SQLdeveloper(首选项/数据库/高级)中配置了Oracle客户端并选择了即时客户端目录。
按"测试"按钮打开消息日志"Oracle 客户端测试结果 - 日志"并显示错误。
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occured, Program will exit.
Unrecognized option: -
现在,我迷路了,因为我不是Java专家。我想知道,为什么 sqldeveloper 作为 Java 工具正在运行,但即时客户端说它无法创建 JVM。
我使用 OCI 客户端的原因是,它具有例如对用户中断的更好支持。
如果没有管理员权限,也没有永久更改 %PATH% 环境的权限,您只需要在某处安装整个目录并添加一个.BAT文件,该文件在调用 SQL-Developer 之前会暂时更改环境。
- 安装完整的SQL开发人员,例如在
C:myprogssqldeveloper
- 在某处安装即时客户端,例如在
C:myprogsinstantclient_12_2
- 创建.BAT文件,例如
C:myprogssqldeveloperstartsqldev.bat
包含以下内容:
set PATH=C:myprogsinstantclient_12_2;%PATH%
REM start sqldeveloper
"C:myprogssqldevelopersqldeveloper.exe"
它也适用于> 20 版;-)
同时,我已经解决了它。
测试结果:
Testing the Instant Client located at C:UsersmyuserOracleinstantclient_12_2
Testing client directory ... OK
Testing loading Oracle JDBC driver ... OK
Testing checking Oracle JDBC driver version ... OK
Driver version: 12.2.0.1.0
Testing testing native OCI library load ... OK
Success!
原因是以下错误:
- 忘记了变量赋值前面的"set"(因为我通常使用 Unix)
- 在变量赋值期间使用的引号,引号作为值的一部分(也不同于 UNIX)。
- 增加了JAVA_HOME和JRE_PATH
请参阅下面我的完整蝙蝠文件(由于路径名中的一些秘密信息而进行了调整):
REM Optional: setting of USE_OS_DATETIME_FORMAT changes DATE-Format
set USE_OS_DATETIME_FORMAT=1
set PATH=%USERPROFILE%OneDrive - myCompanyOracleinstantclient_12_2;%JAVA_HOME%;%PATH%
REM start your preferred sqldeveloper
"%USERPROFILE%OneDrive - myCompanyOraclesqldeveloperx64.20.2sqldeveloper.exe"C:UsersmyuserOneDrive - myCompanyOraclesqldeveloperx64.19.1sqldeveloper.exe"
此外,我还为蝙蝠文件添加了一个快捷方式,现在我可以简单地使用 CRTL-SHIFT-S 启动它;-)
顺便说一句:相同的解决方案在Win10上也可以正常工作