Чем SID отличается от имени службы в Oracle tnsnames.ora - PullRequest
162 голосов
/ 04 сентября 2008

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

Ответы [ 5 ]

141 голосов
/ 04 сентября 2008

@ DAC

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

Не совсем верно. SID = уникальное имя INSTANCE (например, процесс оракула, запущенный на машине). Oracle считает «Базой данных» файлы.

Service Name = псевдоним INSTANCE (или во многих случаях). Основная цель этого - если вы работаете в кластере, клиент может сказать «подключите меня к SALES.acme.com», администратор БД может на лету изменить количество экземпляров, доступных для запросов SALES.acme.com, или даже переместите SALES.acme.com в совершенно другую базу данных без необходимости изменения каких-либо настроек клиентом.

26 голосов
/ 04 сентября 2008

Смотрите: http://www.sap -img.com / oracle-database / находка-oracle-sid-of-a-database.htm

В чем разница между Oracle SID и Oracle SERVICE NAMES. Один инструмент конфигурации ищет имя службы и затем следующий ищет SID! какой происходит?!

Oracle SID - это уникальное имя, которое однозначно идентифицирует ваш экземпляр / база данных, где в качестве службы зовут псевдоним TNS, который вы даете когда вы подключаетесь к база данных и это имя службы записано в файле Tnsnames.ora на вашем клиенты и могут совпадать с SID и вы также можете дать ему любой другой имя, которое вы хотите.

SERVICE_NAME - это новая функция от оракул 8i и далее в какой базе данных может зарегистрироваться у слушателя. Если база данных зарегистрирована со слушателем таким образом, то вы можете использовать Параметр SERVICE_NAME в tnsnames.ora в противном случае - используйте SID в tnsnames.ora.

Также, если у вас есть OPS (RAC), вы иметь разные SERVICE_NAME для каждого экземпляр.

SERVICE_NAMES указывает один или несколько имена для службы базы данных для который этот экземпляр соединяет. Вы можете указать несколько имен сервисов в Для того, чтобы различать разные использует одну и ту же базу данных. За Пример:

SERVICE_NAMES = sales.acme.com, widgetsales.acme.com

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

В параллельном сервере Oracle среда, вы должны установить это параметр для каждого экземпляра.

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

16 голосов
/ 19 мая 2015

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

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

5 голосов
/ 09 января 2018

что такое SID и имя службы

пожалуйста, посмотрите документацию оракула на https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

В случае, если вышеупомянутая ссылка будет недоступна в будущем, во время написания этого ответа указанная выше ссылка направит вас к теме «Идентификация службы базы данных и экземпляра базы данных» в главе «Основные понятия о возможностях подключения» «Службы базы данных в сети». Руководство администратора ". Это руководство опубликовано oracle как часть «Онлайн-документации по базе данных Oracle, 10g Release 2 (10.2)»

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

Рассмотрим приведенное ниже отображение в среде RAC,

SID SERVICE_NAME
Боб1 Боб
Боб2 Боб
Боб3 Боб
bob4 bob

если настроена балансировка нагрузки, слушатель будет «балансировать» рабочую нагрузку по всем четырем SID. Даже если балансировка нагрузки настроена, вы можете все время подключаться к bob1, используя SID вместо SERVICE_NAME.

Пожалуйста, обратитесь, https://community.oracle.com/thread/4049517

0 голосов
/ 16 апреля 2010

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

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

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

...