我需要从程序中确定服务器上的每个 Oracle Home 中安装了哪个版本的 Oracle。由于 Home 中可能还没有创建任何数据库,因此我需要能够在数据库之外执行此操作(即,无需连接到数据库)。此外,最好能够从远程程序执行此操作。
这是来自运行 .Net(C#,如果重要的话)的 Windows 程序。
我目前正在读取远程注册表项(使用此技术:https ://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ),以根据此方法查找所有 Oracle Homes 。这很好用,但是,我查看了这些键,没有看到有关确切版本/发行版的任何信息。
Oracle Home 本身的名称当然是 1) 不是一个可靠的指标,并且 2) 没有确切的版本/发行版(例如“10.2.0.4.0”)。基本上,我正在寻找一种方法来找出 Oracle Universal Installer 在 Installed Products 按钮中告诉您的内容。
我应该澄清一下,所有服务器都将运行 Windows 2003-2008。
如果正确安装了数据库主目录,则中央清单有一个关于它们的列表。Windows 上的中央库存位于
C:\Program Files\Oracle\Inventory
. 在 Linux/UNIX 平台上,中央清单的位置可以在/etc/oraInst.loc
. 在清单中ContentsXML\inventory.xml
,有一个 XML 格式的已安装房屋列表,例如:您可以解析此列表,并使用 opatch 查找详细信息,例如:
一个 Windows 示例是:
以上当然需要在服务器上运行。
这是最好的情况,安装正确。最坏的情况是,家庭使用单独的库存,或者根本不使用库存,您必须搜索服务器上的所有文件系统以查找可能的 Oracle 安装。
显示 Oracle 版本的另一种方法是调用 dbv 实用程序。这仅适用于数据库服务器安装。此工具的版本应始终与数据库的版本匹配。您应该首先设置适当的环境(PATH;ORACLE_HOME,LD_LIBRARY_PATH),然后您会得到类似的东西
第一行包含发布