Esiste un equivalente SHOW DATABASESall'istruzione MySQL ?
Non vi è nulla di simile. Puoi interrogare i listener su una macchina ( lsnrctl status) per vedere quali servizi sono registrati lì, ma ciò non associa uno a uno al database (e potrebbero esserci più listener sulla stessa macchina). In caso contrario, gli strumenti comunemente utilizzati si collegano a un'istanza di database e un'istanza appartiene a un singolo database.
Se stai parlando di cluster Oracle RAC, ogni istanza conosce i suoi peer (altre istanze che servono lo stesso database) e puoi trovare le altre istanze attualmente avviate per quel database usando la gv$instancevista.
È inoltre possibile utilizzare l' crsctlutilità per elencare i servizi (compresi i database) registrati nel cluster e il loro stato.
Se stai parlando del software di clustering di un altro fornitore, sono abbastanza sicuro che tutti abbiano questo tipo di utility di gestione delle risorse da interrogare.
Se stai parlando solo di un mucchio di macchine, allora no, non esiste un modo affidabile al 100% di enumerare tutti i database su una rete.
Per trovare database attivi (cioè avviati), cerca i *_pmon_*processi su Unix (ce n'è uno per istanza di database) e i servizi Oracle su Windows.
Per individuare le installazioni del software di database Oracle, consultare /etc/oratabUnix. Questo dovrebbe contenere tutte le ORACLE_HOMEs installate. Puoi guardare all'interno di ognuno di quelli in $ORACLE_HOME/dbsper spfile<SID>.orae / o init<SID>.orafile - ce ne sarà uno per ogni database.
(Credo che puoi trovare l'equivalente delle informazioni nelle oratabchiavi di registro di Windows qui sotto HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE, ma non conosco la sua struttura.)
Ora, ovviamente, se hai installato tutto il tuo database con un server OEM (Enterprise Manager) quando li hai installati, puoi trovare l'elenco completo lì - ma immagino che se lo stai chiedendo non è il caso.