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

3
我需要从程序中确定服务器上每个Oracle Home安装了哪个版本的Oracle。由于Home中可能还没有创建任何数据库,所以我需要在不连接数据库的情况下完成此操作。此外,最好能够从远程程序完成此操作。
这是来自运行.Net(如果有关系,则为C#)的Windows程序。
我目前正在读取远程注册表键(使用此技术:如何读取远程注册表键?),以根据此方法查找所有Oracle Homes。这个方法很好用,但是我看了一下那些键,没有看到任何关于确切版本/发布的信息。
Oracle Home本身的名称当然不是可靠的指标,也没有确切的版本/发布信息(例如“10.2.0.4.0”)。基本上,我正在寻找一种方法来找出Oracle通用安装程序在“已安装产品”按钮中告诉您的内容。
3个回答

3
在`PATH`中搜索文件`oci.dll`,这是Oracle客户端安装的重要文件之一。您可以使用`FileVersionInfo.GetVersionInfo("oci.dll");`读取此文件的版本。
为了获取注册表项,可以在`PATH`(即Oracle Home)中搜索文件`oracle.reg`。这个文件是一个简单的文本文件,包含注册表键值,例如`SOFTWARE\ORACLE\KEY_OraClient11g_home1`。您将在`HK_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1`找到相关的注册表值。

你是指在 ORACLE_Home\bin 目录下吗? - RBarryYoung
我刚刚检查了一下,这与通用安装程序所说的不符。例如:Ora10g home已安装了10.2.0.1.0,并应用了补丁集3,因此最终版本为10.2.0.4.0。然而,OCI.DLL文件的FileVersion属性显示为"10.2.0.1.0"。 - RBarryYoung
是的,你会在那里找到它。 - Wernfried Domscheit
你真的对补丁级别感兴趣吗?通常主要版本和次要版本(例如10.2)就足够了。 - Wernfried Domscheit
是的,我确实需要它。这是我们在规划时经常需要检查产品兼容性问题的一种情况。 - RBarryYoung

0

如果Oracle的安装路径在Windows注册表中给出,您可以前往该路径并尝试在命令提示符中执行以下命令。

    $ORACLE_HOME\OPatch\opatch lsinventory | find "Oracle Database"

0

我不确定,但我认为你应该尝试查看v$parameter系统视图。


如果没有数据库,我该如何查看家庭的内容?这就是我的问题... - RBarryYoung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接