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