Как получить список SID Oracle

У меня есть хост, порт, идентификатор пользователя и пароль, но отсутствует SID для подключения к СУБД Oracle. Как найти список SID на этом сервере?

Ответы

Ответ 1

Лучше всего, если у вас есть доступ к хост-машине, а установка Oracle - использовать команду: lsnrctl status. Это работает как на компьютерах Unix, Linux, так и на Windows. Команда status покажет вам всех слушателей (и связанные с ними SID).

C:\>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-JUN-2009 16:16:34
Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
Start Date                13-JUN-2009 12:04:14
Uptime                    2 days 4 hr. 12 min. 19 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Default Service           XE
Listener Parameter File   C:\oracle\XE\app\oracle\product\10.2.0\server\network\admin\listener.ora
Listener Log File         C:\oracle\XE\app\oracle\product\10.2.0\server\network\log\listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ThinkpadT61)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
    Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
   Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
   Instance "xe", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
   Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
   Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully

В приведенном выше примере вы можете подключиться к базе данных XE с помощью Conect Strings XEXDB, XE_XPT или XE.

Ответ 2

Короткий ответ: вам нужен доступ к операционной системе:

Для Unix ps -ef | grep pmon ps -ef | grep pmon покажет вам один или несколько процессов с именами, такими как ora_pmon_xxxx, а xxxx - это имя экземпляра.

В Windows, я думаю, есть похожая подпись в списке задач.

На практике эта информация обычно предоставляется вам тем, кто администрирует базу данных при создании вашей учетной записи.

Ответ 3

Вопрос сводится к тому, что ORACLE_SID или сервисы поддерживаются слушателем, который выполняется на хост-порту X. В зависимости от того, насколько безопасен этот прослушиватель, вы можете увидеть это с помощью команды lsnrctl от клиента, на котором установлен lsnrctl, Для этого вам понадобится установка сервера oracle на этом клиенте. Когда у вас есть это, вы можете выпустить

lsnrctl
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp)))
status

Значение по умолчанию для заполнения 10-го слушателя вызывает следующий результат: TNS-01189: слушатель не смог аутентифицировать пользователя

Это связано с тем, что из 10g оракула по умолчанию Безопасность включена: аутентификация локальной ОС что только пользователь локальной ОС, который начал слушатель, может выдать команды lsnrctl слушателю. Слушатель отказывается отвечать любому другому пользователю.

Ответ 4

Другим вариантом для рассмотрения является файл /etc/oratab в Unix или его equivilent в Windows, который, я думаю, является кустом реестра.

В oratab должен быть указан список всех идентификаторов безопасности на хосте, независимо от того, запущен ли он в настоящий момент.