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

  • To będzie trudne. Spójrz na instalator Oracle Universal, każdy komponent ma swoją własną wersję. Nie możesz określić wersji dla całej instalacji klienta Oracle – przynajmniej nie dla wszystkich liczb.
  • Myślę, że tnaping i Sqlplus zapewniają aktualną wersję instalacji. W systemie Windows można użyć wiersza polecenia, aby buforować dane wyjściowe tnsping. C:\tnsping>>E:\tnspingoutput.txt. Następnie użyj języka wysokiego poziomu, aby wyodrębnić wersję z pliku tekstowego
  • @WernfriedDomscheit Po pierwsze, nie pytam o wersję klienta , ale wersję dla serwera . Po drugie, możesz to określić, jest to ostatnie dziecko poziomu pierwszego w Domu (poszczególne komponenty są dziećmi niższego poziomu). Robię to ręcznie za pomocą programu Universal Installer przez cały czas. Po prostu nie ' nie chcę poświęcać czasu na robienie tego ręcznie przez cały czas.
  • Co się dzieje, gdy serwer jest zainstalowany w systemie Linux / Unix (czyli Myślę, że większość)? Wtedy program C # lub czytanie rejestru nie pomaga.
  • @WernfriedDomscheit W moim przypadku wszystkie są serwerami Windows. Wyjaśnię to w swoim pytaniu.

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *