Есть ли эквивалент SHOW DATABASES
оператора MySQL ?
Там нет такой вещи. Вы можете запросить прослушиватели на машине ( lsnrctl status
), чтобы узнать, какие службы там зарегистрированы, но это не сопоставляет один-к-одному с базой данных (и на одной машине может быть несколько слушателей). В противном случае обычно используемые инструменты подключаются к одному экземпляру базы данных, а экземпляр относится к одной базе данных.
Если вы говорите о кластерах Oracle RAC, то каждый экземпляр знает своих одноранговых узлов (другие экземпляры, которые обслуживают одну и ту же базу данных), и вы можете найти другие экземпляры, запущенные в данный момент для этой базы данных, используя gv$instance
представление.
Вы также можете использовать crsctl
утилиту для перечисления служб (включая базы данных), которые зарегистрированы в кластере, и их статус.
Если вы говорите о программном обеспечении для кластеризации другого производителя, я уверен, что у них всех есть такие утилиты управления ресурсами для запроса.
Если вы говорите только о группе машин, то нет, нет 100% надежного способа перечисления всех баз данных в сети.
Чтобы найти активные (то есть запущенные) базы данных, найдите *_pmon_*
процессы в Unix (по одному на экземпляр базы данных) и службы Oracle в Windows.
Чтобы найти установки программного обеспечения базы данных Oracle, посмотрите /etc/oratab
на Unix. Это должно содержать все ORACLE_HOME
установленные. Вы можете заглянуть внутрь каждого из них в $ORACLE_HOME/dbs
течение spfile<SID>.ora
и / или init<SID>.ora
файлов - будет один для каждой базы данных.
(Я полагаю, что вы можете найти эквивалент информации в oratab
разделах реестра Windows ниже HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, но я не знаю ее структуру.)
Теперь, конечно, если вы зарегистрировали всю свою базу данных на сервере OEM (Enterprise Manager), когда вы их установили, вы можете найти полный список там - но я думаю, если вы спросите, это не так.