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?
Posso analisar os arquivos presentes em uma instalação Oracle para encontrar o mesmo?
Dadas as credenciais completas de acesso a um sistema Oracle, como você enumeraria todos os bancos de dados existentes?
Respostas:
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 osORACLE_HOME
s instalados. Você pode olhar para dentro de cada um deles em$ORACLE_HOME/dbs
paraspfile<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 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.
fonte
Oracle não possui bancos de dados, mas esquemas, você pode listá-los com
ou algo parecido com isto :
fonte
Simplesmente, não há analogia direta para os 'bancos de dados' do MySQL ou um 'cluster' no Oracle: a correspondência mais próxima é um 'esquema', mas ainda é muito diferente.
Aparentemente, isso vai mudar no 12c com a introdução de bancos de dados conectáveis:
fonte
Eu acho que uma resposta para futuros navegadores no * nix poderia ser:
cat / etc / oratab
fonte
Basta conectar-se ao ASM e verificar o cliente do banco de dados.
fonte
Se você tiver bancos de dados conectáveis (recomendado) no Oracle 12, poderá fazer o seguinte:
fonte
Para o banco de dados independente, para obter a lista de bancos de dados 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:
Além disso, como já foi mencionado, o banco de dados no MySQL não é o mesmo que o banco de dados no Oracle. No Oracle, é mais próximo do esquema - que é chamado de contêiner para objetos do usuário. Para obter a lista de esquemas, você pode usar a seguinte instrução SQL:
ou para obter a lista de esquemas não relacionados ao sistema (disponível no Oracle RDBMS a partir da versão 12c):
fonte