Зачем мне два из них? Когда я должен использовать тот или иной?
Как SID отличается от имени службы в Oracle tnsnames.ora
Ответ 1
@DAC
Вкратце: SID = уникальное имя ваша БД, ServiceName = используемый псевдоним при подключении
Не строго верно. SID = уникальное имя INSTANCE (например, процесс оракула, запущенный на машине). Oracle рассматривает "базу данных" как файлы.
Имя службы = псевдоним для INSTANCE (или многих экземпляров). Основная цель этого заключается в том, что если вы используете кластер, клиент может сказать "подключить меня к SALES.acme.com", администратор базы данных может "на лету" изменить количество экземпляров, доступных для запросов SALES.acme.com, или даже переместить SALES.acme.com в совершенно другую базу данных без необходимости изменения каких-либо параметров клиентом.
Ответ 2
Смотрите: http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
В чем разница между Oracle SID и Oracle SERVICE NAMES. Один config ищет ИМЯ СЕРВИСА и то следующий ищет 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 окружающей среды, вы должны установить это параметр для каждого экземпляра.
Короче: SID = уникальное имя вашего экземпляра DB, ServiceName = псевдоним, используемый при подключении
Ответ 3
Я знаю, что это древний, но когда речь идет о тонких инструментах, использованиях, пользователях или симптомах 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)
)
)
Я просто подумал, что оставлю это здесь, так как это слегка относится к этому вопросу и может быть полезно при попытке переплетаться с некоторыми менее ясными особенностями сетей ораков.
Ответ 4
В соответствии с Oracle Glossary:
SID - уникальное имя для экземпляра базы данных Oracle. --- > Чтобы переключиться между базами данных Oracle пользователи должны указать желаемый идентификатор SID < ---. SID включен в разделы CONNECT DATA дескрипторов соединения в файле TNSNAMES.ORA и в определении сетевого прослушивателя в файле LISTENER.ORA. Также известен как системный идентификатор. Имя службы Oracle может быть что-нибудь описательное, как "MyOracleServiceORCL". В Windows, Вы можете использовать свое имя службы как службу в службах Windows.
Вы должны использовать SID в TNSNAMES.ORA как лучший подход.