SID, SERVICE NAME - что это такое?

dbstalker, 11 мая

Имя экземпляра базы данных

Экземпляр базы данных состоит из области SGA и процессов ORACLE. Имя экземпляра базы данных указывается в файле инициализации init.ora параметром instance_name.

Если не брать во внимание конфигурацию ORACLE RAC , то каждой базе данных соответствует один экземпляр.

Оракловский системный идентификатор SID (System IDentifier – системный идентификатор) является уникальным именем, которое однозначно идентифицирует экземпляр/базу данных. Хранится в переменной среды ORACLE_SID и используется утилитами и сетевыми компонентами для доступа к базе данных.

Здесь можно почитать, как переименовать базу данных.

Глобальное имя базы данных

Для того, чтобы база данных была уникально идентифицирована в глобальном масштабе используется глобальное имя базы данных. Оно состоит из имени базы данных и домена базы данных. Так как две базы данных в одном домене не могут иметь одинаковые имена, то глобальное имя базы данных будет уникальным.

Имена службы (сервиса) базы данных.

Кроме понятия SID существует также и понятие SERVICE NAME, которые зачастую не различают. Тем не менее, для пользователей база данных ORACLE представляет собой службу (сервис) операционной системы. Имя сервиса (SERVICE_NAME) – это сравнительно новое понятие, введенное начиная с СУБД Oracle 8i. SERVICE_NAME определяет одно или ряд имен для подключения к одному экземпляру базы данных. То есть можно указать несколько имен сервиса, ссылающихся на один экземпляр, с различными настройками. Понятие служба БД используется для логического группирования сеансов с целью иметь обобщенную единицу слежения и управления при использовании общей БД разными приложениями. Службу рекомендуется связывать с набором приложений, объединенных общими свойствами, пороговыми характеристиками или правилами потребления ресурсов СУБД.

Возможные значения SERVICE_NAME указываются в сетевых установках Oracle и регистрируются в качестве службы БД процессом listener.

Стандартный способ получения SID и SERVICE_NAME, который работал до десятой версии СУБД Oracle – это использование утилиты lsnrctl. Для этого достаточно воспользоваться командой services:

LSNRCTL> services 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))) 
Services Summary... 
Service "PLSExtProc" has 1 instance(s). 
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... 
Service "orcl" has 1 instance(s). 
Instance "orcl", status READY, has 1 handler(s) for this service... 
The command completed successfully 
LSNRCTL> 

В выводе команды мы можем видеть системный идентификатор, он же – SID (Instance), и имя сервиса – SERVICE_NAME (Service). В данном случае они совпадают, но это бывает не всегда.

select * from V$SERVICES ;

Этот запрос для ORA10g покажет все зарегистрированные сервисы. Помимо сконфигурированных вами сервисов, всегда имеются две внутренние службы: SYS$BACKGROUND используется внутренними процессами СУБД, а к SYS$USERS причисляются соединения пользователей, не указавших желаемую им службу.

Итог: Если база данных зарегистрирована листенером, как службу с определенным SERVICE_NAME, тогда в tnsnames.ora можно использовать значение параметра SERVICE_NAME, иначе нужно будет использовать значение SID.

Тэги: общее

ОднаКнопка

 

Новый комментарий

Я не спамер: введите суму 5+9



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Товары для взрослых
24 мая, 1 ответа
Выделенный сервер
23 мая, 3 ответа
Где скачать 1с
21 мая, 1 ответа