Muszę określić na podstawie programu, jaka wersja Oracle jest zainstalowana w każdym z Oracle Homes na serwerze. Ponieważ w Home może nie być jeszcze utworzonych baz danych, muszę mieć możliwość zrobienia tego poza bazą danych (tj. Bez łączenia się z bazą danych). Byłoby również bardzo korzystne, gdyby można było to zrobić ze zdalnego programu.
To jest z programu Windows działającego na .Net (C #, jeśli ma to znaczenie).
I Obecnie czytam klucze zdalnego rejestru (używając tej techniki: https://stackoverflow.com/questions/1566547/how-to-read-remote-registry-keys ), aby znaleźć wszystkie domy Oracle według tę metodę . To działa dobrze, jednak rozejrzałem się po tych klawiszach i nie widzę żadnych informacji o dokładnej wersji / wydaniu.
Sama nazwa Oracle Home to oczywiście 1) nie jest wiarygodnym wskaźnikiem i 2 ) nie ma dokładnej wersji / wydania (na przykład „10.2.0.4.0”). Zasadniczo szukam sposobu, aby dowiedzieć się, co program Oracle Universal Installer powie Ci w przycisku Zainstalowane produkty.
Powinienem wyjaśnić, że na wszystkich serwerach będzie działać system Windows 2003-2008.
Komentarze
Odpowiedź
Jeśli bazy danych zostały prawidłowo zainstalowane, centralny spis ma listę o nich. Centralny spis w systemie Windows znajduje się pod adresem C:\Program Files\Oracle\Inventory
. Na platformach Linux / UNIX lokalizację centralnego spisu można znaleźć w /etc/oraInst.loc
. W ekwipunku w ContentsXML\inventory.xml
znajduje się lista zainstalowanych domów w formacie XML, np .:
<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>
Możesz przeanalizować tę listę i znaleźć szczegółowe informacje za pomocą opcji opatch, na przykład:
/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
Przykładem systemu Windows byłoby:
C:\oracle\base\product\12.1.0\dbhome_1\OPatch\opatch lsinventory -oh C:\oracle\base\product\12.1.0\dbhome_1 -details
Powyższe musi oczywiście zostać uruchomione na serwerze.
Jest to najlepszy scenariusz z prawidłową instalacją. Najgorszy scenariusz jest taki, że domy używają oddzielnych zasobów lub nie używają ich wcale i musisz przeszukać wszystkie systemy plików na serwerze pod kątem możliwych instalacji Oracle.
Odpowiedź
Inną metodą wyświetlenia wersji Oracle jest wywołanie narzędzia dbv. Działa to tylko w przypadku instalacji serwera bazy danych. Wersja tego narzędzia powinna zawsze odpowiadać wersji bazy danych. Powinieneś najpierw ustawić odpowiednie środowisko (PATH; ORACLE_HOME, LD_LIBRARY_PATH), a następnie otrzymasz coś takiego jak
$ $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)
Pierwsza linia zawiera informacje o wersji
Komentarze
- To wygląda na działające lokalnie, czy istnieje jakiś wbudowany sposób wywołania go zdalnie?
- Nie, nie ' Tak myślę. W systemie Linux próbowałbym zalogować się do serwera przy użyciu ssh.
C:\tnsping>>E:\tnspingoutput.txt
. Następnie użyj języka wysokiego poziomu, aby wyodrębnić wersję z pliku tekstowego