Potřebuji z programu zjistit, jaká verze Oracle je nainstalována v každé z Oracle Homes na serveru. Jelikož v Domově ještě nemusí být vytvořeny žádné databáze, musím být schopen to udělat mimo databázi (tj. Bez připojení k databázi). Bylo by také velmi výhodné, kdybyste to mohli dělat ze vzdáleného programu.
Toto je z programu Windows se spuštěnou .Net (C #, pokud na tom záleží).
I právě čtu klíče vzdáleného registru (pomocí této techniky: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), abych našel všechny Oracle Homes podle tato metoda . To funguje dobře, ale rozhlédl jsem se kolem těchto klíčů a nevidím žádné informace o přesné verzi / vydání.
Samotný název Oracle Home je samozřejmě 1) není spolehlivým ukazatelem a 2 ) nemá přesnou verzi / vydání (například „10.2.0.4.0“). V zásadě hledám způsob, jak zjistit, co vám řekne instalační program Oracle Universal Installer pomocí tlačítka Installed Products.
Měl bych objasnit, že na všech serverech bude spuštěn Windows 2003-2008.
Komentáře
Odpověď
Pokud byly databázové domy nainstalovány správně, centrální inventář má o nich seznam. Centrální inventář ve Windows se nachází na C:\Program Files\Oracle\Inventory
. Na platformách Linux / UNIX lze umístění centrálního inventáře najít v /etc/oraInst.loc
. V inventáři je v ContentsXML\inventory.xml
seznam nainstalovaných domů ve formátu XML, např .:
<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>
Tento seznam můžete analyzovat a najít podrobné informace například s opatch:
/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
Příkladem systému Windows může být:
C:\oracle\base\product\12.1.0\dbhome_1\OPatch\opatch lsinventory -oh C:\oracle\base\product\12.1.0\dbhome_1 -details
Výše uvedené je samozřejmě nutné spustit na serveru.
Toto je nejlepší scénář se správnou instalací. Nejhorší scénář je, že domácnosti používají samostatné inventáře nebo nepoužívají vůbec žádný inventář a vy musíte hledat možné instalace Oracle ve všech souborových systémech na serveru.
Odpovědět
Další metodou zobrazení verze Oracle je volání obslužného programu dbv. To funguje pouze u instalací databázového serveru. Verze tohoto nástroje by se měla vždy shodovat s verzí databáze. Nejprve byste měli nastavit vhodné prostředí (PATH; ORACLE_HOME, LD_LIBRARY_PATH), pak dostanete něco jako
$ $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)
První řádek obsahuje vydání
Komentáře
- Vypadá to lokálně, existuje nějaký vestavěný způsob, jak jej vzdáleně vyvolat?
- Ne, ne ' si to nemyslí. V systému Linux bych se pomocí ssh pokusil přihlásit na server.
C:\tnsping>>E:\tnspingoutput.txt
. Pak použijte jazyk na vysoké úrovni k extrakci verze z textového souboru