Зачем мне их два? Когда надо использовать тот или иной?
Чем SID отличается от имени службы в Oracle tnsnames.ora
Ответы (5)
Вкратце: SID = уникальное имя вашей БД, ServiceName = псевдоним, используемый при подключении
Не совсем так. SID = уникальное имя ЭКЗАМЕНА (например, процесс Oracle, запущенный на машине). Oracle считает, что база данных - это файлы.
Имя службы = псевдоним ЭКЗАМЕНА (или нескольких экземпляров). Основная цель этого заключается в том, что если вы запускаете кластер, клиент может сказать подключите меня к SALES.acme.com
, администратор базы данных может на лету изменить количество экземпляров, доступных для SALES.acme.com
запросов, или даже переместить SALES.acme.com
в совершенно другую базу данных без клиенту необходимо изменить какие-либо настройки.
Sales1
, Sales2
и Sales3
, все из которых доступны через имя службы Sales
?
- person ; 04.09.2014
См.: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
В чем разница между идентификаторами безопасности Oracle и именами служб Oracle. Один инструмент настройки ищет ИМЯ СЛУЖБЫ, а следующий - идентификаторы безопасности! Что происходит?!
Oracle SID - это уникальное имя, которое однозначно идентифицирует ваш экземпляр / базу данных, где имя службы - это псевдоним TNS, который вы даете при удаленном подключении к своей базе данных, и это имя службы записывается в файле Tnsnames.ora на ваших клиентах, и это может быть то же, что и SID, и вы также можете дать ему любое другое имя, какое захотите.
SERVICE_NAME - это новая функция, начиная с Oracle 8i, в которой база данных может регистрироваться с помощью слушателя. Если база данных зарегистрирована в слушателе таким образом, вы можете использовать параметр SERVICE_NAME в tnsnames.ora, иначе - используйте SID в tnsnames.ora.
Также, если у вас есть OPS (RAC), у вас будет разные SERVICE_NAME для каждого экземпляра.
SERVICE_NAMES указывает одно или несколько имен для службы базы данных, к которой подключается этот экземпляр. Вы можете указать несколько имен служб, чтобы различать разные варианты использования одной и той же базы данных. Например:
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
Вы также можете использовать имена служб, чтобы идентифицировать одну службу, доступную из двух разных баз данных с помощью репликации.
В среде Oracle Parallel Server вы должны установить этот параметр для каждого экземпляра.
Вкратце: SID = уникальное имя вашего экземпляра БД, ServiceName = псевдоним, используемый при подключении
Я знаю, что это очень давно, но когда речь идет о привередливых инструментах, использовании, пользователях или симптомах re: sid и именование сервисов, можно добавить немного гибкости в записи tnsnames, например:
mySID, mySID.whereever.com =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myHostname)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mySID.whereever.com)
(SID = mySID)
(SERVER = DEDICATED)
)
)
Я просто подумал, что оставлю это здесь, поскольку это имеет отношение к вопросу и может быть полезно при попытке обойти некоторые менее чем четкие особенности сетей оракулов.
что такое SID и имя службы
ознакомьтесь с документацией Oracle по адресу https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm
В случае, если указанная выше ссылка будет недоступна в будущем, на момент написания этого ответа указанная выше ссылка направит вас к теме «Служба базы данных и идентификация экземпляра базы данных» в главе «Концепции подключения» в «Руководстве администратора сетевых служб баз данных» . Это руководство опубликовано Oracle как часть «Онлайн-документации Oracle Database, 10g Release 2 (10.2)»
Когда надо использовать тот или иной? Зачем мне их два?
Рассмотрим ниже сопоставление в среде RAC,
SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob
если балансировка нагрузки настроена, слушатель будет «балансировать» рабочую нагрузку по всем четырем SID. Даже если балансировка нагрузки настроена, вы можете подключаться к bob1 все время, если хотите, используя SID вместо SERVICE_NAME.
См. https://community.oracle.com/thread/4049517
Согласно глоссарию Oracle:
SID - это уникальное имя для экземпляра базы данных Oracle. ---> Для переключения между базами данных Oracle пользователи должны указать желаемый SID ‹---. SID включен в части CONNECT DATA дескрипторов подключения в файле TNSNAMES.ORA и в определение сетевого прослушивателя в файле LISTENER.ORA. Также известен как системный идентификатор. Имя службы Oracle может быть любым описательным, например MyOracleServiceORCL. В Windows вы можете использовать свое имя службы как службу в службах Windows.
Вы должны использовать SID в TNSNAMES.ORA как лучший подход.