Existe um equivalente à SHOW DATABASES
instrução MySQL?
É possível encontrar bancos de dados em um cluster? ou seja, bancos de dados presentes na rede em algum outro sistema?
Eu poderia analisar os arquivos presentes em uma instalação do Oracle para encontrar os mesmos?
Com credenciais de acesso completas a um sistema Oracle, como você faria para enumerar todos os bancos de dados existentes?
Não existe tal coisa. Você pode consultar ouvintes em uma máquina (
lsnrctl status
) para ver quais serviços estão registrados lá, mas isso não mapeia um a um para o banco de dados (e pode haver vários ouvintes na mesma máquina). Caso contrário, as ferramentas comumente usadas se conectam a uma instância de banco de dados e uma instância pertence a um único banco de dados.Se você estiver 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 iniciadas atualmente 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 seus 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, então 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 (há um por instância de banco de dados) e serviços Oracle no Windows.Para localizar instalações do software de banco de dados Oracle, consulte no
/etc/oratab
Unix. Isso deve conter todos osORACLE_HOME
s instalados. Você pode olhar dentro de cada um deles em$ORACLE_HOME/dbs
forspfile<SID>.ora
e/ouinit<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 abaixoHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, mas não conheço sua estrutura.)Agora, é claro, se você registrou todo o seu banco de dados com um servidor OEM (Enterprise Manager) quando os instalou, pode encontrar a lista completa lá - mas acho que se você está perguntando, não é o caso.
Oracle não tem bancos de dados, mas esquemas, você pode listá-los com
ou algo parecido com isto :
Simplesmente falando, não há analogia direta para 'bancos de dados' MySQL ou um 'cluster' no Oracle: a correspondência mais próxima é um 'esquema', mas isso ainda é muito diferente.
Aparentemente , isso mudará no 12c com a introdução de bancos de dados conectáveis:
Acho que uma resposta para futuros navegadores em * nix poderia ser:
cat /etc/oratab
Se você tiver bancos de dados plugáveis (recomendado) no Oracle 12, você pode fazer o seguinte:
Basta conectar ao ASM e verificar o cliente do banco de dados.
Para banco de dados autônomo para obter a lista de bancos de dados que são iniciados automaticamente após a reinicialização do host:
ou apenas para obter a lista de todos os bancos de dados:
Para bancos de dados RAC, o seguinte método pode ser útil:
ou informações muito mais detalhadas
Também como já foi mencionado o banco de dados em MySQL não é o mesmo que o banco de dados em Oracle. No Oracle é mais próximo do esquema - que é chamado de container para objetos do usuário. Para obter a lista de esquemas, você pode usar a seguinte instrução SQL:
ou para obter esquemas de lista não relacionados ao sistema (disponíveis no Oracle RDBMS a partir da versão 12c):
SELECT proprietário DISTINCT FROM all_tables;. Isso listará os bancos de dados.