我需要从程序中确定服务器上每个Oracle Homes中安装了哪个版本的Oracle。由于在Home中可能没有创建任何数据库,我需要能够在数据库之外执行此操作(即,连接到数据库)。此外,最好能够从远程程序执行此操作。
这是来自运行.Net的Windows程序(C#,如果重要的话)。
我目前正在阅读远程注册表项(使用此技术:How to Read Remote Registry Keys?),以根据this method查找所有Oracle Homes。这很好,但是,我已经查看了这些键,并且没有看到有关确切版本/版本的任何信息。
Oracle Home本身的名称当然是1)不是可靠的指标,2)没有确切的版本/发布(例如“10.2.0.4.0”)。基本上我正在寻找一种方法来确定Oracle Universal Installer在Installed Products按钮中告诉您的内容。
答案 0 :(得分:2)
在oci.dll
中搜索文件PATH
,这是Oracle客户端安装的主要文件之一。您可以使用FileVersionInfo.GetVersionInfo("oci.dll");
为了获取Registry Hive,在PATH中搜索文件oracle.reg
(即Oracle Home)。此文件是包含注册表项的简单文本文件,例如SOFTWARE\ORACLE\KEY_OraClient11g_home1
。您将在HK_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1
中找到相关的注册表值
`
答案 1 :(得分:0)
我不确切,但我认为您应该尝试查看<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.22.1</version>
<scope>runtime</scope>
</dependency>
系统视图。
答案 2 :(得分:0)
如果主目录位于Windows中,则可以转到注册表中给出的oracle主目录路径,并尝试在命令提示符下执行以下命令
$ORACLE_HOME\OPatch\opatch lsinventory | find "Oracle Database"