Egy programból meg kell határoznom, hogy az Oracle melyik verziója van telepítve a szerver egyes Oracle Homes szolgáltatásaiba. Mivel lehet, hogy még nincsenek a Home-ban létrehozott adatbázisok, ezt képesnek kell lennem megtenni az adatbázison kívül (vagyis anélkül, hogy csatlakoznék az adatbázishoz). Ezenkívül nagyon előnyös lenne, ha ezt távoli programról lehetne megtenni.

Ez egy .Net futtató Windows programból származik (C #, ha ez számít).

I jelenleg távoli rendszerleíró kulcsokat olvasok (ezzel a technikával: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), hogy megtaláljam az Oracle ez a módszer . Ez jól működik, azonban körülnéztem ezeken a kulcsokon, és nem látok információt a pontos verzióról / kiadásról.

Maga az Oracle Home neve természetesen 1) nem megbízható mutató és 2 ) nem rendelkezik a pontos verzióval / kiadással (például “10.2.0.4.0”). Alapvetően arra keresem a módját, hogy kitaláljam, mit mond az Oracle Universal Installer a Telepített termékek gombra.


Tisztáznom kell, hogy az összes szerveren Windows 2003-2008 fut. / p>

Megjegyzések

  • Nehéz lesz. Vessen egy pillantást az Oracle Universal telepítőre, minden komponensnek megvan a maga verziója. Az Oracle Client teljes telepítésénél nem határozható meg a verzió – legalábbis az összes szám esetében nem.
  • Úgy gondolom, hogy a bepattintás és az Sqlplus biztosítja a telepítés tényleges verzióját. A Windows rendszerben a parancssor segítségével spoolozhatja a tnsping kimenetét. C:\tnsping>>E:\tnspingoutput.txt. Ezután használjon magas szintű nyelvet a verzió kivonására a szöveges fájlból.
  • @WernfriedDomscheit Először is, nem az Client verzióról kérdezem, hanem a szerver verzióról. Másodszor, meg tudod határozni , ez az utolsó gyermek egy otthon alatt (az egyes elemek alacsonyabb szintű gyerekek). A Universal Installer alkalmazással mindig manuálisan csinálom. Csak nem ' nem akarom az időt manuálisan tölteni.
  • Mi történik, ha a szerver Linux / Unix rendszerre van telepítve (ami Szerintem a többség)? Ekkor egy C # program vagy a rendszerleíró adatbázis olvasása nem segít.
  • @WernfriedDomscheit Esetemben ezek mind Windows szerverek. Ezt a kérdésemben pontosítom.

Válasz

Ha az adatbázis-otthonok megfelelően lettek telepítve, a központi leltár van egy listájuk róluk. A Windows központi leltára a C:\Program Files\Oracle\Inventory címen található. Linux / UNIX platformokon a központi készlet helye megtalálható a /etc/oraInst.loc oldalon. A készletben a ContentsXML\inventory.xml könyvtárban található a telepített otthonok listája XML formátumban, például:

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

Elemezheti ezt a listát, és részletes információkat találhat például az opatch segítségével:

/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 

A Windows példája a következő lenne:

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

A fentieket természetesen a szerveren kell futtatni.

Ez a legjobb eset, megfelelő telepítéssel. A legrosszabb eset az, hogy az otthonok külön készleteket használnak, vagy egyáltalán nem használnak készleteket, és a szerver összes fájlrendszerében meg kell keresnie az esetleges Oracle-telepítéseket.

Válasz

Az Oracle verzió megjelenítésének másik módja a dbv segédprogram meghívása. Ez csak az adatbázis-kiszolgáló telepítésekor működik. Az eszköz verziójának mindig meg kell egyeznie az adatbázis verziójával. Először be kell állítania a megfelelő környezetet (PATH; ORACLE_HOME, LD_LIBRARY_PATH), majd valami hasonlót kap:

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

Az első sor tartalmazza a kiadást

Megjegyzések

  • Ez helyileg működőképesnek tűnik, van-e valamilyen beépített módszer a távoli meghívásra?
  • Nem, nem ' t úgy gondolja. Linux rendszeren az ssh használatával próbálnék bejelentkezni a szerverre.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük