Чем SID отличается от имени службы в Oracle tnsnames.ora

Зачем мне их два? Когда надо использовать тот или иной?


person Georgy Bolyuba    schedule 04.09.2008    source источник
comment
Как узнать имя нашей службы, если у меня есть имя SID?   -  person Mrinal Saurabh    schedule 28.08.2015


Ответы (5)


Цитата @DAC

Вкратце: SID = уникальное имя вашей БД, ServiceName = псевдоним, используемый при подключении

Не совсем так. SID = уникальное имя ЭКЗАМЕНА (например, процесс Oracle, запущенный на машине). Oracle считает, что база данных - это файлы.

Имя службы = псевдоним ЭКЗАМЕНА (или нескольких экземпляров). Основная цель этого заключается в том, что если вы запускаете кластер, клиент может сказать подключите меня к SALES.acme.com, администратор базы данных может на лету изменить количество экземпляров, доступных для SALES.acme.com запросов, или даже переместить SALES.acme.com в совершенно другую базу данных без клиенту необходимо изменить какие-либо настройки.

person Matthew Watson    schedule 04.09.2008
comment
Итак, в вашем примере могут быть идентификаторы безопасности Sales1, Sales2 и Sales3, все из которых доступны через имя службы Sales? - person ; 04.09.2014
comment
Я думаю, что дело обстоит наоборот: у вас есть один SID, доступный как можно большему количеству сервисов. Затем вы можете взять одну из служб и указать ей другой SID / базу данных. - person Colin Nicholls; 11.02.2015
comment
Можно ли использовать имя Oracle SID так же, как имя TNS? Будет ли это проблемой? - person user2441441; 18.03.2015
comment
@ user2441441: Следуя объяснению, которое дал Мэтью, я думаю, что вы правы в предположении, что может быть несколько SID, и однажды служба, которая абстрагирует все SID - person omeganebula; 18.08.2016

См.: 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 = псевдоним, используемый при подключении

person DAC    schedule 04.09.2008
comment
Я смущен. Разве не должно быть так, что в RAC у вас будет свой INSTANCE_NAME для каждого экземпляра? А одна SERVICE_NAME может быть связана с несколькими экземплярами? - person Iwan Satria; 07.06.2019

Я знаю, что это очень давно, но когда речь идет о привередливых инструментах, использовании, пользователях или симптомах 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)
  )
)

Я просто подумал, что оставлю это здесь, поскольку это имеет отношение к вопросу и может быть полезно при попытке обойти некоторые менее чем четкие особенности сетей оракулов.

person seorphates    schedule 19.05.2015

что такое 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

person swaroop    schedule 09.01.2018

Согласно глоссарию Oracle:

SID - это уникальное имя для экземпляра базы данных Oracle. ---> Для переключения между базами данных Oracle пользователи должны указать желаемый SID ‹---. SID включен в части CONNECT DATA дескрипторов подключения в файле TNSNAMES.ORA и в определение сетевого прослушивателя в файле LISTENER.ORA. Также известен как системный идентификатор. Имя службы Oracle может быть любым описательным, например MyOracleServiceORCL. В Windows вы можете использовать свое имя службы как службу в службах Windows.

Вы должны использовать SID в TNSNAMES.ORA как лучший подход.

person Ashish    schedule 16.04.2010