Как SID отличается от имени службы в Oracle tnsnames.Ора

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

5 ответов


@DAC

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

Не совсем верно.. SID = уникальное имя экземпляра (например, процесс oracle, запущенный на компьютере). Oracle рассматривает "базу данных" как файлы.

имя службы = псевдоним экземпляра (или многих экземпляров). Основная цель этого - если вы используете кластер, клиент может сказать: "подключите меня к SALES.acme.com", DBA может на лету изменить количество экземпляров, которые доступны для SALES.acme.com запросы или даже перемещение SALES.acme.com в совершенно другую базу данных без необходимости изменения каких-либо параметров клиента.


см.: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

в чем разница между Oracle Имена служб SIDs и Oracle. Один config tool ищет имя службы и затем следующий ищет Сидс! Что продолжаешь?!

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

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

также, если у вас OPS (RAC) вы будете разные ИМЯ_СЛУЖБЫ для каждого пример.

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

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

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

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

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


Я знаю, что это древний, однако при работе с привередливыми инструментами, использованием, пользователями или симптомами re: Sid & service naming можно добавить немного гибкости в записи 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)
  )
)

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


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

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

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

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

ИМЯ_СЛУЖБЫ SID
bob1 bob
bob2 bob
вов3    Боб!--15--> bob4 bob

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

см., https://community.oracle.com/thread/4049517


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

SID-уникальное имя экземпляра базы данных Oracle. ---> Переключаться между базами данных Oracle пользователи должны указать требуемый SID

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