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
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.
C:\tnsping>>E:\tnspingoutput.txt
. Ezután használjon magas szintű nyelvet a verzió kivonására a szöveges fájlból.