Czy istnieje odpowiednik SHOW DATABASES
instrukcji MySQL ?
Nie ma takiej rzeczy. Możesz wysyłać zapytania do detektorów na maszynie ( lsnrctl status
), aby zobaczyć, jakie usługi są tam zarejestrowane, ale to nie mapuje jeden do jednego do bazy danych (i może być wielu detektorów na tym samym komputerze). W przeciwnym razie często używane narzędzia łączą się z jedną instancją bazy danych, a instancja należy do jednej bazy danych.
Jeśli mówisz o klastrach Oracle RAC, to każda instancja wie o swoich elementach równorzędnych (inne instancje obsługujące tę samą bazę danych) i możesz znaleźć inne instancje aktualnie uruchomione dla tej bazy danych za pomocą gv$instance
widoku.
Możesz także użyć tego crsctl
narzędzia, aby wyświetlić listę usług (w tym baz danych) zarejestrowanych w klastrze oraz ich status.
Jeśli mówisz o oprogramowaniu do klastrowania innego dostawcy, jestem prawie pewien, że wszystkie mają tego rodzaju narzędzia do zarządzania zasobami, które mogą wysyłać zapytania.
Jeśli mówisz tylko o kilku maszynach, to nie, nie ma 100% niezawodnego sposobu wyliczenia wszystkich baz danych w sieci.
Aby znaleźć aktywne (tj. Uruchomione) bazy danych, poszukaj *_pmon_*
procesów w systemie Unix (istnieje jedna na instancję bazy danych) i usług Oracle w systemie Windows.
Aby zlokalizować instalacje oprogramowania bazy danych Oracle, spójrz /etc/oratab
na Unix. Powinien zawierać wszystkie ORACLE_HOME
zainstalowane. Można zajrzeć do wnętrza każdego z tych w $ORACLE_HOME/dbs
za spfile<SID>.ora
i / lub init<SID>.ora
plików - nie będzie po jednym dla każdej bazy danych.
(Myślę, że możesz znaleźć odpowiednik informacji w oratab
kluczach rejestru systemu Windows poniżej HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, ale nie znam jego struktury).
Teraz, oczywiście, jeśli zarejestrowałeś całą bazę danych na serwerze OEM (Enterprise Manager) podczas ich instalacji, możesz znaleźć tam pełną listę - ale myślę, że jeśli pytasz, to nie jest tak.