Наскільки SID відрізняється від назви служби в Oracle tnsnames.ora


Відповіді:


154

Цитата від @DAC

Якщо коротко: SID = унікальна назва вашої БД, ServiceName = псевдонім, який використовується під час з'єднання

Не зовсім вірно. SID = унікальна назва ІНСТАНЦІЇ (наприклад, процес oracle, який працює на машині). Oracle вважає "База даних" файлами.

Назва служби = псевдонім до ІНСТАНЦІЇ (або багатьох примірників). Основна мета цього - якщо ви запускаєте кластер, клієнт може сказати "підключити мене до SALES.acme.com", DBA може на хоті змінити кількість екземплярів, доступних для запитів SALES.acme.com, або навіть перемістити SALES.acme.com до зовсім іншої бази даних, не вимагаючи від клієнта жодних змін.


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

1
Я думаю, що навпаки: у вас є один SID, який доступний у багатьох сервісах. Потім ви можете взяти одну з служб і вказати її на інший SID / базу даних.
Колін Ніколлс

Чи можемо ми мати ім’я Oracle SID таким же, як ім'я TNS? Це буде проблема?
користувач2441441

2
@ user2441441: Йдучи за поясненням, який Матвій дав, я думаю, ви праві в припущенні, що може бути кілька SID і один раз Сервіс, який абстрагує всі SID,
Dwarak

26

Перегляньте: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm

У чому різниця між Oracle SID та іменами Oracle SERVICE. Один інструмент конфігурації шукає ім'я SERVICE, а наступний шукає 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

Я знаю, що це давнє, але, коли ви маєте справу з вигадливими інструментами, використанням, користувачами або симптомами, що стосуються: імені та надання послуг, можна додати трохи гнучких даних до ваших tnsname, як:

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.


5

що таке SID та ім’я служби

перегляньте документацію Oracle за посиланням https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm

Якщо вищезазначене посилання надалі не буде доступним, на час написання цієї відповіді, вищенаведене посилання направить вас на тему "Служба баз даних та ідентифікація ідентифікатора бази даних" у розділі Концепції підключення "Посібник для мережевих служб бази даних" . Цей посібник опубліковано компанією Oracle як частина "Інтернет-документації бази даних Oracle, 10 г, випуск 2 (10.2)"

Коли мені доведеться користуватися тим чи іншим? Навіщо мені потрібно два з них?

Розглянемо нижче карти в середовищі RAC,

SID SERVICE_NAME
bob1 боб
bob2 боб
bob3 боб
bob4 боб

якщо налаштовано балансування навантаження, слухач буде «врівноважувати» навантаження на всі чотири 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.