Czy istnieje odpowiednik SHOW DATABASES
instrukcji MySQL ?
Czy można znaleźć bazy danych w klastrze? tj. bazy danych obecne w sieci w innym systemie?
Czy mogę przeanalizować pliki obecne w instalacji Oracle, aby znaleźć to samo?
Biorąc pod uwagę pełne dane dostępu do systemu Oracle, jak byś wyliczył wszystkie istniejące bazy danych?
Odpowiedzi:
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ć wszystkieORACLE_HOME
zainstalowane. Można zajrzeć do wnętrza każdego z tych w$ORACLE_HOME/dbs
zaspfile<SID>.ora
i / lubinit<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żejHKEY_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.
źródło
Oracle nie ma baz danych, ale schematy, z których można je wymienić
lub coś w tym stylu :
źródło
Mówiąc najprościej, nie ma bezpośredniej analogii do „baz danych” MySQL lub „klastra” w Oracle: najbliższym dopasowaniem jest „schemat”, ale wciąż jest to zupełnie inne.
Wygląda na to, że zmieni się to w 12c wraz z wprowadzeniem wtykowych baz danych:
źródło
Myślę, że odpowiedzią dla przyszłych przeglądarek na * nix może być:
cat / etc / oratab
źródło
Wystarczy połączyć się z ASM i sprawdzić klienta bazy danych.
źródło
Jeśli masz wtykowe bazy danych (zalecane) na Oracle 12, możesz wykonać następujące czynności:
źródło
W przypadku autonomicznej bazy danych, aby uzyskać listę baz danych, które są uruchamiane automatycznie po ponownym uruchomieniu hosta:
lub po prostu, aby uzyskać listę wszystkich baz danych:
W przypadku baz danych RAC przydatna może być następująca metoda:
Jak już wspomniano, baza danych w MySQL nie jest tym samym, co baza danych w Oracle. W Oracle jest bardziej zbliżony do schematu - który jest nazywany kontenerem dla obiektów użytkownika. Aby uzyskać listę schematów, możesz użyć następującej instrukcji SQL:
lub aby uzyskać listę schematów niezwiązanych z systemem (dostępne w Oracle RDBMS od wersji 12c):
źródło