Preciso determinar a partir de um programa qual versão do Oracle está instalada em cada um dos Oracle Homes em um servidor. Como pode não haver nenhum banco de dados criado no Home ainda, preciso ser capaz de fazer isso fora do banco de dados (ou seja, sem conectar ao banco de dados). Além disso, seria altamente preferível poder fazer isso a partir de um programa remoto.
Isso é de um programa do Windows executando .Net (C#, se isso for importante).
No momento, estou lendo chaves de registro remotas (usando esta técnica: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), para encontrar todos os Oracle Homes de acordo com este método . Isso funciona bem, no entanto, examinei essas chaves e não vejo nenhuma informação sobre a versão/lançamento exato.
O próprio nome de um Oracle Home é claro que 1) não é um indicador confiável e 2) não tem a versão/liberação exata (por exemplo, "10.2.0.4.0"). Basicamente, estou procurando uma maneira de descobrir o que o Oracle Universal Installer informa no botão Produtos Instalados.
Devo esclarecer, todos os servidores estarão executando o Windows 2003-2008.
Se as bases de dados foram instaladas corretamente, o inventário central possui uma lista sobre elas. O inventário central no Windows está localizado em
C:\Program Files\Oracle\Inventory
. Nas plataformas Linux/UNIX, a localização do inventário central pode ser encontrada em/etc/oraInst.loc
. No inventário, emContentsXML\inventory.xml
, há uma lista de casas instaladas em formato XML, por exemplo:Você pode analisar esta lista e encontrar informações detalhadas com o opatch, por exemplo:
Um exemplo do Windows seria:
O acima precisa ser executado no servidor, é claro.
Este é o melhor cenário, com instalações adequadas. Na pior das hipóteses, as residências usam inventários separados ou não usam nenhum inventário, e você precisa pesquisar todos os sistemas de arquivos no servidor para possíveis instalações do Oracle.
Outro método para exibir a versão do Oracle é chamar o utilitário dbv. Isso funciona apenas para instalações de servidor de banco de dados. A versão desta ferramenta deve sempre corresponder à versão do banco de dados. Você deve definir o ambiente apropriado primeiro (PATH; ORACLE_HOME, LD_LIBRARY_PATH), então você obterá algo como
A primeira linha contém o lançamento