MyTetra Share
Делитесь знаниями!
SID и SERVICE_NAME
Время создания: 15.05.2017 00:09
Раздел: Oracle Admin
Запись: xintrea/mytetra_db_mcold/master/base/149479617335z5askbaa/text.html на raw.githubusercontent.com

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

Экземпляр базы данных состоит из области 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.


например в файле init - db_name = XE

соответственно в tnsnames - SERVICE_NAME = XE

 
MyTetra Share v.0.59
Яндекс индекс цитирования