Esiste un equivalente SHOW DATABASES
all'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$instance
vista.
È inoltre possibile utilizzare l' crsctl
utilità 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/oratab
Unix. Questo dovrebbe contenere tutte le ORACLE_HOME
s installate. Puoi guardare all'interno di ognuno di quelli in $ORACLE_HOME/dbs
per spfile<SID>.ora
e / o init<SID>.ora
file - ce ne sarà uno per ogni database.
(Credo che puoi trovare l'equivalente delle informazioni nelle oratab
chiavi 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.