it-swarm-ru.tech

Разница между SID, именем базы данных, доменом базы данных, глобальным именем базы данных, именем службы, псевдонимом службы и именем экземпляра в Oracle

Может кто-нибудь объяснить мне, в чем разница SID, имени БД, домена БД, глобального имени базы данных, имени службы, псевдонима службы и имени экземпляра в Oracle?

Спасибо Майкл

14
Michael Ellick Ang

SID = идентифицирует экземпляр базы данных (имя базы данных + номер экземпляра). Поэтому, если имя вашей базы данных - somedb, а номер вашего экземпляра - 3, тогда ваш SID - somedb3.

Имя БД = Имя базы данных (база данных может совместно использоваться несколькими экземплярами)

Домен БД = Обычно такой же, как домен вашей компании (somecompany.com)

Глобальное имя базы данных = имя базы данных + домен базы данных (somedb.somecompany.com)

Имя службы = "соединитель" для одного или нескольких экземпляров. Часто полезно создавать дополнительные имена служб в среде RAC, поскольку служба может быть модифицирована для использования определенных SID в качестве первичных или вторичных соединений или для того, чтобы вообще не использовать определенные SID.

Псевдоним службы = псевдоним имени службы (например, CNAME и т.д.). Скажем, вы делаете имя своего сервиса чем-то значимым для dba, но, возможно, это немного эзотерично. Создайте псевдоним службы и назовите его так, чтобы он имел смысл для пользователя.

Имя экземпляра = такое же как SID

11
jswoods7

То, как вы описываете SID, - это только поведение DEFAULT в конфигурации RAC. SID (== имя_экземпляра) - это просто имя вашего экземпляра.

Я всегда смотрю на это так: Экземпляр - это экземпляр программного обеспечения СУБД. Экземпляр монтирует контрольный файл (изменяет монтирование базы данных). В этом контрольном файле записывается местоположение файлов данных. коллекция файлов данных (хорошо, и контрольный файл (ы)) == база данных.

База данных имеет имя, db_name и (необязательно) домен (db_domain) -> вместе global_db_name. Теперь представьте, что вы реплицируете (DataGuard) свою базу данных. Вы хотели бы оставить имя DB_name таким же, верно? (Я имею в виду: в отношении данных, это ЖЕ база данных) Но тогда как определить две "версии" вашей базы данных? Введите 'DB_UNIQUE_NAME' ... Да, это сбивает с толку ...

Моя личная практика - называть INSTANCE именем db_unique_name в настройке DataGuard и придерживаться RAC-имен (db_name + Instance_Number) в настройке RAC. Затем, db_unique_names, которые я составляю, обычно имеют вид db_name + 1-letter-суффикс (MYDBa MYDBb и т.д.)

Ура, Пол

4
paul

SID является экземпляром. Лучше избегать использования термина "экземпляр базы данных", просто "экземпляр".

"SID = идентифицирует экземпляр базы данных (имя базы данных + номер экземпляра)" неверно. "Экземпляр, это экземпляр программного обеспечения СУБД" неправильно. Удаленная или установленная СУБД - это просто СУБД.

"Домен БД = Обычно такой же, как домен вашей компании" следует избегать. У меня возникла проблема с использованием домена, и проблемы исчезли, если не использовать домен.

"Глобальное имя базы данных = имя базы данных + домен базы данных" также неверно. Глобальное имя базы данных - это имя службы. Это так просто.

"SID = идентифицирует экземпляр базы данных (имя базы данных + номер экземпляра). Поэтому, если имя вашей базы данных равно somedb, а номер вашего экземпляра равен 3, тогда ваш SID равен somedb3". неправильно. Нет такой привязки личности или имени.

0
Bernaridho