Devo determinare da un programma quale versione di Oracle è installata in ciascuna delle Oracle Homes su un server. Poiché potrebbero non esserci ancora database creati nella Home, devo essere in grado di farlo al di fuori del database (cioè, senza connettermi al database). Inoltre, sarebbe altamente preferibile essere in grado di farlo da un programma remoto.

Questo è da un programma Windows che esegue .Net (C #, se è importante).

I sto attualmente leggendo chiavi di registro remote (utilizzando questa tecnica: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), per trovare tutte le Oracle Homes secondo questo metodo . Funziona bene, tuttavia, ho guardato intorno a quelle chiavi e non vedo alcuna informazione sulla versione / release esatta.

Il nome di una Oracle Home stessa è ovviamente 1) non un indicatore affidabile e 2 ) non ha la versione / release esatta (ad esempio “10.2.0.4.0”). Fondamentalmente sto cercando un modo per capire cosa ti dice Oracle Universal Installer nel pulsante Prodotti installati.


Dovrei chiarire, tutti i server eseguiranno Windows 2003-2008.

Commenti

  • Sarà difficile. Dai unocchiata al programma di installazione di Oracle Universal, ogni componente ha la sua versione. Non è possibile determinare la versione su unintera installazione di Oracle Client, almeno non per tutti i numeri.
  • Penso che tnaping e Sqlplus forniscano la versione effettiva dellinstallazione. In Windows è possibile utilizzare il prompt dei comandi per eseguire lo spooling delloutput di tnsping. C:\tnsping>>E:\tnspingoutput.txt. Quindi utilizza un linguaggio di alto livello per estrarre la versione dal file di testo
  • @WernfriedDomscheit Innanzitutto, non sto chiedendo la versione del client , ma le versioni del server . In secondo luogo, puoi determinarlo, è lultimo bambino di livello uno sotto una Casa (i singoli componenti sono bambini di livello inferiore). Lo faccio manualmente con Universal Installer tutto il tempo. È solo che non ' voglio passare il tempo a farlo manualmente tutto il tempo.
  • Cosa succede quando il server è installato su Linux / Unix (che è Penso la maggioranza)? Quindi un programma C # o la lettura del registro non aiuta.
  • @WernfriedDomscheit Nel mio caso sono tutti server Windows. Lo chiarirò nella mia domanda.

Risposta

Se le case del database sono state installate correttamente, linventario centrale ha un elenco su di loro. Linventario centrale su Windows si trova in C:\Program Files\Oracle\Inventory. Sulle piattaforme Linux / UNIX, la posizione dellinventario centrale è disponibile in /etc/oraInst.loc. Nellinventario, in ContentsXML\inventory.xml, è presente un elenco di case installate in formato XML, ad esempio:

<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> 

Puoi analizzare questo elenco e trovare informazioni dettagliate con opatch, ad esempio:

/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 esempio di Windows potrebbe essere:

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

Ovviamente quanto sopra deve essere eseguito sul server.

Questo è lo scenario migliore, con installazioni adeguate. Lo scenario peggiore è che le case usano inventari separati o non usano affatto inventario e devi cercare tutti i filesystem sul server per possibili installazioni Oracle.

Risposta

Un altro metodo per visualizzare la versione Oracle è chiamare lutilità dbv. Funziona solo per le installazioni del server di database. La versione di questo strumento dovrebbe sempre corrispondere alla versione del database. Dovresti prima impostare lambiente appropriato (PATH; ORACLE_HOME, LD_LIBRARY_PATH), quindi otterrai qualcosa come

 $ $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 prima riga contiene la versione

Commenti

  • Sembra utilizzabile localmente, esiste un modo integrato per richiamarlo da remoto?
  • No, non ' t la pensa così. Su un sistema Linux userei ssh per provare ad accedere al server.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *