¿Hay un equivalente a la SHOW DATABASES
declaración de MySQL ?
No existe tal cosa. Puede consultar oyentes en una máquina ( lsnrctl status
) para ver qué servicios están registrados allí, pero eso no se asigna uno a uno a la base de datos (y podría haber múltiples oyentes en la misma máquina). De lo contrario, las herramientas comúnmente utilizadas se conectan a una instancia de base de datos, y una instancia pertenece a una sola base de datos.
Si habla de clústeres de Oracle RAC, cada instancia conoce a sus pares (otras instancias que dan servicio a la misma base de datos) y puede encontrar las otras instancias actualmente iniciadas para esa base de datos utilizando la gv$instance
vista.
También puede usar la crsctl
utilidad para enumerar los servicios (incluidas las bases de datos) que están registrados en el clúster y su estado.
Si está hablando del software de agrupación de otro proveedor, estoy bastante seguro de que todos tienen este tipo de utilidades de administración de recursos para consultar.
Si está hablando de un montón de máquinas, entonces no, no hay una forma 100% confiable de enumerar todas las bases de datos en una red.
Para buscar bases de datos activas (es decir, iniciadas), busque *_pmon_*
procesos en Unix (hay uno por instancia de base de datos) y servicios de Oracle en Windows.
Para ubicar las instalaciones del software de base de datos Oracle, mire en /etc/oratab
Unix. Esto debería contener todos los ORACLE_HOME
s instalados. Usted puede mirar en el interior de cada uno de los de $ORACLE_HOME/dbs
para spfile<SID>.ora
y / o init<SID>.ora
archivos - habrá una para cada base de datos.
(Creo que puede encontrar el equivalente de la información en oratab
las claves de registro de Windows a continuación HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, pero no conozco su estructura).
Ahora, por supuesto, si ha registrado toda su base de datos con un servidor OEM (Enterprise Manager) cuando los instaló, puede encontrar la lista completa allí, pero supongo que si está preguntando, ese no es el caso.