Jag måste bestämma från ett program vilken version av Oracle som är installerad i vart och ett av Oracle Homes på en server. Eftersom det kanske inte finns några databaser skapade i hemmet än, måste jag kunna göra detta utanför databasen (dvs. utan att ansluta till databasen). Det skulle också vara att föredra att kunna göra detta från ett fjärrprogram.

Detta kommer från ett Windows-program som kör .Net (C #, om det betyder något).

I läser för närvarande fjärrregisternycklar (med den här tekniken: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), för att hitta alla Oracle Homes enligt den här metoden . Detta fungerar bra, men jag har tittat runt de nycklarna och ser ingen information om den exakta versionen / utgåvan.

Namnet på ett Oracle Home självklart är naturligtvis 1) inte en pålitlig indikator och 2 ) har inte den exakta versionen / release (till exempel ”10.2.0.4.0”). I grund och botten letar jag efter ett sätt att ta reda på vad Oracle Universal Installer säger till dig med knappen Installerade produkter.


Jag bör klargöra att alla servrar kör Windows 2003-2008.

Kommentarer

  • Det blir svårt. Ta en titt på Oracle Universal-installationsprogrammet, varje komponent har sin egen version. Du kan inte bestämma versionen på en hel Oracle Client-installation – åtminstone inte för alla siffror.
  • Jag tror att tnaping och Sqlplus tillhandahåller den faktiska versionen av installationen. I Windows kan du använda kommandotolken för att spola utdata från tnsping. C:\tnsping>>E:\tnspingoutput.txt. Använd sedan språk på hög nivå för att extrahera version från textfilen
  • @WernfriedDomscheit Först frågar jag inte om klient -versionen, utan server -versionerna. För det andra kan du bestämma det, det är den sista nivån ett barn under ett hem (de enskilda komponenterna är barn på lägre nivå). Jag gör det manuellt med Universal Installer hela tiden. Jag vill bara ' inte spendera tid på att göra det manuellt hela tiden.
  • Vad händer när servern installeras på Linux / Unix (vilket är Jag tror att majoriteten)? Då hjälper inte ett C # -program eller att läsa registret.
  • @WernfriedDomscheit I mitt fall är de alla Windows-servrar. Jag kommer att klargöra det i min fråga.

Svar

Om databashemmen var korrekt installerade, var den centrala inventeringen har en lista om dem. Den centrala inventeringen i Windows finns på C:\Program Files\Oracle\Inventory. På Linux / UNIX-plattformar finns platsen för det centrala inventeringen i /etc/oraInst.loc. I inventeringen, i ContentsXML\inventory.xml, finns en lista över installerade hem i XML-format, t.ex.:

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

Du kan analysera listan och hitta detaljerad information med opatch till exempel:

/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 

Ett Windows-exempel skulle vara:

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

Ovanstående måste naturligtvis köras på servern.

Detta är det bästa fallet med korrekta installationer. Det värsta fallet är att hem använder separata inventeringar eller inte använder någon inventering alls, och du måste söka i alla filsystem på servern efter möjliga Oracle-installationer.

Svar

En annan metod för att visa Oracle-versionen är att ringa dbv-verktyget. Detta fungerar bara för installationer av databasservern. Versionen av det här verktyget ska alltid matcha versionen av databasen. Du bör ställa in lämplig miljö först (PATH; ORACLE_HOME, LD_LIBRARY_PATH), sedan får du något som

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

Den första raden innehåller release

Kommentarer

  • Det här ser fungerande lokalt ut, finns det något inbyggt sätt att åberopa det på distans?
  • Nej, jag don ' t tror det. På ett Linux-system skulle jag använda ssh för att försöka logga in på servern.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *