Necesito determinar a partir de un programa qué versión de Oracle está instalada en cada una de las casas de Oracle en un servidor. Como es posible que aún no se haya creado ninguna base de datos en el Inicio, necesito poder hacer esto fuera de la base de datos (es decir, sin conectarme a la base de datos). Además, sería muy preferible poder hacer esto desde un programa remoto.

Esto es desde un programa de Windows que ejecuta .Net (C #, si eso importa).

Yo estoy leyendo claves de registro remoto (usando esta técnica: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), para encontrar todas las casas de Oracle de acuerdo con este método . Esto funciona bien, sin embargo, he mirado alrededor de esas claves y no veo ninguna información sobre la versión / lanzamiento exacto.

El nombre de Oracle Home en sí mismo es, por supuesto, 1) no es un indicador confiable y 2 ) no tiene la versión / lanzamiento exacta (por ejemplo, «10.2.0.4.0»). Básicamente, estoy buscando una manera de averiguar qué le dice Oracle Universal Installer en el botón Productos instalados.


Debo aclarar que todos los servidores ejecutarán Windows 2003-2008.

Comentarios

  • Va a ser difícil. Eche un vistazo al instalador de Oracle Universal, cada componente tiene su propia versión. No puede determinar la versión en una instalación completa de Oracle Client, al menos no para todos los números.
  • Creo que tnaping y Sqlplus proporcionan la versión real de la instalación. En Windows, puede usar el símbolo del sistema para poner en cola la salida de tnsping. C:\tnsping>>E:\tnspingoutput.txt. Luego use un lenguaje de alto nivel para extraer la versión del archivo de texto
  • @WernfriedDomscheit Primero, no estoy preguntando acerca de la versión Cliente , sino las versiones del servidor . En segundo lugar, puede determinarlo, es el último niño de un nivel bajo un Hogar (los componentes individuales son niños de nivel inferior). Lo hago manualmente con Universal Installer todo el tiempo. Simplemente no ' no quiero perder el tiempo para hacerlo manualmente todo el tiempo.
  • ¿Qué sucede cuando el servidor está instalado en Linux / Unix (que es Creo que la mayoría)? Entonces un programa en C # o leer el registro no ayuda.
  • @WernfriedDomscheit En mi caso todos son servidores de Windows. Aclararé eso en mi pregunta.

Respuesta

Si las casas de la base de datos se instalaron correctamente, el inventario central tiene una lista sobre ellos. El inventario central de Windows se encuentra en C:\Program Files\Oracle\Inventory. En plataformas Linux / UNIX, la ubicación del inventario central se puede encontrar en /etc/oraInst.loc. En el inventario, en ContentsXML\inventory.xml, hay una lista de viviendas instaladas en formato XML, por ejemplo:

<INVENTORY> <VERSION_INFO> <SAVED_WITH>12.1.0.2.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="OraGI12Home1" LOC="/opt/oracle/grid12102" TYPE="O" IDX="1"/> <HOME NAME="OraDB12Home1" LOC="/opt/oracle/base/product/db12102ee" TYPE="O" IDX="2"/> <HOME NAME="OraDb11g_home1" LOC="/opt/oracle/base/product/db11204ee" TYPE="O" IDX="3"/> </HOME_LIST> </INVENTORY> 

Puede analizar esta lista y encontrar información detallada con opatch, por ejemplo:

/opt/oracle/grid12102/OPatch/opatch lsinventory -oh /opt/oracle/grid12102 -details /opt/oracle/base/product/db12102ee/OPatch/opatch lsinventory -oh /opt/oracle/base/product/db12102ee -details /opt/oracle/base/product/db11204ee/OPatch/opatch lsinventory -oh /opt/oracle/base/product/db11204ee -details 

Un ejemplo de Windows sería:

C:\oracle\base\product\12.1.0\dbhome_1\OPatch\opatch lsinventory -oh C:\oracle\base\product\12.1.0\dbhome_1 -details 

Lo anterior debe ejecutarse en el servidor, por supuesto.

Este es el mejor de los casos, con instalaciones adecuadas. En el peor de los casos, las casas usan inventarios separados o no usan ningún inventario, y usted tiene que buscar en todos los sistemas de archivos del servidor para posibles instalaciones de Oracle.

Respuesta

Otro método para mostrar la versión de Oracle es llamar a la utilidad dbv. Esto solo funciona para instalaciones de servidores de bases de datos. La versión de esta herramienta siempre debe coincidir con la versión de la base de datos. Primero debe configurar el entorno apropiado (PATH; ORACLE_HOME, LD_LIBRARY_PATH), luego obtendrá algo como

 $ $ORACLE_HOME/bin/dbv DBVERIFY: Release 12.1.0.2.0 - Production on Sun Jan 01 12:00:00 2016 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. Keyword Description (Default) ---------------------------------------------------- FILE File to Verify (NONE) START Start Block (First Block of File) END End Block (Last Block of File) BLOCKSIZE Logical Block Size (8192) LOGFILE Output Log (NONE) FEEDBACK Display Progress (0) PARFILE Parameter File (NONE) USERID Username/Password (NONE) SEGMENT_ID Segment ID (tsn.relfile.block) (NONE) HIGH_SCN Highest Block SCN To Verify (NONE) (scn_wrap.scn_base OR scn) 

La primera línea contiene la versión

Comentarios

  • Esto parece viable localmente, ¿hay alguna forma incorporada de invocarlo de forma remota?
  • No, yo no ' t cree que sí. En un sistema Linux, usaría ssh para intentar iniciar sesión en el servidor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *