以编程方式确定Oracle Home安装的版本?

时间:2016-02-24 17:44:55

标签: c# windows oracle remote-registry

我需要从程序中确定服务器上每个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按钮中告诉您的内容。

3 个答案:

答案 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"