Jeg har brug for at bestemme fra et program, hvilken version af Oracle der er installeret i hvert af Oracle Homes på en server. Da der muligvis ikke er oprettet nogen databaser i hjemmet endnu, skal jeg være i stand til at gøre dette uden for databasen (dvs. uden at oprette forbindelse til databasen). Det ville også være meget foretrukket at kunne gøre dette fra et eksternt program.

Dette er fra et Windows-program, der kører .Net (C #, hvis det betyder noget).

I læser i øjeblikket eksterne registreringsdatabasenøgler (ved hjælp af denne teknik: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ) for at finde alle Oracle Homes i henhold til denne metode . Dette fungerer fint, men jeg har kigget rundt omkring disse nøgler og kan ikke se nogen information om den nøjagtige version / frigivelse.

Navnet på selve Oracle Home er selvfølgelig 1) ikke en pålidelig indikator og 2 ) har ikke den nøjagtige version / frigivelse (for eksempel “10.2.0.4.0”). Dybest set leder jeg efter en måde at finde ud af, hvad Oracle Universal Installer fortæller dig på knappen Installerede produkter.


Jeg skal præcisere, at alle serverne kører Windows 2003-2008.

Kommentarer

  • Det bliver svært. Se på Oracle Universal-installationsprogrammet, hver komponent har sin egen version. Du kan ikke bestemme versionen på en hel Oracle Client-installation – i det mindste ikke for alle numrene.
  • Jeg tror, at tnaping og Sqlplus giver den aktuelle version af installationen. I Windows kan du bruge kommandoprompt til at spole output fra tnsping. C:\tnsping>>E:\tnspingoutput.txt. Brug derefter sprog på højt niveau til at udtrække version fra tekstfilen
  • @WernfriedDomscheit Først spørger jeg ikke om klient -versionen, men server -versionerne. For det andet kan du bestemme det , det er det sidste niveau et barn under et hjem (de enkelte komponenter er børn på lavere niveau). Jeg gør det manuelt med Universal Installer hele tiden. Jeg vil bare ikke ' ikke bruge tiden på at gøre det manuelt hele tiden.
  • Hvad sker der, når serveren er installeret på Linux / Unix (hvilket er Jeg tror, flertallet)? Derefter hjælper et C # -program eller læsning af registreringsdatabasen ikke.
  • @WernfriedDomscheit I mit tilfælde er de alle Windows-servere. Jeg vil præcisere det i mit spørgsmål.

Svar

Hvis databasehjemmene blev installeret korrekt, var den centrale opgørelse har en liste om dem. Den centrale opgørelse på Windows findes på C:\Program Files\Oracle\Inventory. På Linux / UNIX-platforme kan placeringen af den centrale opgørelse findes i /etc/oraInst.loc. I oversigten er der i ContentsXML\inventory.xml en liste over installerede huse i XML-format, fx:

<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 analysere denne liste og finde detaljerede oplysninger med opatch for eksempel:

/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 

Et Windows-eksempel ville være:

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

Ovenstående skal naturligvis køres på serveren.

Dette er det bedste tilfælde med korrekte installationer. Det værste tilfælde er, at boliger bruger separate beholdninger eller slet ikke bruger nogen beholdning, og du skal søge i alle filsystemer på serveren efter mulige Oracle-installationer.

Svar

En anden metode til at få vist Oracle-versionen kalder dbv-værktøjet. Dette fungerer kun til installation af databaseserver. Versionen af dette værktøj skal altid matche med versionen af databasen. Du skal først indstille det relevante miljø (PATH; ORACLE_HOME, LD_LIBRARY_PATH), så får du noget 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ørste linje indeholder frigivelsen

Kommentarer

  • Dette ser ud til at fungere lokalt, er der nogen indbygget måde at påberåbe det eksternt?
  • Nej, jeg don ' t mener det. På et Linux-system ville jeg bruge ssh til at prøve at logge ind på serveren.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *