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


Ответы:


154

Цитата @DAC

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

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

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


1
Таким образом, в вашем примере, может быть SIDs Sales1, Sales2и Sales3, все из которых доступны через имя службы Sales?

1
Я думаю, что все наоборот: у вас есть один SID, который доступен столько же услуг. Затем вы можете воспользоваться одним из сервисов и указать другой SID / базу данных.
Колин Николс

Можем ли мы иметь имя Oracle SID такое же, как имя TNS? Это будет проблемой?
user2441441

2
@ user2441441: Исходя из объяснения, которое дал Мэтью, я думаю, что вы правы в предположении, что может быть несколько SID и один раз Service, который абстрагирует все SID
Dwarak

26

Пожалуйста, смотрите: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

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

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


Я запутался. Не должно ли быть так, что в RAC у вас будет разное "INSTANCE_NAME" для каждого экземпляра? А один SERVICE_NAME может быть связан с несколькими экземплярами?
Иван Сатрия

20

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

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


6

что такое SID и имя сервиса

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

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

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

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

SID SERVICE_NAME
Боб1 Боб Боб
Боб2 Боб
Боб3 Боб
Боб4 Боб

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

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.