Existe um equivalente à SHOW DATABASES
instrução MySQL ?
Não existe tal coisa. Você pode consultar os ouvintes em uma máquina ( lsnrctl status
) para ver quais serviços estão registrados lá, mas isso não é mapeado individualmente para o banco de dados (e pode haver vários ouvintes na mesma máquina). Caso contrário, as ferramentas usadas normalmente se conectam a uma instância de banco de dados e uma instância pertence a um único banco de dados.
Se você está falando sobre clusters Oracle RAC, cada instância conhece seus pares (outras instâncias que atendem ao mesmo banco de dados) e você pode encontrar as outras instâncias atualmente iniciadas para esse banco de dados usando a gv$instance
exibição.
Você também pode usar o crsctl
utilitário para listar os serviços (incluindo bancos de dados) registrados no cluster e seu status.
Se você está falando sobre o software de cluster de outro fornecedor, tenho certeza de que todos eles têm esses tipos de utilitários de gerenciamento de recursos para consultar.
Se você está falando de apenas um monte de máquinas, não, não há uma maneira 100% confiável de enumerar todos os bancos de dados em uma rede.
Para encontrar bancos de dados ativos (ou seja, iniciados), procure *_pmon_*
processos no Unix (existe um por instância do banco de dados) e serviços Oracle no Windows.
Para localizar instalações do software de banco de dados Oracle, consulte o /etc/oratab
Unix. Isso deve conter todos os ORACLE_HOME
s instalados. Você pode olhar para dentro de cada um deles em $ORACLE_HOME/dbs
para spfile<SID>.ora
e / ou init<SID>.ora
arquivos - haverá um para cada banco de dados.
(Acredito que você possa encontrar o equivalente das informações nas oratab
chaves de registro do Windows abaixo HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, mas não conheço sua estrutura.)
Agora, é claro, se você registrou todo o seu banco de dados em um servidor OEM (Enterprise Manager) quando os instalou, pode encontrar a lista completa lá - mas acho que se você está perguntando, esse não é o caso.